视频直播在线聊天实践

现在是直播的风口,作为一个技术人员,笔者更关注一些实用技术,比如每个直播窗口都有的在线即时聊天功能,这个功能非常有用,尤其是对于活跃气氛十分重要,也是促进营收的一个重要促进因素;下面聊聊笔记参与的一个技术实践;小公司没有高大上的技术,所以选用的都是一些常用的技术,但是对于一般的用户量应该是够了;在web 页面中的即时通讯技术方面选用了 nodejs socket.io ,那么问题来了:nodejs1

nodejs 是一个单进程的架构,如果客户端直接连接到 socket.io server,那么单个nodejs 的进程,笔者测试 6000 并发就会出问题;那么怎么办,启动多个node进程:

nodejs2

如果启用多个nodejs 进程,那么客户端只能连接一个,此时的问题是无法高可用,客户端之间不能通讯,那么如果客户端连接不同的server呢?这也不太合理,如果是1w用户,10个sever,那么就要产生10万的连接显然是不行的;那么来看第三种方式:

nodejs3

将消息服务端分为 server与node ,server对接客户端;而每个node 同时连接server,这样当任意一条消息发送到一个node时,可以发送到每个server,而server又会发送到其它的节点;这样既可以实现客户端的通讯,有可以实现高可用,任意node或者server 挂掉,都不影响系统的使用,将配置信息参数文件化,这样就可以实现水平扩展提高扩展能力;在实际使用中10w并发毫无压力;