minbox 开源组织下的新成员 message-pipe 初版发布
Message Pipe
基于Redis
实现的分布式消息顺序消费管道。
GitHub地址:https://github.com/minbox-projects/message-pipe
Gitee地址:https://gitee.com/minbox-projects/message-pipe
I. 什么是Message Pipe?
Message Pipe
是基于Redis
实现的顺序消息管道,由于内部引入了Redisson
分布式锁所以它是线程安全的,多线程情况下也会按照写入管道的顺序执行消费。
Message Pipe
采用Client
、Server
概念进行设计,内部通过grpc-netty
来建立消息通道相互通信的长连接,消息的分发由Server
负责,而每一个管道内的消息在分发时会通过LoadBalance(负载均衡)
的方式来获取在线的Client
信息并向Client
顺序发送消息。
II. 更新日志
✨ New Features
- [ #1 ] Server分发消息到Client
- [ #2 ] Server分发消息时支持LoadBalance随机权重策略
- [ #15 ] 支持Client定时向Server发送心跳
- [ #18 ] 每个管道实现独立分发消息
- [ #24 ] 设置 “分发消息时从通道获取消息的Lock时间"
- [ #26 ] 使用 "minbox-sequence" 来生成RequestID
- [ #31 ] Server重启后Client实现自动重连
🐛 Fix Bugs
- [ #20 ] 解决InetAddress偶尔获取的HostAddress不一致的问题
- [ #29 ] 消息分发时检查Redisson Client连接是否已经关闭
- [ #33 ] Server启动后,如果没有注册的Client会一直抛出异常信息
- [ #35 ] Server发送消息到Client时,如果发生Client状态不可用“UNAVAILABLE”则自动剔除本地缓存Client的Channel
- [#37 ] Server分发消息时选择指定管道上绑定的Client列表,排除OFF_LINE状态的Client
III. 特性
- 自动注册
- 心跳检查
- 消息分发
- 顺序消费
- 读写分离
- 线程安全
- 负载均衡
- 自动剔除
IIII. 快速上手
为了快速上手,提供了message-pipe
使用的示例项目,项目源码:https://github.com/minbox-projects/message-pipe-example。
4.1 安装Redis
由于message-pipe
基于Redis
实现,所以我们首先需要在本机安装Redis
,下面是使用Docker
方式安装步骤:
# 拉取Redis镜像 docker pull redis # 创建一个名为"redis"的后台运行容器,端口号映射宿主机6379 docker run --name redis -d -p 6379:6379 redis
4.2 查看Redis数据
# 运行容器内命令 docker exec -it redis /bin/sh # 运行Redis客户端 redis-cli # 选择索引为1的数据库 select 1 # 查看全部的数据 keys *
4.3 启动示例项目
# 下载源码 git clone https://github.com/minbox-projects/message-pipe-example.git # 进入项目目录 cd message-pipe-example # 运行项目 mvn spring-boot:run
V. License
message-pipe
采用Apache2开源许可进行编写。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
学会MySQL主从复制读写分离,看这篇就够了
思维导图 文章已收录Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary 前言 在很多项目,特别是互联网项目,在使用MySQL时都会采用主从复制、读写分离的架构。 为什么要采用主从复制读写分离的架构?如何实现?有什么缺点?让我们带着这些问题开始这段学习之旅吧! 为什么使用主从复制、读写分离 主从复制、读写分离一般是一起使用的。目的很简单,就是为了提高数据库的并发性能。你想,假设是单机,读写都在一台MySQL上面完成,性能肯定不高。如果有三台MySQL,一台mater只负责写操作,两台salve只负责读操作,性能不就能大大提高了吗? 所以主从复制、读写分离就是为了数据库能支持更大的并发。 随着业务量的扩展、如果是单机部署的MySQL,会导致I/O频率过高。采用主从复制、读写分离可以提高数据库的可用性。 主从复制的原理 ①当Master节点进行insert、update、delete操作时,会按顺序写入到binlog中。 ②salve从库连接master主库,Master有多少个slave就会创建多少个binlog dum...
- 下一篇
ApiBoot v2.3.1 版本发布,新特性、Fix Bugs 两不误
ApiBoot是什么? ApiBoot是接口服务的落地解决方案,基于SpringBoot编写,可以认为是提供了一系列开箱即用的Starter,通过封装来简化主流第三方框架的集成,从而提高开发者开发效率、学习成本、降低入门门槛,真正的实现开箱即用。 官方文档 & 源码 官方文档:https://apiboot.minbox.org GitHub:https://github.com/minbox-projects/api-boot 码云:https://gitee.com/minbox-projects/api-boot 脚手架:https://gitee.com/minbox-projects/api-boot-admin(基于 “ApiBoot” 的前后分离管理平台基础解决方案脚手架示例) 使用源码:https://gitee.com/minbox-projects/api-boot-chapter v2.3.1更新内容: ✨New Features [#56] "ApiBoot Logging"、"ApiBoot Logging Admin" 不再需要手动添加@Enable...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS6,CentOS7官方镜像安装Oracle11G
- Red5直播服务器,属于Java语言的直播服务器
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS关闭SELinux安全模块