大型网站核心架构要素

非业务功能,还要关注性能,可用性,伸缩性,可扩展性,安全性五个要素。

性能

浏览器端可以浏览器缓存,压缩页面(gzip),合理布局页面,减少cookie传输等手段。
CDN, 将静态内容分发到网络机房,网站机房部署反向代理缓存热点文件等
应用服务器端,本地缓存,分布式缓存,处理热点数据,更好的性能和减少数据库压力
异步操作,放到消息队列
集群
代码内部多线程
数据库端,索引,缓存,sql优化,nosql数据优化数据模型,存储结构,伸缩性等手段。
指标有 相应时间,TPS, 并发数等

可用性

宕机和服务不可用影响可用性
办法是冗余,应用集群,数据库做备份和复制。 使用软件开发过程保证质量,减少问题引入线上的可能

伸缩性

动态增加集群节点,并且对服务无影响,是否有上限。
应用服务如果是无状态的基本无影响
缓存服务器会影响路由,需要改进路由算法
数据库比较难实现,通常使用数据库之外的手段,使用应用层的路由分区等收单将部署多个数据库的服务器组成一个集群。
nosql数据产品可以比较好的线性伸缩

扩展性

更偏功能性需求。更快的实现新功能,新功能对现有系统透明。可伸缩框的主要手段是:  事件驱动架构和分布式服务。
事件驱动通常用消息队列实现,  可以透明的增加消息的生产者或者消费者
将业务和复用服务分离, 通过分布式服务框架调用。新增产品可以调用可复用的服务上线逻辑对现有无影响。可用服务升级时,可以通过多版本的方式透明升级。
开放平台

安全性

上一篇:http://devdocs.io/【文档收藏】


下一篇:GlusterFS vs. Ceph:两大主流开源存储对比