Gru:一个单节点支持10W+的长连接集群解决方案

Stella981
• 阅读 576

Github

项目名称为Gru,取自《卑鄙的我》 项目地址: https://github.com/sumory/gru 示例-web chat:https://github.com/sumory/gru-example


先上图

  • 示例项目是一个IM应用,基于Node.js和socket.io(协议实现由Gru提供),截图:

Gru:一个单节点支持10W+的长连接集群解决方案

Gru:一个单节点支持10W+的长连接集群解决方案

  • Gru集群提供状态监控,该模块使用Node.js实现

Gru:一个单节点支持10W+的长连接集群解决方案

Gru:一个单节点支持10W+的长连接集群解决方案

介绍

其实集群的主要实现是基于Java的,也用了大量的中间件,node.js实现了监控和示例项目,但稍微上点规模的项目都不是一个门语言能cover的,所以有兴趣的同学还是可以看下这个项目的。详情见Github,大致介绍如下:

Gru

Gru是一个长连接服务解决方案,可用于各种类型的实时交互应用。

  • 支持单点部署和集群模式部署
  • 采用socket.io协议
  • 各模块均支持水平扩展
  • 单节点可服务10W+以上长连接,具体为在不断发消息的情况下(1000条/秒),单长连接服务节点支持的稳定连接数量在10W+(8核16G)
  • 节点间通讯支持多种方式:进程内、redis、rocketmq

安装:

Gru-example

gru-example基于Gru的示例项目,即时应用最典型的代表就是IM,这个示例是一个基于Gru的web聊天应用。

安装:

  • 需首先配置好Gru集群
    • 集群配置详见Gru文档
    • 若不需要集群,Gru项目只需要部署一个模块(spear)即可
  • 本示例是一个Node.js项目,需先安装Node.js
  • clone下本示例
    • npm install相关依赖
    • 配置文件在config目录下,特别注意spearNode配置,此配置为一个可用的spear节点
    • 运行node app.js,默认会加载config/dev.js配置文件

其它

  • 这个项目的前身是我原来的一个开源项目,后来用于公司内部某系统,就关了Github。最近抽空剥离了一些业务代码,内部实现改得更为通用后重新开放出来,支持点对点和广播消息。
  • 由于Gru是按照集群设计的,所以架构上分了好几个模块,但若是对于十万级别的长连接来说,单纯一个长连接节点(Gru的长连接服务模块叫spear,详见代码目录下的spear目录)即可支持。感兴趣的同学可拿spear自行改造。
  • gru-example提供了一个如何使用gru构建实时应用的示例,若要二次开发,集成用户系统进来,可在类似于gru-example的模块中实现。

最后,欢迎star和fork.

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
vue echarts vue
1、git地址https://github.com/ecomfe/vueecharts(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Fecomfe%2Fvueecharts)2、使用(1)安装npminstallvueecha
Easter79 Easter79
3年前
SpringSecurityOAuth2(9) feign 微服务间调用 token验证
GitHub地址(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Fweizongwu%2FSpringCloudOAuth2SpringSecurityFrame.git"项目地址")码云地址(https://gitee.com/wujishu/
Stella981 Stella981
3年前
Armbian编译以及定制
Armbian项目地址Github: https://github.com/armbian/build(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Farmbian%2Fbuild)ArmbianforTVBox项目地址Github: h
Stella981 Stella981
3年前
React技术栈实现XX点评电商App
项目地址:https://github.com/Nealyang/ReactFullstackDianpingDemo(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2FNealyang%2FReactFullstackDianpingDemo)
Easter79 Easter79
3年前
SpringSecurityOAuth2(5)自定义登录登出
GitHub地址(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Fweizongwu%2FSpringCloudOAuth2SpringSecurityFrame.git"项目地址")码云地址(https://gitee.com/wujishu/
Easter79 Easter79
3年前
SpringSecurityOAuth2(8) swagger2 集成OAuth2
GitHub地址(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Fweizongwu%2FSpringCloudOAuth2SpringSecurityFrame.git"项目地址")码云地址(https://gitee.com/wujishu/
Easter79 Easter79
3年前
SpringSecurityOAuth2(3)自定义token信息
GitHub地址(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Fweizongwu%2FSpringCloudOAuth2SpringSecurityFrame.git"项目地址")码云地址(https://gitee.com/wujishu/
Easter79 Easter79
3年前
SpringSecurityOAuth2(4)根据请求URI动态权限判断
GitHub地址(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Fweizongwu%2FSpringCloudOAuth2SpringSecurityFrame.git"项目地址")码云地址(https://gitee.com/wujishu/
Easter79 Easter79
3年前
SpringSecurityOAuth2(4)根据请求URI动态权限判断(补)
GitHub地址(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Fweizongwu%2FSpringCloudOAuth2SpringSecurityFrame.git"项目地址")码云地址(https://gitee.com/wujishu/
Stella981 Stella981
3年前
Android 输入校验库简介及使用教程
NextInputs项目地址:https://github.com/yoojia/NextInputs(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Fyoojia%2FNextInputs)Android扩展项目地址:https://github