技术标签: rabbitmq
MQ(message queue),从字面意思上看,本质上是个队列,FIFO先入先出,只不过队列中存放的内容是Messahe而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了MQ之后,消息发送上游只需要依赖MQ,不需要依赖其他服务。
流量削峰
举个例子,如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正常时段我们下单一秒后就能返回结果。但是在高峰期,如果有两万次下单操作系统是处理不了的,只能限制订单超过一万后不允许用户下单。使用消息队列做缓冲,我们可以取消这个限制,把一秒内下的订单分散成一段时间来处理,这时有些用户可能在下单十几秒后才能收到下单成功的操作,但是比不能下单的体验要好。
应用解耦
以电商应用为例,应用中有订单系统、库存系统、物流系统、支付系统。用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出了故障,都会造成下单操作异常。当转变成基于消息队列的方式后,系统间调用的问题会减少很多,比如物流系统因为发生故障,需要几分钟来修复。在这几分钟的时间里,物流系统要处理的内存被缓存在消息队列中,用户的下单操作可以正常完成。当物流系统恢复后,继续处理订单信息即可,中单用户感受不到物流系统的故障,提升系统的可用性。
异步处理
有些服务间调用是异步的,例如 A 调用 B,B 需要花费很长时间执行,但是 A 需要知道 B 什么时候可以执行完,以前一般有两种方式,A 过一段时间去调用 B 的查询 api 查询。或者 A 提供一个 callback api,B 执行完之后调用 api 通知 A 服务。这两种方式都不是很优雅,使用消息总线,可以很方便解决这个问题,A 调用 B 服务后,只需要监听 B 处理完成的消息,当 B 处理完成后,会发送一条消息给 MQ,MQ 会将此消息转发给 A 服务。这样 A 服务既不用循环调用 B 的查询 api,也不用提供 callback api。同样 B 服务也不用做这些操作。A 服务还能及时的得到异步处理成功的消息。
大数据的杀手锏,谈到大数据领域内的消息传输,则绕不开 Kafka,这款为大数据而生的消息中间件,以其百万级 TPS 的吞吐量名声大噪,迅速成为大数据领域的宠儿,在数据采集、传输、存储的过程中发挥着举足轻重的作用。目前已经被 LinkedIn,Uber, Twitter, Netflix 等大公司所采纳。
RocketMQ 出自阿里巴巴的开源产品,用 Java 语言实现,在设计时参考了 Kafka,并做出了自己的一些改进。被阿里巴巴广泛应用在订单,交易,充值,流计算,消息推送,日志流式处理,binglog 分发等场景。
2007 年发布,是一个在 AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一。
Kafka 主要特点是基于 Pull 的模式来处理消息消费,追求高吞吐量,一开始的目的就是用于日志收集和传输,适合产生大量数据的互联网服务的数据收集业务。大型公司建议可以选用,如果有日志采集功能,肯定是首选 kafka 了。
尚硅谷官网 kafka 视频连接 http://www.gulixueyuan.com/course/330/tasks
天生为金融互联网领域而生,对于可靠性要求很高的场景,尤其是电商里面的订单扣款,以及业务削峰,在大量交易涌入时,后端可能无法及时处理的情况。RoketMQ 在稳定性上可能更值得信赖,这些业务场景在阿里双 11 已经经历了多次考验,如果你的业务有上述并发场景,建议可以选择 RocketMQ。
结合 erlang 语言本身的并发优势,性能好时效性微秒级,社区活跃度也比较高,管理界面用起来十分方便,如果你的数据量没有那么大,中小型公司优先选择功能比较完备的 RabbitMQ。
RabbitMQ 是一个消息中间件:它接受并转发消息。你可以把它当做一个快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里,按照这种逻辑 RabbitMQ 是一个快递站,一个快递员帮你传递快件。RabbitMQ 与快递站的主要区别在于,它不处理快件而是接收,存储和转发消息数据。
生产者
产生数据发送消息的程序是生产者
交换机
交换机是 RabbitMQ 非常重要的一个部件,一方面它接收来自生产者的消息,另一方面它将消息推送到队列中。交换机必须确切知道如何处理它接收到的消息,是将这些消息推送到特定队列还是推送到多个队列,亦或者是把消息丢弃,这个得有交换机类型决定
队列
队列是 RabbitMQ 内部使用的一种数据结构,尽管消息流经 RabbitMQ 和应用程序,但它们只能存储在队列中。队列仅受主机的内存和磁盘限制的约束,本质上是一个大的消息缓冲区。许多生产者可以将消息发送到一个队列,许多消费者可以尝试从一个队列接收数据。这就是我们使用队列的方式
消费者
消费与接收具有相似的含义。消费者大多时候是一个等待接收消息的程序。请注意生产者,消费者和消息中间件很多时候并不在同一机器上。同一个应用程序既可以是生产者又是可以是消费者。
https://www.rabbitmq.com/download.html
上传到/usr/local/software 目录下(如果没有 software 需要自己创建)
rpm -ivh erlang-21.3-1.el7.x86_64.rpm
yum install socat -y
rpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm
添加开机启动 RabbitMQ 服务
chkconfig rabbitmq-server on
启动服务
/sbin/service rabbitmq-server start
查看服务状态
/sbin/service rabbitmq-server status
停止服务(选择执行)
/sbin/service rabbitmq-server stop
开启 web 管理插件
rabbitmq-plugins enable rabbitmq_management
用默认账号密码(guest)访问地址 http://47.115.185.244:15672/出现权限问题
创建账号
rabbitmqctl add_user admin 123
设置用户角色
rabbitmqctl set_user_tags admin administrator
设置用户权限
set_permissions [-p ]
rabbitmqctl set_permissions -p “/” admin “." ".” “.*”
用户 user_admin 具有/vhost1 这个 virtual host 中所有资源的配置、写、读权限
当前用户和角色
rabbitmqctl list_users
关闭应用的命令为
rabbitmqctl stop_app
清除的命令为
rabbitmqctl reset
重新启动命令为
rabbitmqctl start_app
文章浏览阅读221次。原标题:怎么把待办事项生成电脑桌面壁纸?我的同事张晨喜欢在工作前把每天的工作待办事项一一添加到手机便签中,这样在办公的时候就能随时查看自己的工作内容了,按照待办事项清单去一一完成,这样不仅会让她更有紧迫感和任务感,还能在无形中提高工作效率。但是张晨说了在手机便签中添加工作待办事项不方便的地方,这就是她使用的办公设备是电脑,一般需要在办公的时候,时不时的打开手机查看待办事项,这样也会分散自己的注意力..._待办事项手机壁纸
文章浏览阅读1.4k次,点赞10次,收藏8次。PICO4企业版。安装apk,报错“安装失败。(所属的Unity项目打包的apk,被我在同一台pico4安装了20次+)_pico apk 安装失败
文章浏览阅读265次。title: 机器学习实战(七)date: 2020-04-07 09:20:50tags: [AdaBoost, bagging, boosting, ROC]categories: 机器学习实战更多内容请关注我的博客利用AdaBoost元算法提高分类性能在做决定时,大家可能会吸取多个专家而不是一个人的意见,机器学习也有类似的算法,这就是元算法(meta-algorithm)。元算法是对其他算法进行组合的一种方式。基于数据集多重抽样的分类器前面已经学习了五种不同的分类算法,它们各有优._loadsimpdata
文章浏览阅读217次。字符串str:单引号,双引号,三引号引起来的字符信息。数组array:存储同种数据类型的数据结构。[1, 2, 3], [1.1, 2.2, 3.3]列表list:打了激素的数组, 可以存储不同数据类型的数据结构. [1, 1.1, 2.1, 'hello']元组tuple:带了紧箍咒的列表, 和列表的唯一区别是不能增删改。集合set:不重复且无序的。 (交集和并集)字典dict:{“name”:"westos", "age":10# 1. 字符串str字符串或串(String)是由数字、字母_python 中列表 choice.lower()
文章浏览阅读4.1k次,点赞4次,收藏3次。超实用python程序-PDF文字复制后的回车符去除和谷歌百度英汉翻译超实用python程序-PDF文字复制后的回车符去除和谷歌百度英汉翻译痛点界面与功能功能详细说明:过程记录代码和组件分析exe程序生成记录结语痛点PDF文档文字复制会包括回车符,使得文字粘贴和翻译都不方便,尤其是对于双栏的PDF。界面与功能以下为详细说明和..._文献翻译复制的时候都是回车
文章浏览阅读291次。#include"stdio.h"void main(){int n;int i,j,k;int count=0;while(scanf("%d",&n)){for(i=1;i<=n;++i)for(j=i+1;j<=n;++j)for(k=j+1;k<=n;++k)if(ii+jj==k*k){printf("[%d,%d,%d], ",i,j,k);count++;}printf(“total number: %d\n”,count);}}_编写程序,计算0到输入的整数n范围内的勾股数。假设3个正整数x、y和z是勾股数,
文章浏览阅读458次。常用设计模式的介绍一:单例设计模式1,单例设计模式理解2,利用python实现经典的单例模式3, 懒汉式实例化一:单例设计模式1,单例设计模式理解模式提供了一个机制,确保类有且只有一个特定的类型的对象,并提供全局的访问点。用途:通常用于日志记录、数据库操作、打印后后台处理2,利用python实现经典的单例模式class SingleTon(object): def __new__(cls): if not hasattr(cls,'instance'): _python的饿汉模式
文章浏览阅读1.9k次。在大一点的企业或者外企中,你一定要知道的英文缩写,了解各个岗位和部门的英文缩写!【4P是哪4P】Product:产品Price:价格Place:渠道Promotion:促销【职位缩写】首席品牌官【CBO】——chief brand officer首席文化官【CCO】——Chief Cultural Officer开发总监【CDO】——chief Development officer人事总监 【C..._销售顾问中pc,pg,nc都是什么意思
文章浏览阅读1.9k次。笔者使用ActiveMQ作为系统中消息分发的服务器,由Java Web程序读取数据库实时记录作为Producer,接收端为C++Builder开发的客户端程序,常驻客户端右下角,弹窗显示实时消息。测试时发现,当客户端断网(网线拔掉)或者服务器重启等连接中断时,客户端会直接退出,windows也没有报程序崩溃的问题,很是费解。 Debug调试代码发现问题出在自定义的Concumer_activemq-cpp客户端stop会奔溃
文章浏览阅读1.7k次。什么是静态方法或静态属性 static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为“类属性”或“类方法静态方法的特点 1.static方法是类中的一个成员方法,属于整个类,即使不用创建任何对象也可以直接调用! 2.静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。 3.静态方法和..._静态属性和静态方法的特点
文章浏览阅读9.1k次。情况我们在启动hbase的thrift服务后使用python来进行测试连接hbase时报错ImportError: No module named thrift。完整报错如下:[root@host252 thrift]# python test.pyTraceback (most recent call last): File "test.py", line 3, in &l..._importerror:no module named thrift.thrift
文章浏览阅读1k次。关于转专业,华科有两次机会,大一下是可以跨大类转,当然也可以在大类内部转;大二下是只能在学科大类内部转。华科有以下几个大类 信息大类、机械大类、土建环大类、电气大类、文科大类。跨大类转时信息大类与临床医学是不能转入的,但可以通过考光电中法班,通信中英班的方式转入,但是学费要高些,而且毕业是出国的(当然也可以选择不出)。很多同学对船舶与海洋工程不了解,其实这个专业就业非常不错,比信息大类内的不少专业..._华中科技大学转专业机会