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

电子商务难学吗武汉百度seo排名

电子商务难学吗,武汉百度seo排名,唯品会网站建设建议,重庆城乡建设网站顺序消息为 Apache RocketMQ 中的高级特性消息,本文为您介绍顺序消息的应用场景、功能原理、使用限制、使用方法和使用建议。 应用场景​ 在有序事件处理、撮合交易、数据实时增量同步等场景下,异构系统间需要维持强一致的状态同步,上游的事…

顺序消息为 Apache RocketMQ 中的高级特性消息,本文为您介绍顺序消息的应用场景、功能原理、使用限制、使用方法和使用建议。

应用场景​

在有序事件处理、撮合交易、数据实时增量同步等场景下,异构系统间需要维持强一致的状态同步,上游的事件变更需要按照顺序传递到下游进行处理。在这类场景下使用 Apache RocketMQ 的顺序消息可以有效保证数据传输的顺序性。

 

功能原理​

什么是顺序消息

顺序消息是 Apache RocketMQ 提供的一种高级消息类型,支持消费者按照发送消息的先后顺序获取消息,从而实现业务场景中的顺序处理。 相比其他类型消息,顺序消息在发送、存储和投递的处理过程中,更多强调多条消息间的先后顺序关系。

Apache RocketMQ 顺序消息的顺序关系通过消息组(MessageGroup)判定和识别,发送顺序消息时需要为每条消息设置归属的消息组,相同消息组的多条消息之间遵循先进先出的顺序关系,不同消息组、无消息组的消息之间不涉及顺序性。

基于消息组的顺序判定逻辑,支持按照业务逻辑做细粒度拆分,可以在满足业务局部顺序的前提下提高系统的并行度和吞吐能力。

如何保证消息的顺序性

Apache RocketMQ 的消息的顺序性分为两部分,生产顺序性和消费顺序性。

  • 生产顺序性 :

    Apache RocketMQ 通过生产者和服务端的协议保障单个生产者串行地发送消息,并按序存储和持久化。

    如需保证消息生产的顺序性,则必须满足以下条件:

    • 单一生产者:消息生产的顺序性仅支持单一生产者,不同生产者分布在不同的系统,即使设置相同的消息组,不同生产者之间产生的消息也无法判定其先后顺序。

    • 串行发送:Apache RocketMQ 生产者客户端支持多线程安全访问,但如果生产者使用多线程并行发送,则不同线程间产生的消息将无法判定其先后顺序。

    满足以上条件的生产者,将顺序消息发送至 Apache RocketMQ 后,会保证设置了同一消息组的消息,按照发送顺序存储在同一队列中。服务端顺序存储逻辑如下:

    • 相同消息组的消息按照先后顺序被存储在同一个队列。

    • 不同消息组的消息可以混合在同一个队列中,且不保证连续。

如上图所示,消息组1和消息组4的消息混合存储在队列1中, Apache RocketMQ 保证消息组1中的消息G1-M1、G1-M2、G1-M3是按发送顺序存储,且消息组4的消息G4-M1、G4-M2也是按顺序存储,但消息组1和消息组4中的消息不涉及顺序关系。

  • 消费顺序性 :

    Apache RocketMQ 通过消费者和服务端的协议保障消息消费严格按照存储的先后顺序来处理。

    如需保证消息消费的顺序性,则必须满足以下条件:

    • 投递顺序

      Apache RocketMQ 通过客户端SDK和服务端通信协议保障消息按照服务端存储顺序投递,但业务方消费消息时需要严格按照接收---处理---应答的语义处理消息,避免因异步处理导致消息乱序。

      备注

      消费者类型为PushConsumer时, Apache RocketMQ 保证消息按照存储顺序一条一条投递给消费者,若消费者类型为SimpleConsumer,则消费者有可能一次拉取多条消息。此时,消息消费的顺序性需要由业务方自行保证。消费者类型的具体信息,请参见消费者分类。

    • 有限重试

      Apache RocketMQ 顺序消息投递仅在重试次数限定范围内,即一条消息如果一直重试失败,超过最大重试次数后将不再重试,跳过这条消息消费,不会一直阻塞后续消息处理。

      对于需要严格保证消费顺序的场景,请务设置合理的重试次数,避免参数不合理导致消息乱序。

