基于go的websocket消息推送的集群实现

Python015

基于go的websocket消息推送的集群实现,第1张

目前websocket技术已经很成熟,选型Go语言,当然是为了节省成本以及它强大的高并发性能。我使用的是第三方开源的websocket库即gorilla/websocket。

由于我们线上推送的量不小,推送后端需要部署多节点保持高可用,所以需要自己做集群,具体架构方案如图:

Auth Service:鉴权服务,根据Token验证用户权限。

Collect Service:消息采集服务,负责收集业务系统消息,存入MongoDB后,发送给消息分发服务。

Dispatch Service:消息分发服务,根据路由规则分发至对应消息推送服务节点上。

Push Service:消息推送服务,通过websocket将消息推送给用户。

集群推送的关键点在于,web端与服务端建立长连接之后,具体跟哪个推送节点保持长连接的,如果我们能够找到对应的连接节点,那么我们就可以将消息推送出去。下面讲解一下集群的大致流程:

1>. web端用户登录之后,带上token与后端推送服务(Push Service)保持长连接。

2>. 推送服务收到连接请求之后,携带token去鉴权服务(Auth Service)验证此token权限,并返回用户ID。

3>. 把返回的用户ID与长连接存入本地缓存,保持用户ID与长连接绑定关系。

4>. 再将用户ID与本推送节点IP存入redis,建立用户(即长连接)与节点绑定关系,并设置失效时间。

5>. 采集服务(Collect Service)收集业务消息,首先存入mongodb,然后将消息透传给分发服务(Dispatch Service)。

6>. 分发服务收到消息之后,根据消息体中的用户ID,从redis中获取对应的推送服务节点IP,然后转发给对应的推送节点。

7>. 推送服务节点收到消息之后,根据用户ID,从本地缓存中取出对应的长连接,将消息推送给客户端。

其他注意事项:

一般安卓手机的应用软件目前都是以Java为主的程序语言开发的,包括微信。

不过,Android的开发者Google准备转用go语言开发Android平台,自然,一旦成真,那么Android的各种应用程序也会随着转到go语言的开发上来。

问题一:微信如何推送图文 开打微信朋友圈,看右上角有一个照相机的图标 按一下就可以发送照片带文字。 要是想单独发送文字不要图片就按住图标不要松手。1秒以后自动进入输入文字的界面了, 希望对你有所帮助。望采纳,!!!!

问题二:微信公众平台消息怎么推送到聊天的 服务号就是推送到会话的那种,订阅号推送的是在订阅号里面

问题三:微信公众平台关注推送消息怎么设置 每天你先编辑好,然后再群发推送,如果你想人家关注你, 就能回复,有一个“自动回复”---“被添加自动回复”

问题四:如何开启微信推送功能? 你好,进微信设置,然后有个消息设置,点推送。手机本身设置里面有个推送服务,把微信的推送点开

希望上述回答对你有所帮助,满意请采纳

问题五:如何开启微信推送 打开微信设置,

然后有个消息设置,点推送。

手机本身设置里面有个推送服务,把威信的推送点开。

问题六:微信公众平台推送的消息怎么更改 已经成功推送的图文消息标题没有办法修改,正文内容可以直接修改点击保存,但是已经打开过文章阅读的人没有办法看到修改的内容,只有在修改成功之后才打开文章阅读的人才能看到修改好的文章。

问题七:微信订阅号如何推送? 不是推送的,只是发送多图文信息而已很简单,请看截图:

一:登陆微信平台点击:

二:进入素材管理界面:

三:进入多图文选择:

四:一般订阅号可以最多添加8个图文信息,编辑完否如果你绑定了自己的微信号,就可以发到你自己的微信上预览下!

剩下的你自己研究喽,很简单!

希望能采纳!

问题八:怎么让微信推送至显示信息不显示内容 1、打开微信,2、点击右下角“我”,3、点击“设置”,4、点击“通知显示消息详情”的右边长方形框,由绿色变为白色即可。

问题九:怎么设置微信后台消息推送 在手机的设置里面。声音哪里。不知道你是什么手机

问题十:微信公众平台推送多图消息怎么编辑 微信公众平台如何发送图文消息 图文解说_百度经验

jingyan.baidu/...5