大型系统架构核心的理解

大型系统架构核心:一点、一平行、一纵切
 
〇、点:
提升快资源访问比例,将读较多的放在性能较快设备中,如使用Redis、Memcache提升性能。这个在单机也有应用比如索引
 
一、平行提升并行性
1、在单机中,一般通过多线程实现。但并行性带来的问题是共享资源访问,避免共享资源访问的原则就是通过锁,数据库的核心即ACID中的CI就是通过锁来实现,Java同步关键字也是为了解决这个问题。
2、在多机中,解决并行的方法就集群部署,又分为两种:
    1、Master-Work模式:平行的负载均衡调度策略,如Ngix、F5均为解决该问题,而Ngix和F5实现负载的核心可能即为Hash算法。淘宝的TbSchedual也可以归类到其中。
    2、Master-Slave模式:通过主从模式来提升服务性能,如Redis使用主从模式
    上述策略会带来两个问题:
    1、Master节点:总有一个点Master点是瓶颈,例如F5节点、Reids写节点,zookeeper为解决单点故障问题而生,核心即为如果一个节点挂掉,可以由其他节点顶上。
    2、Worker或Slave节点:共享资源之间数据同步,这个时候就需要把共享资源单独分离出去,也就是会用到纵向分割。
 
二、纵向降低系统耦合度
    服务分离,用另外一种方式来说就是脱耦或者SOA,当然SOA还有其他很多特性比如面向业务等等,本文不详细概述。服务分离后针对各个Web应用特性衍生出Worker或Slave节点,如:
        1、CAS:将客户身份认证以服务方式体现
        2、比如淘宝的收藏夹服务
        3、更为广泛的来说:文件存储、数据库服务也可以理解为服务一种
    而纵向分离后,带来的好处有:
    1、共享资源的独立,为其余服务提供统一数据
    2、通过异步再次提升并行性。

猜你喜欢

转载自ituski.iteye.com/blog/2227371