Jone Zhang’s Blog – 高并发服务端分布式系统设计概要

分布式系统设计图

  1. 整个系统由N台机器组合而成,其中Global Master一台,Global Slave一台到多台,两者之间保持强一致性并完全同步,
    可由Global Slave随时顶替Global Master工作,它们被Global Heartbeat(一台)来管理,保证有一个Global Master正常工作;
    Global Heartbeat由于无压力,通常认为其不能挂掉,如果它挂掉了,则必须人工干预才能恢复正常;

  2. 整个系统由多个groups合成,每一个group负责相应业务的数据的存取,它们是数据节点,是真正抗压力的地方,
    每一个group由一个Group Master和一个到多个Group Slave构成,Group Master作为该group的主节点,提供读和写,
    而Group Slave则只提供读服务且保证这些Group Slave节点中,至少有一个和Group Master保持完全同步,
    剩余的Group Slave和Group Master能够达到最终一致,它们之间以“半同步”模式工作保证最终一致性;

  3. 每一个group的健康状态由Global Master来管理,Global Master向group发送管理信息,并保证有一个Group Master正常工作,
    若Group Master宕机,在该group内通过分布式选举产生新的Group Master顶替原来宕机的机器继续工作,
    但仍然有一小段时间需要中断写服务来切换新的Group Master;

  4. 每一个group的底层是实际的存储系统,File system,它们是无状态的,即,由分布式选举产生的Group Master可以在原来的File system上继续工作;

  5. Client的上端可认为是Web请求,Client在“首次”进行数据读写时,向Global Master查询相应的group信息,并将其缓存,
    后续将直接与相应的group进行通信;为避免大量“首次”查询冲垮Global Master,在Client与Global Master之间增加DNS负载均衡,
    可由Global Slave分担部分查询工作;

  6. 当Client已经拥有足够的group信息时,它将直接与group通信进行工作,从而真正的压力和流量由各个group分担,并处理完成需要的工作。

我的分布式游戏服务器设计

分布式游戏服务器设计图


乌托邦

xl

Stay hungry, Stay foolish.