首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
压力测试
分布式
protocol-buffers
c语言
nodejs
jvm
lvs
lavarel
mvc
package
php水印
正则
memcache
微服务
ffmpeg
session
rabbitmq
lua
stdout
phpmyadmin
touch
port
thinkphp
base64
webserver
storage
ruby
asp.net
pdo
cPlusPlus
curl
yii
yaf
sockets
注入
django
upload
ssl
api
interface
tengine
timezone
nginx
web3
timeout
log4j
webhooks
多线程
router
vb
sftp
http
smtp
go
http2
service
pip
phpunit
cookies
python
wordpress
cookie
爬虫
缓存
queue
syslog
mqtt
mq
pymongo
上传
nlp
ftp
uuid
redis
caching
spring
crash
gcc
golang
当前位置:
开发笔记
>
后端
> 正文
基于Redis实现分布式消息队列(1)
作者:黄燕2602917715_290 | 来源:互联网 | 2016-03-23 00:19
当系统中出现“生产“和“消费“的速度或稳定性等因素不一致的时候,就需要消息队列,作为抽象层,弥合双方的差异。
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自己做一个是最可行的选择。
分布式
服务器
安全
redis
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
redis
Redis的RDB文件与AOF文件的保存与还原机制
本文介绍了Redis中RDB文件和AOF文件的保存和还原机制。RDB文件用于保存和还原Redis服务器所有数据库中的键值对数据,SAVE命令和BGSAVE命令分别用于阻塞服务器和由子进程执行保存操作。同时执行SAVE命令和BGSAVE命令,以及同时执行两个BGSAVE命令都会产生竞争条件。服务器会保存所有用save选项设置的保存条件,当满足任意一个保存条件时,服务器会自动执行BGSAVE命令。此外,还介绍了RDB文件和AOF文件在操作方面的冲突以及同时执行大量磁盘写入操作的不良影响。 ...
[详细]
蜡笔小新 2023-12-12 08:51:10
redis
图解redis的持久化存储机制RDB和AOF的原理和优缺点
本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ...
[详细]
蜡笔小新 2023-12-13 20:24:11
port
Python高级之网络编程及TCP/IP协议簇的OSI七层模型介绍
本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ...
[详细]
蜡笔小新 2023-12-14 18:16:27
port
搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ...
[详细]
蜡笔小新 2023-12-14 17:03:58
port
【译】发送表单数据
这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ...
[详细]
蜡笔小新 2023-12-14 16:19:10
session
Redis数据结构之string应用场景解析
本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ...
[详细]
蜡笔小新 2023-12-14 14:02:42
package
Centos7.6安装Gitlab教程及注意事项
本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ...
[详细]
蜡笔小新 2023-12-14 14:01:06
package
禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ...
[详细]
蜡笔小新 2023-12-14 12:55:15
package
云服务器API接口的入门使用及功能解析
本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ...
[详细]
蜡笔小新 2023-12-14 12:43:39
session
t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ...
[详细]
蜡笔小新 2023-12-14 10:17:48
session
Web学习历程记录(七)——Tomcat基本概念和配置
本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ...
[详细]
蜡笔小新 2023-12-13 17:08:24
session
如何在服务器主机上实现文件共享的方法和工具
本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ...
[详细]
蜡笔小新 2023-12-13 13:23:48
asp.net
单点登录原理及实现方案详解
本文详细介绍了单点登录的原理及实现方案,其中包括共享Session的方式,以及基于Redis的Session共享方案。同时,还分享了作者在应用环境中所遇到的问题和经验,希望对读者有所帮助。 ...
[详细]
蜡笔小新 2023-12-12 19:23:28
package
开发笔记:软件测试知识点之数据库压力测试方法小结
篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ...
[详细]
蜡笔小新 2023-12-10 20:29:19
ruby
云原生应用最佳开发实践之十二原则(12factor)
目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ...
[详细]
蜡笔小新 2023-12-09 09:35:02
黄燕2602917715_290
这个家伙很懒,什么也没留下!
Tags | 热门标签
压力测试
分布式
protocol-buffers
c语言
nodejs
jvm
lvs
lavarel
mvc
package
php水印
正则
memcache
微服务
ffmpeg
session
rabbitmq
lua
stdout
phpmyadmin
touch
port
thinkphp
base64
webserver
storage
ruby
asp.net
pdo
cPlusPlus
RankList | 热门文章
1
螺栓预紧力控制方法及推荐
2
MySQL中的MVVC多版本并发控制机制的应用及实现
3
在虚拟服务器上安装oracle 10g客户端的问题及解决方法
4
Android Material Design风格的日期时间选择器TimeSelector
5
如何在HTML中获取鼠标的当前位置
6
vlan接口类型和划分的详细解析
7
技嘉秀高端B450主板:不再支持第七代APU,性价比高且兼容锐龙一代和二代
8
多态中成员变量、成员方法的使用特点和多态的好处
9
敏捷项目的治理实践和重要性
10
树莓派--Raspbian启用root账户,禁用休眠的方法
11
Sencha Touch学习使用心得 Unit 1 搭架构
12
EzPP 0.2发布,新增YAML布局渲染功能
13
Excel中超好用的5招条件格式图表可视化
14
响应式页面的概述和实现方式
15
在wwbstrom中如何查看一个方法的使用
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有