当前位置: 首页 > news >正文

济南网站建设与优化重庆设计院

济南网站建设与优化,重庆设计院,凯里网站设计哪家好,wordpress 继续阅读AMQP协议核心概念 RabbitMQ是基于AMQP协议的#xff0c;通过使用通用协议就可以做到在不同语言之间传递。 server#xff1a;又称broker#xff0c;接受客户端连接#xff0c;实现AMQP实体服务。 connection#xff1a;连接和具体broker网络连接。 channel#xff1a…AMQP协议核心概念 RabbitMQ是基于AMQP协议的通过使用通用协议就可以做到在不同语言之间传递。 server又称broker接受客户端连接实现AMQP实体服务。 connection连接和具体broker网络连接。 channel网络信道几乎所有操作都在channel中进行channel是消息读写的通道。客户端可以建立多个channel每个channel表示一个会话任务。 message消息服务器和应用程序之间传递的数据由properties和body组成。properties可以对消息进行修饰比如消息的优先级延迟等高级特性body是消息实体内容。 Virtual host虚拟主机用于逻辑隔离最上层消息的路由。一个Virtual host可以若干个Exchange和Queue同一个Virtual host不能有同名的Exchange或Queue。 Exchange交换机接受消息根据路由键转发消息到绑定的队列上。交换机的类型direct、topic、fanout、headersdurability是否需要持久化true需要auto delete当最后一个绑定Exchange上的队列被删除Exchange也删除。 Direct Exchange,所有发送到Direct Exchange的消息被转发到RouteKey 中指定的Queue,Direct Exchange可以使用默认的默认的Exchange default Exchange默认的Exchange会绑定所有的队列所以Direct可以直接使用Queue名作为routing key 绑定。或者消费者和生产者的routing key完全匹配。Toptic Exchange,是指发送到Topic Exchange的消息被转发到所有关心的Routing key中指定topic的Queue上。Exchange 将routing key和某Topic进行模糊匹配此时队列需要绑定一个topic。所谓模糊匹配就是可以使用通配符“#”可以匹配一个或多个词“”只匹配一个词比如“log.#”可以匹配“log.info.test” log. 就只能匹配log.error。Fanout Exchange:不处理路由键只需简单的将队列绑定到交换机上。发送到改交换机上的消息都会被发送到与该交换机绑定的队列上。Fanout转发是最快的。 bandingExchange和Queue之间的虚拟连接binding中可以包括routing key routing key一个路由规则虚拟机根据他来确定如何路由 一条消息。 Queue消息队列用来存放消息的队列。 消息如何保证100投递 什么是生产端的可靠性投递 保证消息的成功发出保证MQ节点成功接收发送端MQ节点broker收到消息确认应答完善消息进行补偿机制 可靠性投递保障方案。消息落库对消息进行打标其实利用DB来存储消息信息记录初始发送状态在消息发送成功之后客户端收到broker消息确认应答之后更新数据库的发送状态后续再利用定时任务对未发送成功的消息进行二次发送。 消息的延迟投递 在高并发场景下每次进行db的操作都是消耗性能的。我们使用延迟队列来减少一次数据库的操作。 消息幂等性 幂等性是什么我对一个动作进行操作我们可能要执行100次1000次对于这1000次执行的结果都必须一样的。比如单线程方式下执行update count-1的操作执行一千次结果都是一样的所以这个更新操作就是一个幂等的如果是在并发不做线程安全的处理的情况下update一千次操作结果可能就不是一样的所以并发情况下的update操作就不是一个幂等的操作。对应到消息队列上来就是我们即使受到了多条一样的消息也和消费一条消息效果是一样的。高并发的情况下如何避免消息重复消费 唯一id加指纹码利用数据库主键去重。 优点实现简单     缺点高并发下有数据写入瓶颈。 利用Redis的原子性来实现 使用Redis进行幂等是需要考虑的问题是否进行数据库落库落库后数据和缓存如何做到保证幂等Redis和数据库如何同时成功同时失败如果不进行落库都放在Redis中如何这是Redis和数据库的同步策略还有放在缓存中就能百分之百的成功吗 confirm消息确认机制 消息的确认指生产者收到投递消息后如果Broker收到消息就会给我们的生产者一个应答生产者接受应答来确认broker是否收到消息。如何实现confirm确认消息。 在Channel上开启确认模式channel.confirmSelect()在channel上添加监听addConfirmListener监听成功和失败的结果具体结果对消息进行重新发送或者记录日志。 return消息机制 Return消息机制处理一些不可路由的消息我们的生产者通过指定一个Exchange和Routinkey把消息送达到某一个队列中去然后我们消费者监听队列进行消费处理在某些情况下如果我们在发送消息的时候当Exchange不存在或者指定的路由key路由找不到这个时候如果我们需要监听这种不可到达的消息就要使用Return ListenerMandatory 设置为true则监听器会接受到路由不可达的消息然后处理。如果设置为falsebroker将会自动删除该消息。 消费端限流 假设我们有个场景首先我们有个rabbitMQ服务器上有上万条消息未消费然后我们随便打开一个消费者客户端会出现巨量的消息瞬间推送过来但是我们的消费端无法同时处理这么多数据。这时就会导致你的服务崩溃。其他情况也会出现问题比如你的生产者与消费者能力不匹配在高并发的情况下生产端产生大量消息消费端无法消费那么多消息。rabbitMQ提供了一种qos服务质量保证的功能即非自动确认消息的前提下如果有一定数目的消息通过consumer或者Channel设置qos未被确认不进行新的消费。 void basicQOS(unit prefetchSize,ushort prefetchCount,Boolean global)方法。 prefetchSize:0 单条消息的大小限制。0就是不限制一般都是不限制。prefetchCount: 设置一个固定的值告诉rabbitMQ不要同时给一个消费者推送多余N个消息即一旦有N个消息还没有ack则consumer将block掉直到有消息ackglobaltruefalse 是否将上面的设置用于channel也是就是说上面设置的限制是用于channel级别的还是consumer的级别的。 消费端ack与重回队列 消费端进行消费的时候如果由于业务异常我们可以进行日志的记录然后进行补偿也可以加上最大努力次数的尝试如果由于服务器宕机等严重问题那我们就需要手动进行ack保证消费端的消费成功重回队列就是为了对没有处理成功的消息把消息重新投递给broker实际应用中一般都不开启重回队列。 TTL队列/消息 TTL time to live 生存时间。支持消息的过期时间在消息发送时可以指定。支持队列过期时间在消息入队列开始计算时间只要超过了队列的超时时间配置那么消息就会自动的清除。 死信队列 死信队列DLXDead-Letter-Exchange。利用DLX当消息在一个队列中变成死信dead message就是没有任何消费者消费之后他能被重新publish到另一个Exchange这个Exchange就是DLX。消息变为死信的几种情况 消息被拒绝basic.reject/basic.nack同时requeuefalse不重回队列TTL过期队列达到最大长度 DLX也是一个正常的Exchange和一般的Exchange没有任何的区别他能在任何的队列上被指定实际上就是设置某个队列的属性。当这个队列出现死信的时候RabbitMQ就会自动将这条消息重新发布到Exchange上去进而被路由到另一个队列。可以监听这个队列中的消息作相应的处理这个特性可以弥补rabbitMQ以前支持的immediate参数的功能。 死信队列的设置 设置Exchange和Queue然后进行绑定Exchange: dlx.exchange(自定义的名字)queue: dlx.queue自定义的名字routingkey: ##表示任何routingkey出现死信都会被路由过来然后正常的声明交换机、队列、绑定只是我们在队列上加上一个参数arguments.put(x-dead-letter-exchange,dlx.exchange); rabbitMQ高可用方案 主备模式实现rabbitMQ高可用集群一般在并发量和数据不大的情况下这种模式好用简单。又称warren模式。区别于主从模式主从模式主节点提供写操作从节点提供读操作主备模式从节点不提供任何读写操作只做备份如果主节点宕机备份从节点会自动切换成主节点提供服务。集群模式经典方式就是Mirror模式保证100%数据不丢失实现起来也是比较简单。镜像队列是rabbitMQ数据高可用的解决方案主要是实现数据同步一般来说是由2-3节点实现数据同步对于100%消息可靠性解决方案一般是3个节点 多活模式这种模式也是实现异地数据复制的主流模式因为shovel模式配置相对复杂所以一般来说实现异地集群都是使用这种双活多活的模式这种模式需要依赖rabbitMQ的federation插件可以实现持续可靠的AMQP数据。 rabbitMQ部署架构采用双中心模式多中心在两套或多套数据中心个部署一套rabbitMQ集群各中心的rabbitMQ服务需要为提供正常的消息业务外中心之间还需要实现部分队列消息共享。多活架构如下 federation插件是一个不需要构建Cluster而在Brokers之间传输消息的高性能插件federation可以在brokers或者cluster之间传输消息连接的双方可以使用不同的users或者virtual host双方也可以使用不同版本的erlang或者rabbitMQ版本。federation插件可以使用AMQP协议作为通讯协议可以接受不连续的传输。 Federation Exchanges,可以看成Downstream从Upstream主动拉取消息但并不是拉取所有消息必须是在Downstream上已经明确定义Bindings关系的  Exchange,也就是有实际的物理Queue来接收消息才会从Upstream拉取消息到Downstream。使用AMQP协议实施代理间通信Downstream 会将绑定关系组合在一起 绑定/解除绑定命令将发送到Upstream交换机。因此Federation Exchange只接收具有订阅的消息。 HAProxy HAProxy是一款提供高可用性、负载均衡以及基于TCP (第四层)和HTTP (第七层)应用的代理软件,支持虚拟主机它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点这些站点通常又需要会话保持或七层处理。HAProxy运行在时下的硬件上完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中同时可以保护你的web服务器不被暴露到网络上。 HAProxy性能为何这么好单进程、事件驱动模型显著降低了上下文切换的开销及内存占用。单缓冲(single buffering)机制能以不复制任何数据的方式完成读写操作这会节约大量的CPU时钟周期及内存带宽借助于Linux 2.6 ( 2.6.27.19). 上的splice()系统调用HAProxy可以实现零复制转发(Zero-copy forwarding),在Linux 3.5及以上的OS中还可以实现零复制启动(zero-starting)内存分配器在固定大小的内存池中可实现即时内存分配这能够显著减少创建一个会话的时长树型存储:侧重于使用作者多年前开发的弹性二叉树实现了以O(log(N))的低开销来保持计时器命令、保持运行队列命令及管理轮询及最少连接队列 KeepAlived KeepAlived软件主要是通过VRRP协议实现高可用功能的。VRRP是Virtual Router RedundancyProtocol(虚拟路由器冗余协议)的缩写,  VRRP出现的目的就是为了解决静态路由单点故障问题的它能够保证当个别节点宕机时整个网络可以不间断地运行Keepalived具有配置管理LVS的功能同时还具有对LVS下面节点进行健康检查的功能另一方面也可实现系统网络服务的高可用功能 keepAlive的作用 管理LVS负载均衡软件实现LVS集群节点的健康检查作为系统网络服务的高可用性(failover) Keepalived如何实现高可用 Keepalived高可用服务对之间的故障切换转移是通过VRRP (Virtual Router   Redundancy Protocol ,虚拟路由器冗余协议)来实现的。在Keepalived服务正常工作时主Master节点会不断地向备节点发送( 多播的方式)心跳消息用以告诉备Backup节点自己还活看当主Master节点发生故障时就无法发送心跳消息备节点也就因此无法继续检测到来自主Master节点的心跳了于是调用自身的接管程序接管主Master节点的IP资源及服务。而当主Master节点恢复时备Backup节点又会释放主节点故障时自身接管的IP资源及服务恢复到原来的备用角色。 Keepalived概念可以参见Keepalived高可用概念篇
http://www.dnsts.com.cn/news/16201.html

