2021-02-02 分类: 网站建设
如果你经常看技术文章应该听过「消息队列」、「消息代理」和「消息中间件」这三个词,它们有什么区别和联系呢?希望这篇文章能告诉你答案。
现在主流的开源数据库中间件有Mycat、MySQL-proxy、Atlas等等,不过现在都不怎么维护了,另外还有Cetus ,作者是tcpcopy的作者,这个项目还在不断维护,有同学有兴趣的可以试试。当然其实各大公司内部都有自己的数据库中间件产品,更多的贴近公司的业务产品和基础设施。
2. Web框架中间件
一般Web框架都支持中间件,Web框架中间件的本质是插件系统,是一系列的框架钩子,在收到请求和返回响应这个过程里面去做一些额外的事情。中间件种类很多,举例一些:
这些中间件将业务和非业务代码功能进行解耦:
框架里面可能内置了一些常用的中间件,也可能只是内置中间件支持。你可以配置使用某个(些),也能方便的自定义中间件
Web视图中不需要手写中间件逻辑,按约定好的用法框架会在对应的生命周期中按照约定的顺序去执行这些中间件逻辑
PS:Golang语言中最知名的Web框架Gin支持中间件,而且还官网搞了个叫gin-gonic/contrib的项目搜集社区里面的中间件。
消息队列(Message Queue)
消息队列就是Message+Queue。其实消息可以说是一个数据传输单位,它包含了创建时间、通道/主题信息、输入参数等全部数据;队列(Queue)是一种FIFO(先进先出)的数据结构,编程语言一般都内置(内存中的)队列实现,可以作为进程间通讯(IPC)的方法。使用队列最常见的场景就是生产者/消费者模式:生产者生产消息放到队列中,消费者从队列里面获取消息消费。
准确的说,消息队列(以下简称MQ**是一种能实现生产者到消费者单向通信的通信模型,而一般大家说MQ是指实现了这个模型的中间件,比如RabbitMQ、RocketMQ、Kafka等。
设想一个订单场景,当你付款成功之后要做什么:
这就出现了一些问题:
当然还有其他的问题:
而消息中间件就是解决上述问题的,虽然不同的中间件的实现方案不同,但都具备以下特点:
可以说,消息中间件是现在企业架构中不可或缺的组合部分,用了都说好。
消息代理(Message Broker)
消息代理是一种架构模式,用于消息验证、变换、路由。虽然不同的消息中间件架构和实现各不相同,但是大部分都实现了Broker:其实就是消息中间件服务器,它是中间件的核心。
注意:RabbitMQ、Kafka、RocketMQ等都有消息代理,但是注意,不是所有中间件都这么选,例如ZeroMQ,它用了套接字风格的API。
在一些地方其实说消息代理就是指消息中间件,如Python语言知名的分布式任务队列框架Celery中就这么称呼的(所谓的「任务」其实就是一个包含了任务全部数据的消息)。
当前名称:消息队列、消息代理和消息中间件的区别和联系
浏览地址:/news41/98791.html
成都网站建设公司_创新互联,为您提供微信小程序、建站公司、标签优化、网站策划、外贸网站建设、小程序开发
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联
猜你还喜欢下面的内容