开发者社区> 推荐码发放> 正文

基于Redis实现分布式消息队列(1)

简介:
+关注继续查看

基于Redis实现分布式消息队列(1)

1、为什么需要消息队列?

当系统中出现“生产“和“消费“的速度或稳定性等因素不一致的时候,就需要消息队列,作为抽象层,弥合双方的差异。

举个例子:业务系统触发短信发送申请,但短信发送模块速度跟不上,需要将来不及处理的消息暂存一下,缓冲压力。
再举个例子:调远程系统下订单成本较高,且因为网络等因素,不稳定,攒一批一起发送。
再举个例子,交互模块5:00到24:00和电商系统联通,和内部ERP断开。1:00到4:00和ERP联通,和电商系统断开。
再举个例子,服务员点菜快,厨师做菜慢。
再举个例子,到银行办事的人多,提供服务的窗口少。
乖乖排队吧。

2、使用消息队列有什么好处?

2.1、提高系统响应速度

使用了消息队列,生产者一方,把消息往队列里一扔,就可以立马返回,响应用户了。无需等待处理结果。

处理结果可以让用户稍后自己来取,如医院取化验单。也可以让生产者订阅(如:留下手机号码或让生产者实现listener接口、加入监听队列),有结果了通知。获得约定将结果放在某处,无需通知。

2.2、提高系统稳定性

考虑电商系统下订单,发送数据给生产系统的情况。
电商系统和生产系统之间的网络有可能掉线,生产系统可能会因维护等原因暂停服务。

如果不使用消息队列,电商系统数据发布出去,顾客无法下单,影响业务开展。
两个系统间不应该如此紧密耦合。应该通过消息队列解耦。同时让系统更健壮、稳定。

3、为什么需要分布式?

3.1、多系统协作需要分布式

消息队列中的数据需要在多个系统间共享数据才能发挥价值。
所以必须提供分布式通信机制、协同机制。

3.2、单系统内部署环境需要分布式

单系统内部,为了更好的性能、为了避免单点故障,多为集群环境。
集群环境中,应用运行在多台服务器的多个JVM中;数据也保存在各种类型的数据库或非数据库的多个节点上。
为了满足多节点协作需要,需要提供分布式的解决方案。

4、分布式环境下需要解决哪些问题

4.1、并发问题

需进行良好的并发控制。确保“线程安全“。

不要出现一个订单被出货两次。不要出现顾客A下的单,发货发给了顾客B等情况。

4.2、简单的、统一的操作机制

需定义简单的,语义明确的,业务无关的,恰当稳妥的统一的访问方式。

4.3、容错

控制好单点故障,确保数据安全。

4.4、可横向扩展

可便捷扩容。

5、如何实现?

成熟的消息队列中间件产品太多了,族繁不及备载。

成熟产品经过验证,接口规范,可扩展性强。

结合事业环境因素、组织过程遗产、实施运维考虑、技术路线考虑、开发人员情况等原因综合考虑,基于Redis自己做一个是最可行的选择。

如何做呢?
请听下回分解。

原文地址http://www.bieryun.com/1977.html

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Redis学习4:List数据类型、拓展操作、实现日志等
注意点:对存储空间的顺序进行分析!
15 0
Redis学习3:hash类型操作、拓展操作、实现购物等
首先可以理解成一个redis里面有一个小的redis。同时要注意引入了一个field的名字。
22 0
2021年你还不会Shiro?----10.使用redis实现Shiro的缓存
上一篇文章已经总结了使用ehCache来实现Shiro的缓存管理,步骤也很简单,引入依赖后,直接开启Realm的缓存管理器即可。如果使用Redis来实现缓存管理其实也是一样的,我们也是需要引入redis的依赖,然后开启缓存传入自定义的redis的缓存管理器就行。区别是我们需要为自定义的redis缓存管理器提供自定义的缓存管理类。这个缓存管理类中需要使用到redisTemplate模板,这个模板我们也是需要自己定义。
83 0
浅谈Redis实现分布式锁
浅谈Redis实现分布式锁
64 0
异步结果通知实现——基于Redis实现,我这操作很可以
前段时间,我在内存中实现了一个简单异步通知框架。但由于没有持久化功能,应用重启就会导致数据丢失,且不支持分布式和集群。今天这篇笔记,引入了 Redis 来解决这些问题,以下是几点理由: 数据结构丰富,支持 List、Sorted Set 等 具有持久化功能,消息的可靠性能得到保证 高可用性,支持单机、主从、集群部署 项目中已使用,接入成本更低 基于 Redis 实现延时队列也有几种方法,展开详细讲讲。
67 0
thinkphp+redis实现秒杀功能
thinkphp+redis实现秒杀功能
57 0
PHP结合redis实现点赞功能
PHP结合redis实现点赞功能
29 0
php结合redis实现高并发下的抢购、秒杀功能的实例
php结合redis实现高并发下的抢购、秒杀功能的实例
57 0
分布式锁中-基于 Redis 的实现如何防重入
分布式锁中-基于 Redis 的实现如何防重入
56 0
+关注
推荐码发放
阿里云优惠码阿里云推荐券bieryun.com
文章
问答
文章排行榜
最热
最新
相关电子书
更多
高并发分布式缓存Redis6.0
立即下载
阿里云Redis服务助力游戏行业发展--王义成
立即下载
国内开发者与Redis开源社区的发展
立即下载