相关文章:

  • 哪儿网站建设费用低长沙做彩票网站公司
  • 怎么用域名做邮箱网站国外企业网站模板
  • 秦皇岛找一家能建网站的公司网站关键词优化到首页后怎么做
  • 网站建设市场调研报告淄博市建设工程质量协会网站
  • 网站建设知识点腾讯云快速建站
  • 单位网站设计制作潜江做网站的公司
  • 个人网站设计方案企业网站改版计划书
  • 网站推广上首页网站开发语言p
  • 萧山网站建设争锋网络浙江网络安全学院
  • 大众点评怎么做团购网站自己建立网站
  • 网络推广SEO优化网站建设怎么样优化网站seo
  • Soho外贸常用网站太原网站制作计划
  • 建网站到底需要多少钱广州软件开发培训哪个好
  • 嘉兴网站定制制作网站站用的软件
  • 网站在网络文化建设方面的成果响应式网站源码
  • 百度做个公司网站要多少钱网站域名的后缀
  • 建设网站费用多少钱网站流量15g
  • 哪些浏览器可以看禁止访问的网站布吉做网站公司
  • 网站关键词快速排名技术电子商务网站建设需要
  • 设计公司啊 网站大气门户网站
  • 做租房信息网站广州番禺区有什么大学
  • 滑县网站建设公司ppt公司简介模板
  • 网站建设与营销网站备案相关前置许可
  • 做网站一定要后台嘛做网站的准备什么软件
  • 建筑网站叫什么盘莆田百度快照优化
  • 网站服务公司特点重庆建筑工程网
  • 网站备案怎么取消山东专业网站解决方案制作
  • 国外网站问题wordpress前台英文
  • 南宁做网站服务商白云鄂博矿区网站建设
  • 旅游网站开发需求文档模板下载网络销售公司名字大全