资讯专栏INFORMATION COLUMN

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

legendmohe / 3329人阅读

摘要:详情见,大致介绍如下是一个长连接服务解决方案,可用于各种类型的实时交互应用。由于是按照集群设计的,所以架构上分了好几个模块,但若是对于十万级别的长连接来说,单纯一个长连接节点的长连接服务模块叫,详见代码目录下的目录即可支持。

Github

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

先上图

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

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

介绍

其实集群的主要实现是基于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.

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66171.html

相关文章

  • 注意力机制实现机器翻译

    摘要:比如一个机器翻译模型,输入是模型输出汤姆,追逐,杰瑞。模型目前在机器翻译,图片描述任务,语音识别都有大量应用,熟练使用对于解决实际问题会有很大的帮助。 介绍 Attention模型形象的比喻就是图像对焦。 showImg(https://segmentfault.com/img/bVbkLig?w=2426&h=788); 上图是Encoder-Decoder模型,Decoder中每个...

    elisa.yang 评论0 收藏0
  • MongoDB 客户端连接选项

    摘要:原文保持更新及修正基于的客户端配置选项,其它驱动大同小异。连接池中连接的最大使用寿命毫秒。设置该选项后,客户端将进行以下行为以副本集模式连接,并根据给定的服务器发现副本集的所有成员。该选项可以和配合使用。编解码器用于对进行编码和解码。 原文保持更新及BUG修正:http://kweny.io/mongodb-clien... 基于 MongoDB Java Driver 3.8.1 ...

    yexiaobai 评论0 收藏0

发表评论

0条评论

legendmohe

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<