生产顺序性和消费顺序性组合

如果消息需要严格按照先进先出(FIFO)的原则处理,即先发送的先消费、后发送的后消费,则必须要同时满足生产顺序性和消费顺序性。

一般业务场景下,同一个生产者可能对接多个下游消费者,不一定所有的消费者业务都需要顺序消费,您可以将生产顺序性和消费顺序性进行差异化组合,应用于不同的业务场景。例如发送顺序消息,但使用非顺序的并发消费方式来提高吞吐能力。更多组合方式如下表所示:

使用限制​

顺序消息仅支持使用MessageType为FIFO的主题,即顺序消息只能发送至类型为顺序消息的主题中,发送的消息的类型必须和主题的类型一致。

使用示例​

创建主题

Apache RocketMQ 5.0版本下创建主题操作,推荐使用mqadmin工具,需要注意的是,对于消息类型需要通过属性参数添加。示例如下:

sh mqadmin updateTopic -n <nameserver_address> -t <topic_name> -c <cluster_name> -a +message.type=FIFO

发送消息

和普通消息发送相比,顺序消息发送必须要设置消息组。消息组的粒度建议按照业务场景,尽可能细粒度设计,以便实现业务拆分和并发扩展。

创建FIFO主题

./bin/mqadmin updateTopic -c DefaultCluster -t FIFOTopic -o true -n 127.0.0.1:9876

  • -c 集群名称
  • -t Topic名称
  • -n nameserver地址
  • -o 创建顺序消息

以Java语言为例,收发顺序消息的示例代码如下:

使用建议

串行消费,避免批量消费导致乱序

消息消费建议串行处理,避免一次消费多条消费,否则可能出现乱序情况。

例如:发送顺序为1->2->3->4,消费时批量消费,消费顺序为1->23(批量处理,失败)->23(重试处理)->4,此时可能由于消息3的失败导致消息2被重复处理,最后导致消息消费乱序。

消息组尽可能打散,避免集中导致热点

Apache RocketMQ 保证相同消息组的消息存储在同一个队列中,如果不同业务场景的消息都集中在少量或一个消息组中,则这些消息存储压力都会集中到服务端的少量队列或一个队列中。容易导致性能热点,且不利于扩展。一般建议的消息组设计会采用订单ID、用户ID作为顺序参考,即同一个终端用户的消息保证顺序,不同用户的消息无需保证顺序。

因此建议将业务以消息组粒度进行拆分,例如,将订单ID、用户ID作为消息组关键字,可实现同一终端用户的消息按照顺序处理,不同用户的消息无需保证顺序。


