写在最前,本人也只是个大三的学生,如果你发现任何我写的不对的,请在评论中指出。
另为了方便, 之后关于微服务的学习内容我都会整理成XML方便阅读,只放一个文件下载链接
====>进程间通信微服务学习记录
中间件调研情况
- KafKa
KafKa的吞吐量几乎是业界顶尖,在常规情况下,一台机器可以达到每秒十几万的QPS,性能相当的强劲,可用性也很高,可以部署集群。但是让人不得不吐槽的是它会丢失数据,由于KafKa是收到消息后,把消息写入到磁盘缓冲区里,并没有直接落到物理磁盘,并且它的功能较单一。
但不可否认的是它的优秀的,目前业内的标准是把它用于用户行为日志的采集和传输上
- RabbitMQ
RabbitMQ的优势在于可以保证数据不丢失,也能保证高可用性,即集群部署的时候部分机器宕机可以继续运行,然后支持部分高级功能,比如说死信队列,消息重试之类的,这些是他的优点。他的缺点就是吞吐量比较低,每秒几万的级别,并且它的集群部署有点麻烦(并且它的源码语种太小众,读不了:))。
- RocketMQ
阿里出品必是精品,他几乎同时解决了Kafka和RabbitMQ的缺陷。RocketMQ的吞吐量也同样很高,单机可以达到10万QPS以上,而且可以保证高可用性,性能很高,而且支持通过配置保证数据绝对不丢失,可以部署大规模的集群,还支持各种高级的功能,比如说延迟消息、事务消息、消息回溯、死信队列、消息积压,等等。而且RocketMQ是基于Java开发的,符合国内大多数公司的技术栈,很容易就可以阅读他的源码,甚至是修改他的源码(只要你本事够大),当然,RocketMQ也有一点美中不足的地方,就是经过我的调查发现,RocketMQ的官方文档相对简单一些,但是Kafka和RabbitMQ的官方文档就非常的全面和详细,这可能是RocketMQ目前唯一的缺点。