由于单个服务器存在性能瓶颈,并不能很好的应对高并发场景,所以在直播app开发时通常会采用分布式架构,将系统功能拆分至不同的服务器上,以实现更好的使用效果。不过在直播app开发时,应该如何进行系统拆分呢?
一、系统可拆分模块
1、消息推送服务器
主要是指直播app开发中给用户推送直播间内聊天消息和私信消息的模块。
2、业务服务器
主要包含直播app开发中的业务部分、货币系统、礼物系统、好友关系、直播管理等模块。
3、视频服务器
主要是对直播app开发中的视频进行管理的模块,像视频的直播、点播、转码、存储等。
4、Mysql服务器
主要存储直播app开发中的静态数据,像用户信息、直播信息、账户信息等。
5、Redis服务器
主要存储直播app开发中的动态数据,像关注关系、直播间内实时交互的数据等。
6、IM即时聊天服务器
使用Node.js服务自主搭建部署的聊天服务。
7、视频流服务器
在直播app开发时,如果用户数量不多,覆盖范围较小,可以自行搭建部署视频流服务器,当然如果面向用户数量大且覆盖范围广泛的话,最好还是使用第三方的CDN服务,节省成本。
二、导致数据一致性问题的原因
在直播app开发采用分布式架构时,就不得不考虑数据一致性问题了,一般导致数据一致性问题的原因都有哪些呢?
1、服务器质量和系统能力
由于分布式架构中所使用的服务器配置并不一定相同,所以部署在不同服务器上的系统功能在处理请求方面实力也不同。
2、不可靠的网络
由于直播app开发时所覆盖的地域范围比较广,所以有些系统服务可能会部署在不同的国家和地区,更何况本身网络就存在不可靠性,数据一致性问题发生的概率自然而然的就会增加。
3、单点故障
由于直播app开发中采用了分布式架构,所以节点的数量肯定比单体架构要多,可是节点的增加也就会导致单点故障发生概率的增加,一旦出现了单点故障,就很难保证数据的一致性了。
通过上述分析可知,虽然分布式架构能提升系统应对高并发的能力,但也引发了数据一致性问题,在解决数据一致性问题时,我们需要根据实际产生问题的原因选择合适的策略。虽然我们无法保证直播app开发是十全十美的,但是我们可以通过一定的优化方案尽量降低问题发生时对用户的影响。
声明:本文由云豹科技原创,转载请注明作者名及原文链接,否则视为侵权