首页 > 其他分享 >常见开源消息系统

常见开源消息系统

时间:2023-07-26 11:31:35浏览次数:42  
标签:github http 队列 常见 开源 消息 https com


消息系统的作用:异步处理、削减峰值、减少组件之间的耦合。

选择消息系统根据业务需要需要考虑以下几个方面:

  1. 是否持久化
  2. 吞吐能力
  3. 高可用
  4. 分布式扩展能力
  5. 兼容现有协议
  6. 易于维护
  7. 其他,如消息丢失和重复的处理
  8. 避免单点故障
  9. 负载均衡

常见消息系统协议:

  1. STOMP
  2. AMQP
  3. 类似 MEMCACHE 的协议
  4. HTTP
  5. 自定格式

1、2 是不错的可选开源组件:

1. Kafka/MetaQ: 广泛用于 Linkedin 内部 (类似有 Java 版本的国产 MetaQ)

由于优先考虑吞吐,更加适合大数据量的消息收集和处理,比如日志分析、用户行为信息实时报表、集群状态信息收集和分析。

  1. 优先考虑持久化的设计,依靠 page cache 管理内存
  2. 高吞吐 112MB/s 11K msgs/s (比 beanstalkd >70x 吞吐能力)
  3. 支持异步复制
  4. 高可用、基于 Zookeeper 的集群设计、支持消费者失效后重新负载均衡
  5. Kafka 提供 PHP 类库
  6. 支持 ganglia JMX 监控
  7. 需要策略避免重复消息, 消费者更新 Zookeeper 的 offset 的方式 (MetaQ 已经提供了几种方式避免消息重复)
  8. MetaQ 提供 HTTP 接口

http://www.mail-archive.com/[email protected]/msg02082.htmlhttps://github.com/neophenix/StateOfTheMQ/blob/master/state_of_the_mq.pdf?raw=truehttp://s.urge.omniti.net/i/content/slides/Surge2012-ErikOnen_Kafka_Messaging-Paradigms.pdfhttp://research.microsoft.com/en-us/um/people/srikanth/netdb11/netdb11papers/netdb11-final12.pdfhttp://dirlt.com/kafka.htmlhttp://dirlt.com/index.htmlhttp://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes

2. NSQ – Golang

无中心设计、节点自动注册和发现。可以考虑作为内部通讯框架的基础。

https://github.com/bitly/nsq* 追求简单部署
* 追求高可用、避免单点故障、无中心设计
* 确保消息送达
* 生产者消费者自动发现、消费者连接所有生产者、向消费者推的模式
* 提供 HTTP 接口

https://speakerdeck.com/snakes/nsq-nyc-golang-meetuphttps://github.com/davegardnerisme/nsqphp

http://www.davegardner.me.uk/blog/tag/nsq/

3. Beanstalkd

  1. 支持持久化 binlog 设计,重启消息不丢失
  2. 一般
  3. 无高可用设计
  4. 和 memcached 一样的分布式扩展方式
  5. 各种类库
  6. 有 Web 管理工具
  7. 支持同步调用,等待返回
  8. 只有类似 Memcache TCP ASCII 协议, 单文件部署
  9. 支持消息优先级
  10. 9K jobs/s 入队列 5K jobs/s 出队列
  11. 单点故障
  12. 无主从同步复制机制
  13. 最好单机多实例部署

https://github.com/kr/beanstalkd/wiki/Toolshttps://github.com/pda/pheanstalk

4. Redis

需要自己封装 Pub/Sub

  • 基于 Redis 的复制高可用

其他常见开源消息系统:

ZeroMQ: 轻量级基础消息库

只适合不需要持久化的场景、需要自己封装

  1. 不支持持久化,只提供消息分发, 性能最好
  2. 无 Broker 设计, 无中心故障

RabbitMQ

  • 2500 job/s 入队列 1300 job/s 出队列
  • 适合小消息
  • 分布式无单点设计
  • 底层为 Erlang 实现
    有评论: RabbitMQ could not enqueue/dequeue fast enough.

https://blogs.vmware.com/vfabric/2013/04/how-fast-is-a-rabbit-basic-rabbitmq-performance-benchmarks.html

RESTMQ

http://restmq.com/

MemcacheQ

http://memcachedb.org/memcacheq/

HTTPSQS

https://code.google.com/p/httpsqs/

Gearman

http://gearman.org/presentationshttps://code.google.com/p/shard-query/

Kestrel

http://robey.github.io/kestrel/http://robey.github.io/kestrel/docs/guide.html

HornetQ

性能差不考虑[3]

Resque

3800 jobs/s 入队列 300 jobs/s 出队列
https://github.com/blog/542-introducing-resque基于 Redis 的消息队列

Starling

https://github.com/starling/starling

SquirrelMQ

https://code.google.com/p/squirrel-message-queue/

Sparrow – Ruby

