上图是一个视频直播网站的直播间页面的架构,直播间页面的功能点很多,本文只列举其中的音视频、观众列表、弹幕、礼物几个功能点来说,观众发弹幕时需要根据关键字屏蔽,送礼物时要检查帐户的余额。
大型互联网架构都是设计成微服务的架构,每个微服务独立进程,独立部署,腾讯里流行着一句话:“大系统小做”,以庖丁解牛的办法,把大系统分解成各小系统,小系统之间以接口方式调用,这句话也深深体现了“微服务”设计的精髓。
把“牛”切成七块:
1. web应用进程
2. 音视频服务进程
3. 观众列表进程
4. 弹幕进程
5. 视频进程
6. 关键字进程
7. 帐户进程
进程之间接口调用,自订私有协议,调用方把编码请求参数,接送方解码参数,编码计算结果返回,当然也可以用protobuf、thrift等开源协议。
下面来谈谈微服务架构的优缺点。
优点:
进程独立开发,每个进程的开发与升级不影响到其他进程。
进程独立部署,可针对每个进程的负载情况进行扩容与缩减。
开发语言独立,进程可由任何一种语言实现。
缺点:
开发成本,增加开发联调成本。
系统性能,进程在同一机房的话,进程间调用增加几毫秒的时长,可以忽略不计,如果不在同一机房会受网络波动影响,时长和可靠性得不到保证。
“微服务”设计是一种海量服务下的分布式架构,进程间的独立保证了在可以平行扩容应对不断增加的请求量,如果对于一些小系统,考虑到开发成本,可以不需要以“微服务”方式。