RedisKafka或RabbitMQ哪个作为微服务消息代理最合适?
将异步通信用于微服务的场合,通常使用消息代理(Message Broker)。消息代理确保不同微服务之间的通信可靠稳定,保证消息在系统内得到管理和监视,并且消息不会被丢失。
开发者可以选择的一些消息代理有很多,它们的规模和数据功能各不相同。本篇文章将比较三种最受欢迎的消息代理:RabbitMQ,Kafka与Redis。
首先让我们了解微服务通信。
微服务通信:同步与异步
在微服务之间有常见的两种通信方式:同步与异步。
在同步通信中,调用方在发送下一条消息之前等待响应,并且它作为HTTP之上的REST协议运行。相反,在异步通信中,无需等待响应即可发送消息。这适用于分布式系统,通常需要消息代理来管理消息。
你选择的通信类型应考虑不同的参数,例如微服务的结构方式,适当的基础架构,延迟,规模,依赖关系以及通信目的。异步通信的建立可能会更加复杂,并且需要添加更多组件才能堆叠,但是将异步通信用于微服务的好处远大于缺点。 异步通讯的优势
首先根据定义,异步通信是非阻塞的;第二,它也比同步操作支持更好的缩放;第三,在微服务崩溃的情况下,异步通信机制提供了各种恢复技术,通常更擅长处理与崩溃有关的错误。
另外,当使用代理而不是REST协议时,接收通信的服务实际上并不需要彼此了解。在旧的服务运行了很长时间之后,甚至可以引入新的服务,即能做到更好的解耦服务。
最后,在选择异步操作时,您将增强将来创建集中发现,监视,负载平衡甚至策略执行器的能力。这将为您提供在代码和系统构建中具有灵活性,可伸缩性和更多功能的功能。 选择合适的消息代理
异步通信通常通过消息代理进行管理。也有其他方法,例如aysncio,但它们更加稀少和有限。
在选择代理执行异步操作时,应考虑以下几点: 代理规模–系统中每秒发送的消息数。 数据持久性–恢复消息的能力。 消费者能力–经纪人是否有能力管理一对一和/或一对多的消费者。
一对一
一对多
我们检查了那里最新和最出色的服务,以找出这三个类别中最强的提供商。
RabbitMQ(AMQP)
规模:根据配置和资源,这里的运行速度约为每秒50K msg。
持久性:支持持久性消息和瞬时消息。
一对一与一对多的消费者:两者都有。
RabbitMQ于2007年发布,是最早创建的常见消息代理之一。它是一个开放源代码,通过实现高级消息队列协议(AMQP)通过点对点和pub-sub方法传递消息。它旨在支持复杂的路由逻辑。
有一些托管服务可让您将其用作SaaS,但它不是本机主要云提供商堆栈的一部分。RabbitMQ支持所有主要语言,包括Python,Java,.NET,PHP,Ruby,JavaScript,Go,Swift等。
在持久模式下,可能会遇到一些性能问题。
kafka
规模:每秒最多可以发送一百万条消息。
持久性:是的。
一对一vs一对多的消费者:只有一对多(乍一看似乎很奇怪,对吧?!)。
Kafka由Linkedin于2011年创建,旨在处理高吞吐量,低延迟的处理。作为一个分布式流平台,Kafka复制了一个发布-订阅服务。它提供数据持久性并存储记录流,使其能够交换高质量消息。
Kafka曾在Azure,AWS和Confluent上管理SaaS。他们都是Kafka项目的创建者和主要贡献者。Kafka支持所有主要语言,包括Python,Java,C C ++,Clojure,.NET,PHP,Ruby,JavaScript,Go,Swift等。
Redis
规模:每秒最多可以发送一百万条消息。
持久性:基本上不是,它是内存中的数据存储。
一对一与一对多的消费者:两者都有。
Redis与其他消息代理有点不同。Redis的核心是一个内存中的数据存储,可以用作高性能键值存储或消息代理。另一个区别是Redis没有持久性,而是将其内存转储到Disk DB中。它还非常适合实时数据处理。
最初,Redis不是一对一和一对多的。但是,由于Redis 5.0引入了pub-sub,因此功能得到了增强,一对多成为真正的选择。 每个用例的消息代理
我们介绍了RabbitMQ,Kafka和Redis的一些特征。这三种动物都是它们的类别,但是如上所述,它们的运行方式大不相同。这是我们建议正确的消息代理根据不同用例使用的建议。
短命消息:Redis
Redis的内存数据库几乎适用于不需要持久性的消息短暂的用例。因为Redis提供了非常快速的服务和内存功能,所以它是短保留消息的理想选择,在这些消息中持久性不是很重要,您可以容忍一些丢失。随着5.0中Redis流的发布,它也成为了一对多用例的候选者,由于局限性和旧的pub-sub功能,绝对需要使用它。
大量数据:Kafka
Kafka是一个高吞吐量的分布式队列,用于长时间存储大量数据。对于需要持久性的一对多用例,Kafka是理想的选择。
复杂路由:RabbitMQ
RabbitMQ是一个较老但很成熟的代理,具有许多支持复杂路由的功能。当所需速率不高(超过数万msg sec)时,它甚至将支持复杂的路由通信。
考虑您的软件堆栈
当然,最后要考虑的是你当前的软件堆栈。如果你正在寻找一个相对简单的集成过程,并且不想在堆栈中维护其他代理,那么你可能更倾向于使用已由堆栈支持的代理。
例如,如果你在RabbitMQ之上的系统中使用Celery for Task Queue,那么您会获得与RabbitMQ或Redis一起使用的动力,而不是不支持Kafka且需要进行一些重写的Kafka。
我们通过平台的发展和壮大使用了以上所有内容,然后再进行一些使用!重要的是要记住,每种工具都有自己的优点和缺点,这与了解它们并为工作以及特定的时机,情况和要求选择合适的工具有关。
作者:Mertcan Arguc
来源:http://blog.devgenius.io/redis-vs-kafka-vs-rabbitmq-e935ebbc7ec
有抱负的女性的7个特征一个有抱负的女性激励着她周围的人。继续快乐地行事的方式很闪耀,让我觉得努力工作是件好事。这不是关于她周围的人,而是关于她自己。可能会觉得,如果你能长大,对周围的人有用,那就太好了。
早安文案,朋友圈抖音正能量早安图片只要在路上,就没有到达不了的地方!早安,周四!笃定前行,专注自己。低下头来,在生活的土壤中,开始为自己种植,开枝散叶,生花结籽,才有可能在秋日,看见自己丰盛的一生!早安,周四!人生
别再这样给孩子剪指甲了!不注意会导致嵌甲,严重可能要做手术有位宝妈在群里发了张图片,是孩子的一只左脚,大拇指红肿。她说孩子14个月了,左边大脚趾周围经常红肿,想问问到底是怎么一回事。由于只有图片,初步判断可能是小儿嵌甲,建议她带孩子去医院
山海之旅(三)千岛之湖这次旅游,时间充裕,不紧不慢,愉快轻松。上午九点从桐庐出发,十一点左右到达千岛湖,吃过早中饭,游玩千岛湖。千岛湖亦叫新安江水库,位于杭州市淳安县境内,是为了建设新安江水电站,拦截新
小黑日记夜访茶东村作者小黑今天小黑大老远从石岐跑到南朗茶东村咳咳,可能大家对茶东村不了解,没关系,只要大家知道破冰行动就行了,这就是破冰行动中塔寨村的拍摄地广东省,中山市,南朗镇,茶东村陈氏宗祠破冰
客人点单她上门!京郊民宿兴起网约厨娘北京日报客户端记者李瑶秋日傍晚,延庆区井庄镇窑湾村富春山居山水民宿,张金利吴香婷正忙着筹备一顿家宴,鸡鸭鱼肉小白菜玉米土豆等食材准备妥当,样样新鲜水灵。张金利和吴香婷本都是赋闲在家
奉贤的乡村有多美?看看奉贤摄影人镜头下的乡村振兴美照花开的样子奉贤的日子HELLOJULY夏其林丰收的诗近年来,上海市奉贤区探索国际大都市背景下乡村振兴新路,以田园生态为底色,瞄准奉贤是个大公园村村都像度假村目标,把乡村作为优质稀缺
杜海涛领证八个月陷婚变传闻,九年的感情如此不堪一击么?快乐大本营的爆火,使得几位主持人也拥有了很高的国民度,谢娜微博粉丝数领先破亿,何炅至今仍是主持界的扛把子之一,毕竟谁小时候周六没有守着湖南台等过快乐家族呢?起初的快乐家族并不是这固
67岁奚美娟告诉我们女人优雅老去才耐看,比刻意扮嫩更显高级优雅女人的气质都是由内而外散发出来的,而不仅仅依靠一副皮囊,尽管年龄不断地增长,肌肤也开始出现了衰老的痕迹,但是岁月却永远带不走她们刻在骨子里的气韵。就像如今67岁的奚美娟一样,她
真奢侈!新疆乡村办婚宴,22道硬菜堆着放,宾客看得目瞪口呆乡村宴席,想必大家都参加过,馥郁的人间烟火气以及别具一格的习俗是乡村宴席的两大特征。搁以前,不少人都说乡村人比较贫穷,经济落后,因此其置办的宴席也非常简陋!但如今,随着人们生活水平
选文科真的是因为热爱逝去的不止是青春,还有不知天高地厚绀湫乍选自己喜欢的真的很重要,我就是明明喜欢文科但是听了父母的话为了好就业选了理科,但现在工作了真的每天都不快乐,后悔当初不坚定。菲茨杰拉德也许,生命如此,本来没有定义,只有动时乘