系统架构概念及思想1 (2)

实现的模式:
  透明代理: 即用户访问时,已经给我们响应的就是服务器,其实可能是以下这些,这种就属于对用户透明的.
     而且中间的转发控制器就成为网络的中心。如下:
      LVS的NAT模型,
      Haproxy, Nginx的反向代理
  旁路代理
    LVS的DR模型
  名称服务模式:
    DNS: 用户仅第一次访问时,需要查询,DNS通过名称给客户端反馈不同的解析IP,实现调度控制。
  规则服务模式:
    规则服务器:在数据库服务中,当数据库很大时,需要分库,分表时,就需要规则服务器在中间做为一个向导,
        告诉第一次访问数据的客户端,你需要的数据是分散在多个主机上,还是一个节点上。
  Master/Slave机制:
    Master能够处理所有请求,Slave仅做为运算器分担部分读运算任务,Master需要控制给Slave发送数据,
   所以Master也是一种控制器。

运算器的变化:  【暂时理解不深】
存储器的变化: 【暂时理解不深】

分布式系统实现的难点:
  1.缺乏全局时钟: 在单机中,CPU的每秒中能产生很多个时钟频率,但是其它部件的功能频率相对与CPU来说是极慢的,为了达到步调一致,单机内部通过中断等机制实现协同工作。
  2.面对故障时的独立性
  3.处理单点故障
  4.事务处理:
    ACID
    2PC(两段式提交)、BASE、CAP、Paxos(帕克索斯:希腊神话中的天马)

  大型网站站点的架构演进方式:
    LAMT, LNMT(Tomcat)

  应用从资源占用的角度分两类:
    CPU Bound: CPU密集型,ApplicationServer对CPU占用多。
    IO Bound: IO密集型, 数据库对IO占用多。

 网站从最开始一台主机上运行一个Nginx代理 + Tomcat应用服务器 + MySQL数据库.

  

系统架构概念及思想1

当网站访问量增大时,首先出现告警的可能是MySQL数据库,因为磁盘I/O天生是系统的瓶颈,因此数据库先被分离出来,这样数据库压力就变小了。
  引入MySQL主从面临的问题:
    1. 数据复制的问题
    2. 应用选择数据源的问题

  

系统架构概念及思想1

  接着网站访问量继续增大,Tomcat这类应用服务器,Nginx代理等都属于CPU密集型,它们在单机上出现了CPU资源争用的问题,这仅是小问题,更重要的是应用服务器出现了数据访问的热区,基本上会遵循二八定律,这时就必须分离,并且增加应用服务器,你的系统就变成了两台应用服务器,这时前端必须有一个反向代理,所以加上MySQL就是四台主机.但应用服务器分开后,就需要用户访问的会话保存问题,有以下三种解决方案:
  Session sticky:会话粘性,存在单点故障,一定其中一台Server宕机,会话将丢失。
  ip based:
  cookie based:它带来的额外问题是,带宽占用将非常巨大,若一个cookie仅50字节,但是若一天一亿个请求,就有一亿个50字节,有多大?
  Session replication: 会话复制,不适合大规模使用,因为一方面会消耗Server的内存,另一方会带来大量的内网同步Session的流量,影响整体网络环境。
  Session server:通过Memcached来集中存储用户会话,扩展性好,适合大规模扩展。
若考虑到网站在一年内可能出现几何增长的可能,如:从200并发到过万的并发,这时使用前两种会话保存就不合适了,就必须使用第三种方案。

  

系统架构概念及思想1

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgzzwf.html