架构方法论

最近拜读了《大型网站技术架构核心原理与案例分析》,从整体上进一步了解了软件架构中的方法论,关注的核心要素,以及在每个架构模式中涉及到的技术。重新梳理后记录下来,然后时刻通过深入研究里面的每个方案和技术来提高自己能力。

架构的模式:

   分层(应用层,服务层,数据层)、分割(将业务,服务分成细粒度独立的模块)、

   分布式:分布式应用和服务,分布式静态资源,分布式数据和存储,分布式计算

   集群(应用,服务,数据的集群提供高可用)、

   异步(分布式队列)、缓存(CDN,反向代理,本地缓存,分布式缓存)、冗余、自动化、安全

一般网站架构有以下几个核心要素:

一、高性能

       1.性能指标:

          响应时间:指发出请求开始到接收全部数据所用的时间

          并发数:同时处理请求的数目),

          吞吐量 :单位时间系统能处理的请求数,TPS 每秒事务数,HPS 每秒http请求数,QPS每秒查询数

       2.web前端性能优化

           浏览器访问优化:减少http请求,合并css文件和javascript文件,静态资源用其他域,让浏览器可以发起多个并发请求

                                     启用压缩(gzip)和浏览器缓存,将css放在页面最上面javascript放在页面最下面 ,减少cookie传输

           CDN(content distribute network)加速、反向代理(Nginx,Apache)    

        3.应用服务器性能优化 (优化手段主要有 缓存、集群、异步) 

            分布式缓存 (membercache,redis)

            异步:消息队列  集群:使用负载均衡

           代码优化:多线程(将对象设计为无状态、使用局部对象、使用锁) 资源复用

           存储优化:机械硬盘、固态硬盘     B+树LSM树   RAID和HDFS                           

二、高可用性

       高可用的网站架构,分层(应用层,服务层,数据层)、分割(每一层再分模块)

       高可用的应用:通过负载均衡进行无状态服务的失效转移,

                               应用的集群session管理(session复制,session绑定,用cookie记录session,session服务器统一管理session)

       高可用的服务:可复用的服务模块为业务产品提供基础公共服务,可以分布式部署和无状态的服务可以通过负载均衡的失                                效转移策略实现高可用的服务,还有其他的服务策略:分级管理(根据应用和服务的权重分配硬件、网                                  络、运维响应资源)、超时设置、异步调用      

       高可用的数据服务:CAP原理(数据一致性,数据可用性,数据一致性)

                                     数据备份,失效转移,主从分离

三、伸缩性

        通过改变部署的服务数量就可以扩大或者缩小网站的服务处理能力

        不同功能通过物理分离实现伸缩,单一功能通过集群实现伸缩

        应用服务器集群的伸缩性设计:

                应用服务器是无状态的,通过增减集群中的机器就可以实现伸缩性,再通过负载均衡策略将请求路由到对应的服务                 器上处理:  http重定向负载均衡,DNS域名解析负载均衡,反向代理负载均衡,ip负载均衡,数据链路层负载均                   衡。 负载均衡算法:轮询,加权轮询,随机,最少连接,源地址散列

        分布式缓存集群伸缩性设计:

                 因为存放数据的原因,不能用简单的负载均衡手段来实现分布式缓存集群。

                 memcached 访问模型,通过路由算法决定访问集群中的哪台机器,分布式缓存一致性hash算法

         数据存储的伸缩性设计: Cobar                      

四、扩展性

       系统功能可持续扩展或提升的能力。

五、安全性

       XSS攻击即跨站点脚本攻击(cross site script)

      注入攻击

      CSRF攻击(cross site request forgery 跨站点请求伪造)

       信息加密和密钥管理:

               1.单向散列加密

               2.对称加密

               3.非对称加密

               4.密钥安全管理

你可能感兴趣的:(架构模式,架构方法论)