一、网站架构的模式
1、分层
分层是将软件进行横向切分。网站软件系统分为应用层,服务层,数据层
分层架构对网站支持高并发向分布式方向发展至关重要。因此在网站规模还很小的时候就应该采用分层的架构,这样
将来网站做大时才能更好地应对。
2、分割
分割是将软件进行纵向切分。将不同的功能和服务分割开来,包装成高内聚低耦合的模块单元。
3、分布式
在网站应用中,常用的分布式方案有以下几种:
1)分布式应用和服务
2)分布式静态资源:动静分离
3)分布式数据和存储:关系数据库和Nosql
4)分布式计算:Hadoop,MapReduce分布式计算框架
4、集群
5、缓存
6、异步
异步架构是典型的的生产者消费者模式,两者不存在直接调用。只要保持数据结构不变,彼此功能实现可以随意变化而不受影响。
使用异步消息队列有如下特性:
1)提高系统可用性
2)加快网站响应速度
3)消除并发访问高峰
7、冗余
8、自动化
目前自动化架构主要集中在发布运维方面,如发布过程自动化,自动化代码管理,自动化部署,自动化监控等。
9、安全
二、核心架构要素
架构:最高层的规划,难以改变的决定。
(一)、性能
1、性能优化的几个方面:
1)浏览器端:浏览器缓存,页面压缩,合理布局页面,减少cookie传输
2)应用服务器端:服务器本地缓存和分布式缓存,也可以将用户的请求发送的到消息队列的等待后续任务处理,
而当前请求直接返回响应给用户
3)代码层面:使用多线程,改善内存管理等手段
4)数据库服务端:索引、缓存,sql优化,nosql使用
2、衡量网站性能的指标:响应时间、TPS、系统性能计数器
(二)、可用性
1、高可用的设计目标就是当服务器宕机时候,服务或者用于依然可用。
2、网站高可用的主要手段就是冗余
1)应用服务器:负载均衡
2)存储服务器:对数据进行实时备份
3、衡量一个系统架构设计是否高可用的目标,就是假设系统中任何一台或者多台服务器宕机时,
以及出现各种不可预期的问题时,系统整体是否依然可用。
(三)、伸缩性
1、伸缩性是指通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。
(四)、扩展性
网站可伸缩架构的主要手段时事件驱动架构和分布式服务。
(五)、安全性