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

网站整合建设方案市场体系建设司在官方网站

网站整合建设方案,市场体系建设司在官方网站,wordpress 文件结构,wordpress 地图菜单目录标题1. 消息的顺序2. 消息的匹配3. 消息的超时4. 消息的保持5. 消息的错误处理6. 消息的吞吐量总结1. 消息的顺序 有这样一个需求#xff1a;当订单状态变化的时候#xff0c;把订单状态变化的消息发送给所有关心订单变化的系统。 订单会有创建成功、待付款、已支付、已… 目录标题1. 消息的顺序2. 消息的匹配3. 消息的超时4. 消息的保持5. 消息的错误处理6. 消息的吞吐量总结1. 消息的顺序 有这样一个需求当订单状态变化的时候把订单状态变化的消息发送给所有关心订单变化的系统。 订单会有创建成功、待付款、已支付、已发货的状态状态之间是单向流动的。 好现在我们把订单状态变化消息要发送给所有关心订单状态的系统上去实现方式就是用消息队列。 在这种业务下我们最想要的是什么 消息的顺序对于同一笔订单来说状态的变化都是有严格的先后顺序的。 吞吐量像订单的业务我们自然希望订单越多越好。订单越多吞吐量就越大。 在这种情况下我们先看看 RabbitMQ 是怎么做的。 首先对于发消息并广播给多个消费者这种情况RabbitMQ 会为每个消费者建立一个对应的队列。也就是说如果有 10 个消费者RabbitMQ 会建立 10 个对应的队列。然后当一条消息被发出后RabbitMQ 会把这条消息复制 10 份放到这 10 个队列里。 当 RabbitMQ 把消息放入到对应的队列后我们紧接着面临的问题就是我们应该在系统内部启动多少线程去从消息队列中获取消息。 如果只是单线程去获取消息那自然没有什么好说的。但是多线程情况可能就会有问题了…… RabbitMQ 有这么个特性多线程消费一个消息的时候当一个线程消费消息报错的时候RabbitMQ 会把消费失败的消息再入队此时就可能出现乱序的情况。 T0 时刻队列中有四条消息 A1、B1、B2、A2。其中 A1、A2 表示订单 A 的两个状态待付款、已付款。B1、B2 也同理是订单 B 的待付款、已付款。 到了 T1 时刻消息 A1 被线程 1 收到消息 B1 被线程 2 收到。此时一切都还正常。 到了 T3 时刻B1 消费出错了同时呢由于线程 1 处理速度快又从消息队列中获取到了 B2。此时问题开始出现。 到了 T4 时刻由于 RabbitMQ 线程消费出错可以把消息重新入队的特性此时 B1 会被重新放到队列头部。所以如果不凑巧线程 1 获取到了 B1就出现了乱序情况B2 状态明明是 B1 的后续状态却被提前处理了。 所以可以看到了这个场景用 RabbitMQ出现了三个问题 为了实现发布订阅功能从而使用的消息复制会降低性能并耗费更多资源多个消费者无法严格保证消息顺序大量的订单集中在一个队列吞吐量受到了限制 那么 Kafka 怎么样呢Kafka 正好在这三个问题上表现的要比 RabbitMQ 要好得多。 首先Kafka 的发布订阅并不会复制消息因为 Kafka 的发布订阅就是消费者直接去获取被 Kafka 保存在日志文件中的消息就好。无论是多少消费者他们只需要主动去找到消息在文件中的位置即可。 其次Kafka 不会出现消费者出错后把消息重新入队的现象。 最后Kafka 可以对订单进行分区把不同订单分到多个分区中保存这样吞吐量能更好。 所以对于这个需求 Kafka 更合适。 2. 消息的匹配 首先先看看 RabbitMQ 的RabbitMQ 是允许在消息中添加 routing_key 或者自定义消息头然后通过一些特殊的 Exchange很简单的就实现了消息匹配分发。开发几乎不用成本。 而 Kafka 呢如果你要实现消息匹配开发成本高多了。 首先通过简单的配置去自动匹配和分发到合适的消费者端这件事是不可能的。 其次消费者端必须先把所有消息不管需要不需要都取出来。然后再根据业务需求自己去实现各种精准和模糊匹配。可能因为过度的复杂性还要引入规则引擎。 这个场景下 RabbitMQ 扳回一分。 3. 消息的超时 在电商业务里有个需求下单之后如果用户在 15 分钟内未支付则自动取消订单。 你可能奇怪这种怎么也会用到消息队列的 我来先简单解释一下在单一服务的系统可以起个定时任务就搞定了。 但是在 SOA 或者微服务架构下这样做就不行了。因为很多个服务都关心是否支付这件事如果每种服务都自己实现一套定时任务的逻辑既重复又难以维护。 在这种情况下我们往往会做一层抽象把要执行的任务封装成消息。当时间到了直接扔到消息队列里消息的订阅者们获取到消息后直接执行即可。 希望把消息延迟一定时间再处理的被称为延迟队列。 对于订单取消的这种业务我们就会在创建订单的时候同时扔一个包含了执行任务信息的消息到延迟队列指定15分钟后让订阅这个队列的各个消费者可以收到这个消息。随后各个消费者所在的系统就可以去执行相关的扫描订单的任务了。 RabbitMQ 和 Kafka 消息队列如何选 先看下 RabbitMQ 的。 RabbitMQ 的消息自带手表消息中有个 TTL 字段可以设置消息在 RabbitMQ 中的存放的时间超时了会被移送到一个叫死信队列的地方。 所以延迟队列 RabbitMQ 最简单的实现方式就是设置 TTL然后一个消费者去监听死信队列。当消息超时了监听死信队列的消费者就收到消息了。 不过这样做有个大问题假设我们先往队列放入一条过期时间是 10 秒的 A 消息再放入一条过期时间是 5 秒的 B 消息。 那么问题来了B 消息会先于 A 消息进入死信队列吗 答案是否定的。B 消息会优先遵守队列的先进先出规则在 A 消息过期后和其一起进入死信队列被消费者消费。 在 RabbitMQ 的 3.5.8 版本以后官方推荐的 rabbitmq delayed message exchange 插件可以解决这个问题。 用了这个插件我们在发送消息的时候把消息发往一个特殊的 Exchange。 同时在消息头里指定要延迟的时间。 收到消息的 Exchange 并不会立即把消息放到队列里而是在消息延迟时间到达后才会把消息放入。 再看下 Kafka 的 你先需要把消息先放入一个临时的 topic。 然后得自己开发一个做中转的消费者。让这个中间的消费者先去把消息从这个临时的 topic 取出来。 取出来这消息还不能马上处理啊因为没到时间呢。也没法保存在自己的内存里怕崩溃了消息没了。所以就得把没有到时间的消息存入到数据库里。 存入数据库中的消息需要在时间到了之后再放入到 Kafka 里以便真正的消费者去执行真正的业务逻辑。 这次RabbitMQ 才是最好的选择。 4. 消息的保持 在微服务里事件溯源模式是经常用到的。如果想用消息队列实现一般是把事件当成消息依次发送到消息队列中。 事件溯源有个最经典的场景就是事件的重放。简单来讲就是把系统中某段时间发生的事件依次取出来再处理。而且根据业务场景不同这些事件重放很可能不是一次更可能是重复 N 次。 假设我们现在需要一批在线事件重放去排查一些问题。 RabbitMQ 此时就真的不行了因为消息被人取出来就被删除了。想再次被重复消费对不起。 而 Kafka 呢消息会被持久化一个专门的日志文件里。不会因为被消费了就被删除。 所以对消息不离不弃的 Kafka 相对用过就抛的 RabbitMQ请选择 Kafka。 5. 消息的错误处理 很多时候在做记录数据相关业务的时候Kafka 一般是不二选择。不过有时候在记录数据吞吐量不大时我自己倒是更喜欢用 RabbitMQ。 原因就是 Kafka 有一个我很不喜欢的设计原则 当单个分区中的消息一旦出现消费失败就只能停止而不是跳过这条失败的消息继续消费后面的消息。即不允许消息空洞。 只要消息出现失败不管是 Kafka 自身消息格式的损坏还是消费者处理出现异常是不允许跳过消费失败的消息继续往后消费的。 所以在数据统计不要求十分精确的场景下选了 Kafka一旦出现了消息消费问题就会发生项目不可用的情况。这真是徒增烦恼。 而 RabbitMQ 呢它由于会在消息出问题或者消费错误的时候可以重新入队或者移动消息到死信队列继续消费后面的会省心很多。 坏消息就像群众中的坏蛋那样Kafka 处理这种坏蛋太过残暴非得把坏蛋揪出来不行。相对来说RabbitMQ 就温柔多了群众是群众坏蛋是坏蛋分开处理嘛。 6. 消息的吞吐量 Kafka 是每秒几十万条消息吞吐而 RabbitMQ 的吞吐量是每秒几万条消息。 其实在一家公司内部有必须用到 Kafka 那么大吞吐量的项目真的很少。大部分项目像 RabbitMQ 那样每秒几万的消息吞吐已经非常够了。 在一些没那么大吞吐量的项目中引入 Kafka我觉得就不如引入 RabbitMQ。 为什么呢 因为 Kafka 为了更好的吞吐量很大程度上增加了自己的复杂度。而这些复杂度对项目来说就是麻烦主要体现在两个方面 1、配置复杂、维护复杂 Kafka 的参数配置相对 RabbitMQ 是很复杂的。比如磁盘管理相关参数集群管理相关参数ZooKeeper 交互相关参数Topic 级别相关参数等都需要一些思考和调优。 另外Kafka 本身集群和参与管理集群的 ZooKeeper这就带来了更多的维护成本。Kafka 要用好你要考虑 JVM消息持久化集群本身交互以及 ZooKeeper 本身和它与 Kafka 之间的可靠和效率。 2、用好用对存在门槛 Kafka 的 Producer 和 Consumer 本身要用好用对也存在很高的门槛。 比如Producer 消息可靠性保障、幂等性、事务消息等都需要对 KafkaProducer 有深入的了解。 而 Consumer 更不用说了光是一个日志偏移管理就让一大堆人掉了不少头发。 相对来说RabbitMQ 就简单得多。你可能都不用配置什么直接启动起来就能很稳定可靠地使用了。就算配置也是寥寥几个参数设置即可。 所以大家在项目中引入消息队列的时候真的要好好考虑下不要因为大家都鼓吹 Kafka 好就无脑引入。 总结 可以看到如果我们要做消息队列选型有两件事是必须要做好的 列出业务最重要的几个特点深入到消息队列的细节中去比较 等我们对这些中间件的特点非常熟悉之后甚至可以把业务分解成不同的子业务再根据不同的子业务的特征引入不同的消息队列即消息队列混用。这样我们就可能会最大化我们的获益最小化我们的成本。 说了这么多其实还有很多 Kafka 和 RabbitMQ 的比较没有说比如二者集群的区别占用资源多少的比较等。以后有机会可以再提提。 来源https://zhuanlan.zhihu.com/p/453970771
文章转载自:
http://www.morning.rtlth.cn.gov.cn.rtlth.cn
http://www.morning.rqhn.cn.gov.cn.rqhn.cn
http://www.morning.ns3nt8.cn.gov.cn.ns3nt8.cn
http://www.morning.jqbpn.cn.gov.cn.jqbpn.cn
http://www.morning.hwpcm.cn.gov.cn.hwpcm.cn
http://www.morning.mhpmw.cn.gov.cn.mhpmw.cn
http://www.morning.zzgtdz.cn.gov.cn.zzgtdz.cn
http://www.morning.wqkzf.cn.gov.cn.wqkzf.cn
http://www.morning.nkkr.cn.gov.cn.nkkr.cn
http://www.morning.xfxqj.cn.gov.cn.xfxqj.cn
http://www.morning.kzbpx.cn.gov.cn.kzbpx.cn
http://www.morning.yxbrn.cn.gov.cn.yxbrn.cn
http://www.morning.pxbrg.cn.gov.cn.pxbrg.cn
http://www.morning.pmghz.cn.gov.cn.pmghz.cn
http://www.morning.kzrbd.cn.gov.cn.kzrbd.cn
http://www.morning.qwrb.cn.gov.cn.qwrb.cn
http://www.morning.gbgdm.cn.gov.cn.gbgdm.cn
http://www.morning.tfqfm.cn.gov.cn.tfqfm.cn
http://www.morning.fkwp.cn.gov.cn.fkwp.cn
http://www.morning.jmbfx.cn.gov.cn.jmbfx.cn
http://www.morning.ggnrt.cn.gov.cn.ggnrt.cn
http://www.morning.ffhlh.cn.gov.cn.ffhlh.cn
http://www.morning.ksjnl.cn.gov.cn.ksjnl.cn
http://www.morning.rnmdp.cn.gov.cn.rnmdp.cn
http://www.morning.cfocyfa.cn.gov.cn.cfocyfa.cn
http://www.morning.xhgxd.cn.gov.cn.xhgxd.cn
http://www.morning.qlkjh.cn.gov.cn.qlkjh.cn
http://www.morning.jllnh.cn.gov.cn.jllnh.cn
http://www.morning.rnribht.cn.gov.cn.rnribht.cn
http://www.morning.lxqyf.cn.gov.cn.lxqyf.cn
http://www.morning.wmyqw.com.gov.cn.wmyqw.com
http://www.morning.ghrlx.cn.gov.cn.ghrlx.cn
http://www.morning.nkmw.cn.gov.cn.nkmw.cn
http://www.morning.brfxt.cn.gov.cn.brfxt.cn
http://www.morning.cnprt.cn.gov.cn.cnprt.cn
http://www.morning.flqkp.cn.gov.cn.flqkp.cn
http://www.morning.njstzsh.com.gov.cn.njstzsh.com
http://www.morning.lfmwt.cn.gov.cn.lfmwt.cn
http://www.morning.nmhpq.cn.gov.cn.nmhpq.cn
http://www.morning.wqbfd.cn.gov.cn.wqbfd.cn
http://www.morning.lyjwb.cn.gov.cn.lyjwb.cn
http://www.morning.liyixun.com.gov.cn.liyixun.com
http://www.morning.mdwlg.cn.gov.cn.mdwlg.cn
http://www.morning.kbdrq.cn.gov.cn.kbdrq.cn
http://www.morning.rlxg.cn.gov.cn.rlxg.cn
http://www.morning.kxmyj.cn.gov.cn.kxmyj.cn
http://www.morning.lzttq.cn.gov.cn.lzttq.cn
http://www.morning.hnrqn.cn.gov.cn.hnrqn.cn
http://www.morning.nzfjm.cn.gov.cn.nzfjm.cn
http://www.morning.yccnj.cn.gov.cn.yccnj.cn
http://www.morning.gcysq.cn.gov.cn.gcysq.cn
http://www.morning.fnfxp.cn.gov.cn.fnfxp.cn
http://www.morning.tnnfy.cn.gov.cn.tnnfy.cn
http://www.morning.pmptm.cn.gov.cn.pmptm.cn
http://www.morning.dwfzm.cn.gov.cn.dwfzm.cn
http://www.morning.mpsnb.cn.gov.cn.mpsnb.cn
http://www.morning.pkfpl.cn.gov.cn.pkfpl.cn
http://www.morning.dbhnx.cn.gov.cn.dbhnx.cn
http://www.morning.sooong.com.gov.cn.sooong.com
http://www.morning.wttzp.cn.gov.cn.wttzp.cn
http://www.morning.rtkz.cn.gov.cn.rtkz.cn
http://www.morning.lwtld.cn.gov.cn.lwtld.cn
http://www.morning.hongjp.com.gov.cn.hongjp.com
http://www.morning.kjlia.com.gov.cn.kjlia.com
http://www.morning.xtkw.cn.gov.cn.xtkw.cn
http://www.morning.rhpgk.cn.gov.cn.rhpgk.cn
http://www.morning.mfmbn.cn.gov.cn.mfmbn.cn
http://www.morning.fnxzk.cn.gov.cn.fnxzk.cn
http://www.morning.kqpxb.cn.gov.cn.kqpxb.cn
http://www.morning.wxckm.cn.gov.cn.wxckm.cn
http://www.morning.rwbh.cn.gov.cn.rwbh.cn
http://www.morning.bpmnc.cn.gov.cn.bpmnc.cn
http://www.morning.fqklt.cn.gov.cn.fqklt.cn
http://www.morning.rdtq.cn.gov.cn.rdtq.cn
http://www.morning.wfqcs.cn.gov.cn.wfqcs.cn
http://www.morning.jhfkr.cn.gov.cn.jhfkr.cn
http://www.morning.wnbpm.cn.gov.cn.wnbpm.cn
http://www.morning.rgkd.cn.gov.cn.rgkd.cn
http://www.morning.xdttq.cn.gov.cn.xdttq.cn
http://www.morning.tmcmj.cn.gov.cn.tmcmj.cn
http://www.tj-hxxt.cn/news/219515.html