https://code.google.com/p/sparrow/

Apache ActiveMQ

ActiveMQ crashed constantly under load.

STOMP HTTP 协议

http://stomp.github.io/stomp-specification-1.2.html

参考:

http://hiramchirino.com/stomp-benchmark/ec2-c1.xlarge/index.htmlhttps://blog.serverdensity.com/queueing-mongodb-using-mongodb/[3] http://x-aeon.com/wp/2013/04/10/a-quick-message-queue-benchmark-activemq-rabbitmq-hornetq-qpid-apollo/https://news.ycombinator.com/item?id=5531192http://www.javaplex.com/blog/high-performance-message-queues-get-reviewed/http://adam.heroku.com/past/2010/4/24/beanstalkasimpleandfastqueueingbackend/

标签:github,http,队列,常见,开源,消息,https,com
From: https://blog.51cto.com/u_2650279/6854833

相关文章

  • 可执行文件常见目录
    /usr/local/bin:用于存放用户自行安装的软件或第三方软件的可执行文件。/usr/bin:系统自带的命令和工具的可执行文件通常位于此目录下。/usr/sbin:包含系统管理员使用的命令和工具的可执行文件。/bin:包含一些基本的系统命令和工具的可执行文件。/sbin:包含一些系统管理员使用的命......
  • 2023年发布的25个开源大型语言模型总结
    大型语言模型(llm)是一种人工智能(AI),在大量文本和代码数据集上进行训练。它们可以用于各种任务,包括生成文本、翻译语言和编写不同类型的创意内容。今年开始,人们对开源LLM越来越感兴趣。这些模型是在开源许可下发布的,这意味着任何人都可以使用、修改和分发它们。这使得研究人员、......
  • 企业通讯软件都有哪些?4款常见的企业通讯软件推荐
    在现代企业中,高效的内部沟通和协作是成功的关键。为了满足这一需求,越来越多的企业开始使用专门的企业通讯软件。这些软件提供了一系列功能,包括即时通讯、视频会议、文件共享等,帮助团队成员更好地协作和沟通。那么企业通讯软件都有哪些?下面推荐几款比较常见的企业通讯软件。  ......
  • 《安富莱嵌入式周报》第318期:无线电扫描仪,高精度功耗分析仪,单片机JavaScript引擎,平头
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 【实战技能视频】基于硬件垂直消隐的多缓冲技术在LVGL,emWin,GUIX和TouchGFX应用https://www.armbbs.cn/forum.php?mod=viewthread&tid=120114视频版:https://www.bilibili.......
  • 我开源了团队内部基于SpringBoot Web快速开发的API脚手架v1.6.0更新
    什么是rest-api-spring-boot-starterrest-api-spring-boot-starter适用于SpringBootWebAPI快速构建让开发人员快速构建统一规范的业务RestFullAPI不在去关心一些繁琐。重复工作,而是把重点聚焦到业务。动机每次WebAPI常用功能都需要重新写一遍。或者复制之前的项目代码......
  • Google开源库Textfsm使用文档(中文翻译)
    TextFSM介绍TextFSM是一个Python模块,实现了一个基于状态机的模板,用来解析半格式化的文本。最初开发的目的是允许程序化地获取来源于CLI驱动设备的输出信息,例如网络路由器或交换机,不过它可以被用作任何这种类型的文本输出。这个引擎需要两个输入:一个模板文件和文本输入(比......
  • 【d2l】【常见函数】【6】 detach()、detach_()
    都是pytorch里的方法,作用是让当前张量停止进入计算图具体的区别参考:https://cloud.tencent.com/developer/article/1659274......
  • Java面试常见问题总结
    Java面试常见问题总结Java基础Java中的几种基本数据类型是什么?对应的包装类型是什么?各自占用多少字节呢?String、StringBuffer和StringBuilder的区别是什么?String为什么是不可变的?Strings1=newString("abc");这段代码创建了几个字符串对象?==与equals?hashCo......
  • mysql cpu使用率高的常见原因 mysql cpu占用率过高
    文章来自:https://blog.51cto.com/u_12192/6319295简单的分为下面几个步骤来解决这个问题:1、mysql运行正常,也有可能是同步设置问题导致2、如果mysql运行正常,那就是php的一些sql语句导致问题发现,用root用户进入mysql管理mysql-uroot-p输入密码mysql:showprocesslist;语句,查......
  • 基于开源IM即时通讯框架MobileIMSDK:RainbowChat v9.0版已发布
    关于MobileIMSDKMobileIMSDK是一套专门为移动端开发的开源IM即时通讯框架,超轻量级、高度提炼,一套API优雅支持UDP 、TCP 、WebSocket 三种协议,支持iOS、Android、H5、标准Java平台,服务端基于Netty编写。工程开源地址是:1)Gitee码云地址:https://gitee.com/jackjiang/Mobi......