rabbitMQ是基于AMQP协议的,经过使用通用协议就能够作到在不一样语言之间传递。web
核心概念面试
很是强悍的 RabbitMQ 总结,看完别再说你不会RabbitMQ数据库
交换机的类型,direct、topic、fanout、headers,durability(是否须要持久化true须要)auto delete当最后一个绑定Exchange上的队列被删除Exchange也删除。安全
The default exchange is implicitly bound to every queue, with a routing key equal to the queue name. It is not possible to explicitly bind to, or unbind from the default exchange. It also cannot be deleted.服务器
很是强悍的 RabbitMQ 总结,看完别再说你不会RabbitMQ网络
在高并发场景下,每次进行db的操做都是很是消耗性能的。咱们使用延迟队列来减小一次数据库的操做。架构
幂等性是什么?并发
我对一个动做进行操做,咱们肯能要执行100次1000次,对于这1000次执行的结果都必须同样的。好比单线程方式下执行update count-1的操做执行一千次结果都是同样的,因此这个更新操做就是一个幂等的,若是是在并发不作线程安全的处理的状况下update一千次操做结果可能就不是同样的,因此并发状况下的update操做就不是一个幂等的操做。对应到消息队列上来,就是咱们即便收到了多条同样的消息,也和消费一条消息效果是同样的。负载均衡
理解confirm消息确认机制高并发
Return消息机制处理一些不可路由的消息,咱们的生产者经过指定一个Exchange和Routinkey,把消息送达到某一个队列中去,而后咱们消费者监听队列进行消费处理!在某些状况下,若是咱们在发送消息的时候当Exchange不存在或者指定的路由key路由找不到,这个时候若是咱们须要监听这种不可到达的消息,就要使用Return Listener!
Mandatory 设置为true则会监听器会接受到路由不可达的消息,而后处理。若是设置为false,broker将会自动删除该消息。
什么是消费端的限流?
假设咱们有个场景,首先,咱们有个rabbitMQ服务器上有上万条消息未消费,而后咱们随便打开一个消费者客户端,会出现:巨量的消息瞬间推送过来,可是咱们的消费端没法同时处理这么多数据。这时就会致使你的服务崩溃。 其余状况也会出现问题,好比你的生产者与消费者能力不匹配,在高并发的状况下生产端产生大量消息,消费端没法消费那么多消息。
void basicQOS(unit prefetchSize,ushort prefetchCount,Boolean global)方法。
TTL time to live 生存时间。
死信队列:DLX,Dead-Letter-Exchange
利用DLX,当消息在一个队列中变成死信(dead message,就是没有任何消费者消费)以后,他能被从新publish到另外一个Exchange,这个Exchange就是DLX。
消息变为死信的几种状况:
DLX也是一个正常的Exchange,和通常的Exchange没有任何的区别,他能在任何的队列上被指定,实际上就是设置某个队列的属性。当这个队列出现死信的时候,RabbitMQ就会自动将这条消息从新发布到Exchange上去,进而被路由到另外一个队列。能够监听这个队列中的消息做相应的处理,这个特性能够弥补rabbitMQ之前支持的immediate参数的功能。
死信队列的设置
很是强悍的 RabbitMQ 总结,看完别再说你不会RabbitMQ
很是强悍的 RabbitMQ 总结,看完别再说你不会RabbitMQ
federation插件是一个不须要构建Cluster,而在Brokers之间传输消息的高性能插件,federation能够在brokers或者cluster之间传输消息,链接的双方可使用不一样的users或者virtual host双方也可使用不一样版本的erlang或者rabbitMQ版本。federation插件可使用AMQP协议做为通信协议,能够接受不连续的传输。
很是强悍的 RabbitMQ 总结,看完别再说你不会RabbitMQ
Federation Exchanges,能够当作Downstream从Upstream主动拉取消息,但并非拉取全部消息,必须是在Downstream.上已经明肯定义Bindings关系的Exchange,也就是有实际的物理Queue来接收消息,才会从Upstream拉取消息到Downstream。使用AMQP协议实施代理间通讯,Downstream 会将绑定关系组合在一块儿, 绑定/解除绑定命令将发送到Upstream交换机。所以,FederationExchange只接收具备订阅的消息.
HAProxy是一款提供高可用性、负载均衡以及基于TCP (第四层)和HTTP(第七层)应用的代理软件,支持虚拟主机,它是免费、快速而且可靠的一种解决方案。 HAProxy特别适用于那些负载特大的web站点,这些站点一般又须要会话保持或七层处理。HAProxy运行在时下的硬件上,彻底能够支持数以万计的并发链接。而且它的运行模式使得它能够很简单安全的整合进您当前的架构中同时能够保护你的web服务器不被暴露到网络上。
数据的方式完成读写操做,这会节约大量的CPU时钟周期及内存带宽
零复制转发(Zero-copy forwarding),在Linux 3.5及以上的OS中还能够实现心零复制启动(zero-starting)
建一个会话的时长
的低开销来保持计时器命令、保持运行队列命令及管理轮询及最少链接队列
KeepAlived软件主要是经过VRRP协议实现高可用功能的。VRRP是Virtual Router RedundancyProtocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题的,它可以保证当个别节点宕机时,整个网络能够不间断地运行因此,Keepalived - -方面具备配置管理LVS的功能,同时还具备对LVS下面节点进行健康检查的功能,另外一方面也可实现系统网络服务的高可用功能
Keepalived高可用服务对之间的故障切换转移,是经过VRRP (Virtual RouterRedundancy Protocol ,虚拟路由器冗余协议)来实现的。在Keepalived服务正常工做时,主Master节点会不断地向备节点发送( 多播的方式)心跳消息,用以告诉备Backup节点本身还活看,当主Master节点发生故障时,就没法发送心跳消息,备节点也就所以没法继续检测到来自主Master节点的心跳了,因而调用自身的接管程序,接管主Master节点的IP资源及服务。而当主Master节点恢复时备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色
领取更多Java核心技术主流资料和大厂面试题,转发+关注私信我