微服务架构设计----弹幕服务器

  说道微服务架构,由不得想起2015/10/25日,有幸加入了一个直播平台的团队,团队开发任务就是一个月内开发完成直播平台的大部分功能。

  用户系统,礼物系统,弹幕系统,推流系统。

  几乎所有的系统我都涉足了,而且独立搞定弹幕系统这块。

  弹幕服务器的开发任务,是承载数百万人同时在线,所以采用分布式架构,下面就是弹幕服务器的架构图。

  

  所有弹幕服务器在启动时,会自动注册到两台中央服务器上,即上面展示的中转服务器和状态服务器。

  中转服务器的职责就是负责把每台弹幕服务器的消息中转给其他的弹幕服务器,使得所有弹幕在整个分布式系统中是共享的,所有弹幕在整个分布式系统中是一致的,从而保证了整个系统上的数据一致性。

  状态服务器的职责就是收集每台弹幕服务器自身的房间数和在线数,这样系统就能了解整个系统中哪几台弹幕服务器的负载比较高,那几台弹幕服务器的负载比较低,之后把用户导到负载比较低的弹幕服务器上面,从而达到负载均衡的目的。

  说了这么多,下面正式说到微服务上面,

  整个系统纯粹是一个消息服务组件,不关心任何逻辑,它只关心本系统内部的状态,唯一的使命就是把房间的消息准确的推送到该房间的所有人,把全站消息推送到所有房间的人,当然消息中有个字段是加密字段用来判断该消息是否时合法的消息。

  为何会这么设计呢?

  这就是微服务的一个重要特点,和其他系统独立,方便系统的迭代更新,相互的影响几乎不存在。

  这里面包含了服务发现,负载均衡的特性。

  1.服务发现

    弹幕服务器只要注册进来,状态服务器就会发现该弹幕服务器,从而把流量导入到该服务器上。

  2.负载均衡

    状态服务器维护整个系统的状态,使得所有的弹幕服务器的负载是均衡的。

  分享一个在线流程图设计平台https://www.processon.com/diagrams 

posted @ 2017-02-20 22:41  walkabc  阅读(2204)  评论(0编辑  收藏  举报