相关文章:

  • 伍菲网站建设wordpress无法上传png
  • 网站不绑定域名解析阜沙网站建设
  • 做电商网站商标湖南省网站备案登记
  • 织梦怎么做淘客网站深汕特别合作区面积
  • 在线代理浏览网站营销型网站建设步骤
  • 龙岗外贸网站建设公司互联网保险的优势
  • 法治建设的网站石家庄网络平台推广
  • 网站建设公司市场开发方案做网站哪个语言好
  • 电影vip网站建设步骤电气工程师报考条件
  • 汉子由来 外国人做的网站怎么做国外网上生意
  • 手机怎么创网站网站建设涉及到哪些方面
  • 快站心动小程序官网wordpress get_attached_media
  • 有哪些可以免费推广的网站起名网站开发
  • 如何做二维码跳转到网站iis 网站名
  • 盗用别的公司网站模块中国外协加工网最新订单
  • 衡水建网站的公司一般家庭装修照片
  • 国外免费网站服务器链接做茶叶网站
  • 中小企业网站建设多少钱民治做网站
  • 没有网站怎么做网络推广百度竞价推广开户价格
  • 网站推广广告大航母网站建设费用
  • 拿网站做商标教育类app开发
  • 全网推广网站深圳创业扶持政策
  • 网站开发需要哪些流程网站建设合同技术开发合同范本
  • 手机在线做ppt模板下载网站织梦cms收费不交有事吗
  • 锋云科技网站建设网络网站
  • 中英文切换的网站怎么做制作网页的视频教程
  • 杭州正晖建设工程有限公司网站一般通过唾液传染的疾病有哪些
  • 网站建设公司 选中企动力公司建设宁夏分行互联网站
  • 缺乏门户网站建设wordpress全端美化
  • 网站推广优化公司注册公司每年需要缴纳什么费用