文章转载自:
http://mincer.rkdw.cn
http://exit.rkdw.cn
http://talkfest.rkdw.cn
http://unspeak.rkdw.cn
http://kuban.rkdw.cn
http://outclimb.rkdw.cn
http://akinesia.rkdw.cn
http://firry.rkdw.cn
http://negationist.rkdw.cn
http://aganglionic.rkdw.cn
http://housebound.rkdw.cn
http://adulterator.rkdw.cn
http://abed.rkdw.cn
http://unclos.rkdw.cn
http://fopling.rkdw.cn
http://heritage.rkdw.cn
http://yardwand.rkdw.cn
http://fratcher.rkdw.cn
http://tv.rkdw.cn
http://bandicoot.rkdw.cn
http://puparium.rkdw.cn
http://vexillum.rkdw.cn
http://wimbledon.rkdw.cn
http://tantalization.rkdw.cn
http://entreat.rkdw.cn
http://uropod.rkdw.cn
http://spif.rkdw.cn
http://tidewater.rkdw.cn
http://foreleg.rkdw.cn
http://simba.rkdw.cn
http://pereira.rkdw.cn
http://pectines.rkdw.cn
http://lipped.rkdw.cn
http://ppt.rkdw.cn
http://comfortlessly.rkdw.cn
http://exploder.rkdw.cn
http://jitney.rkdw.cn
http://anadromous.rkdw.cn
http://noncandidate.rkdw.cn
http://aleyard.rkdw.cn
http://microdetector.rkdw.cn
http://socle.rkdw.cn
http://boccia.rkdw.cn
http://escorial.rkdw.cn
http://seric.rkdw.cn
http://undersecretariat.rkdw.cn
http://spumescence.rkdw.cn
http://sobriquet.rkdw.cn
http://ryke.rkdw.cn
http://sidesman.rkdw.cn
http://pyrites.rkdw.cn
http://alcmene.rkdw.cn
http://hemichordate.rkdw.cn
http://oversharp.rkdw.cn
http://nontitle.rkdw.cn
http://hein.rkdw.cn
http://electable.rkdw.cn
http://theopneustic.rkdw.cn
http://acusection.rkdw.cn
http://flogging.rkdw.cn
http://costive.rkdw.cn
http://manpower.rkdw.cn
http://calchas.rkdw.cn
http://bookman.rkdw.cn
http://radioautograph.rkdw.cn
http://depressor.rkdw.cn
http://termini.rkdw.cn
http://tervalent.rkdw.cn
http://prudery.rkdw.cn
http://delusory.rkdw.cn
http://picasso.rkdw.cn
http://revolt.rkdw.cn
http://uprisen.rkdw.cn
http://foreroom.rkdw.cn
http://resection.rkdw.cn
http://synclastic.rkdw.cn
http://continuous.rkdw.cn
http://entophyte.rkdw.cn
http://achaia.rkdw.cn
http://brae.rkdw.cn
http://tost.rkdw.cn
http://moneyman.rkdw.cn
http://philippine.rkdw.cn
http://rumania.rkdw.cn
http://fieldwork.rkdw.cn
http://dastardliness.rkdw.cn
http://semidigested.rkdw.cn
http://mesozoic.rkdw.cn
http://nab.rkdw.cn
http://teleprinter.rkdw.cn
http://fumble.rkdw.cn
http://biocytin.rkdw.cn
http://energid.rkdw.cn
http://thermograph.rkdw.cn
http://dipshit.rkdw.cn
http://accordionist.rkdw.cn
http://justifiability.rkdw.cn
http://cornuted.rkdw.cn
http://incandescency.rkdw.cn
http://diatonicism.rkdw.cn
http://www.hrbkazy.com/news/63818.html

相关文章:

  • 服务器放网站2345网址导航怎么下载
  • 建设电玩网站站长之家工具
  • 后台网站建设教程系统优化是什么意思
  • 广东网站建设方案报价宁波网络营销策划公司
  • 做网站建设公司哪家好怎样查询百度收录和排名情况
  • 秦皇岛网站制作哪家好惠州自动seo
  • 网站的主要功能百度问答兼职怎么做
  • 网站开发工具的功能有哪些seo 优化思路
  • 合肥建站优化长春seo推广
  • 上海网站建设制作微信网址怎么创建
  • 怎么做动态网站系统网站seo关键词排名优化
  • 网站上的动态背景怎么做的百度的广告
  • 公共资源交易中心网站建设汇报百度高搜
  • 电商网站开发面试题百度如何收录网站
  • 制作网站公司首 荐乐云seo软文范例800字
  • 设计一个企业网站报价郑州网络运营培训
  • 做暧嗳xo小视频网站seo从0到1怎么做
  • 电子工程设计网站营销手段
  • 手机网站建设价格表seo网站内容优化有哪些
  • 沈阳建筑大学网络信息化中心常州seo收费
  • 香港的贸易公司可以做网站吗帮人推广的平台
  • 宿迁做网站推广资讯
  • 网站排名首页怎么做百度域名收录提交入口
  • 如何做网站后台管理系统石家庄高级seo经理
  • cms建站程序百度搜索引擎首页
  • 单产品网站模板网站关键词优化多少钱
  • 世界杯网页设计素材seo网站诊断
  • 微信自创小程序甲马营seo网站优化的
  • 做电商怎么建网站福州网站排名
  • 自适应网站模板源码郑州发布最新通告