网站架构&安全&程序开发一
一.服务器架构原则
?
架设适合自己网站特点的架构做好扩展接口简化不必要的使用自己最熟悉的架构尽量利用已有资源,切记一切重头开始.在架构上使用新产品的时候,先要问下自己,是否有足够的能力驾驭.为保险起见,最好先部分产品使用,然后逐步过度。二.用户规模影响设计
?
10万用户级别???????? 单服务器,前端、后端、cache、db在一起。
百万级?????????? db和cache单独部署服务器,db或按业务进行拆分(sharding)
?????????? cache或使用一致性hash扩展。
?????????? 前端后端还是在一起,但是根据业务拆分,每个业务可分配不同数量的服务器
?????????? 开始重视架构设计,有专门技术架构师
?????????? 需跨机房部署,前端在远程增加反向代理加速,数据库在异地机房使用slave数据库副本
?????????? 后端拆分出来,系统内部需要远程调用,内部需远程调用协议。
??????????? 架构更细分,或增加数据架构师,cache架构师,分布式架构师
??????????? 数据库sharding碰到烦恼,开始考虑分布式数据服务
??????????? 数据访问需要根据业务特点细分。
??????????? 开发、运维、测量、调优具备有自己的专有工具。
??????????? 所有服务需要地理多机房分布,具备IDC容灾设计。
??????????? 服务可降级
?
?
三.PV进行架构
?
??? 10W以下
?

?
?
?????? 100W
??????????? 缓存服务器
??????????? 集群服务器
??????????? 主从数据库
?
?
四.拥抱开源世界
Nginx?????????????? 1>高并发连接:官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数.
?????????????? 2>内存消耗少:在3万并发下,10个Nginx进程消耗150M内存.
?????????????? 3>软件负载均衡器----比起几十万的硬件负载均衡交换机(F5 BIG-IP,NetScaler),更加低廉,适合中小型公司使用————(在配置中使用upstream)
?????????????? 4>反向代理
?????????????? 5>URL缓存(一般都使用squid或者varnish在前端使用,nginx自身也有此插件)
HTTPSQS (张宴)????????????? 该产品,我看了下源码,里面使用tokyo cabinet作为key-value库,然后使用libevent作为网络接口层,进行?? 相关存储。
MYSQL????????????? 可以作为存储大数据量的数据库.现在自身也往no-sql领域发展.
Mongodb?????????????? 现在比较流行的NoSql数据库(在高并发,大流量的web2.0条件下,传统数据库显得捉襟见肘.如及时反馈数据给用户时.在大存储的时候,可以添加服务器节点来实现横向扩展) ——适用于简单的SQL,对于复杂的SQL还是使用关系型数据库.
TTSERVER???????????? 就是tokyo cabinet和tokyo tyrant(网络接口层)
MEMCACHED????????????? 存储key-value的数据在内存中,但是在持久化方面并不是很理想,还有数据被踢的现象.
PHPCentosApacheSubversionVarnish(代替squid)?
?
五.PHP程序员必学
?
DIV+CSS+Javascript;PHP ;Linux C;LINUX常规命令—建议要学会VIM,因为服务器&&系统上的很多配置都需要使用vim去进行修改(你可以用其他工具);掌握网络知识TCP/UDP;熟悉各种服务器配置,并了解每种服务器的特性;各种服务器软件的应用.如memcached,TTServer,消息队列(如张宴的HttpSQS)等等;了解什么是CDN服务器,CDN轮询;LINUX开源软件的二次开发;服务器监控系统开发;英文 ——很多开源软件的文档都是英文写的,很多源码都有安装步骤(英文版),就没必要每次都到google或者baidu去搜索相关步骤,有时没有人会贴出来;一个优秀的技术人员至少精通两门编程语言;?
六.明理
?
1>只有跟高手交流,自己才能知道自身的不足—然后在线下(网络,书籍)有针对性的进行弥补。很多情况下,对方会告诉你在开发中遇到的问题,并且告知当下的这个技术应用环境,以及自身的优势.
2>尝试着去了解新技术,并不是看看而已,而是在自己的机器进行开发,并且想想在什么情况下使用这种技术。
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?