-
消息队列消息队列中间件是分布式系统中的重要组件,主要解决应用解耦、异步处理、流量削峰等问题,实现高性能、高可用、可伸缩。常用的消息队列中间件有Kafka、RabbitMQ、ActiveMQ、RocketMQ等。应用场景1.异步处理场景说明:新用户注册成功以后需要发送通知邮件或通知短信;商城订创建之后需要给用户发送订单通知消息;因为消息通知通常牵涉到调用第三方的服务属于耗时操作,而对用户主进程有没有特别影响。可以在主线处理完成后把需要发送的通知消息放入消息队列由专用的消息发送服务处理,避免了主线程因为消息发送陷入等待。2.应用解耦场景说明:商城系统里用户下单后,订单系统需要通知库存系统减库存,通知积分系统给用户增加积分;秒杀场景下用户点击按钮后,如果参与秒杀成功秒杀系统需要通知订单系统创建订单;可以将待处理的订单放入消息队列,这样在用户下单后或者秒杀成功后,再有独立服务处理减库存、下秒杀订单等业务。3.流量削峰场景说明:在秒杀活动中一般流量会比较大导致访问量暴增,如果采用同步的方式秒杀系统需要处理的业务逻辑会很长,访问数据库频次会很高容易造成数据库崩溃。采用消息队列后,秒杀消息会按照次序统一放入队列中,订单处理服务会按照频次依次处理秒杀订单,防止大流量情况下造成数据库系统崩溃。4.日志处理场景说明:结合消息队列在系统中将需要日志记录的消息发送给队列,由消息队列负责日志的接受,由Logstash做日志解析统一成json输出给ElasticSearch,ElasticSearch负责日志的实时分析和存储。5.消息通信场景说明:消息队列一般内置有高校的通信机制,可以实现一对一、一对多的消息发送与接收,类似IM场景下的聊天效果。
-
华为云分布式消息服务DMS华为云分布式消息服务DMS是完全托管的消息队列服务,可完全兼容业界主流的Kafka、RabbitMQ、RocketMQ,为应用系统提供异步的、高可用的消息队列服务,实现应用解耦、突发流量处理以及与第三方应用的集成。分布式消息服务 Kafka版适用于构建实时数据管道、流式数据处理、第三方解耦、流量削峰去谷等场景,大规模、高可靠、高并发访问、可扩展且完全托管 即开即用 兼容开源Kafka 全托管服务 专业、可靠 高性能 高吞吐、低延时 安全防护 支持SASL_SSL企业类应用企业应用中,业务流程之间强耦合性,导致业务业务处理缓慢,单业务故障对整导致耦合业务异常。使用Kafka中间件则可以降低业务耦合,提高处理速度。优势业务高可用数据支持多副本保存,单节点故障不影响业务使用高性能请求处理时延可达毫秒级别系统解耦子系统间通过消息队列通信,避免相互耦合和影响物联网类应用物联网应用中,通常存在大量不同类型的数据客户端,会带来大量的数据流。使用Kafka则可以作为消息通道,将各种不同客户端的大量的数据收集起来,再通过数据分析系统从Kafka中获取数据进行分析处理并结合数据查询类应用提供数据查询。优势高并发提供合并和数据压缩的能力,吞吐量可达百万级TPS海量消息堆积数据可长期保存,消息堆积能力可动态扩展高性能请求处理时延可达毫秒级别分布式消息服务RabbitMQ版100%兼容开源RabbitMQ,支持广播、事务消息、消息路由、死信队列、优先级队列等,应用于秒杀、流控、系统解耦等场景 即开即用 兼容RabbitMQ 独占式体验 物理隔离 高性能 单队列10万TPS 数据安全 租户管理、审计企业类应用RabbitMQ 作为消息队列中间,可用于应用解耦,解决多系统、异构系统的数据交换问题,解耦生产者和消费者,适用于企业订单系统、库存系统优势事务消息 RabbitMQ支持事务,针对发送端、消费端都能进行消息的二次确认操作,确保消息发送及消费的成功镜像队列 RabbitMQ支持镜像队列,单个节点宕机后,仍可以做到消息不丢失系统解耦 子系统间通过消息队列通信,避免相互耦合和影响电商类应用电商秒杀、抢购等场景下,访问流量瞬时提升100倍以上,导致应用过载而宕机,在前端部署RabbitMQ可以缓解流量压力,避免尖峰流量对应用的影响优势高并发 单队列最高至10万TPS,并可通过队列数扩展提升整系统并发能力削峰填谷 将消息放入消息队列,后端服务异步对消息进行处理短视频应用在短视频应用场景下,存在消息刷屏、点赞、送礼、发红包等大量互动,瞬时吞吐量大,可靠性要求高,且需要对敏感词语进行筛选和过滤,RabbitMQ可作为消息通道解决这类问题优势事务消息 RabbitMQ支持事务,针对发送端、消费端都能进行消息的二次确认操作,确保消息发送及消费的成功削峰填谷 将消息放入消息队列,后端服务异步对消息进行处理分布式消息服务RocketMQ版兼容开源RocketMQ,提供顺序、延迟、定时、重投、死信、事务消息、会话消息等功能,适用于电商、金融等场景。 即开即用 全托管服务 低延迟 弹性高可靠 便捷管理 多样功能电商场景电商场景中通常会涉及到订单、支付和通知等等场景的业务处理。业务链通常都是多个系统相互协作完成一次作业,上层服务强依赖于下层服务,上层服务的性能会强依赖于下层服务,当业务链过深,则会严重影响外层服务的性能和用户体验。优势系统解耦 分布式消息服务RocketMQ版可以解除多个业务系统之间的耦合度,提升各系统的处理能力和响应速度。高可靠消息服务提供的定时、延迟等能力,满足需要订阅通知的电商场景。消息定时、延迟 分布式消息服务RocketMQ版提供的定时、延迟等能力,满足需要订阅通知的电商场景。金融场景相较于传统金融场景,互联网金融需要能及时响应互联网的快速变化。传统金融场景里共性的部分需要被抽取出来,进行细化为各个不同的微服务模块,构成基础的业务中台,基于业务中台提供的基本能力,用户可以在上层快速的构建多样的业务能力。优势解耦链接 分布式消息服务RocketMQ版因其优秀的解耦链接能力,增强了各微服务模块的处理能力和响应速度,在业务中台内扮演着不可或缺的角色。IoT场景IoT场景典型特点为海量终端接入,在大量终端接入的情况下,大量的数据汇聚在一起,实际不同的业务组件需要关注的信息只是其中某些类型的数据,如何在大量数据中快速识别出业务感兴趣的数据将会显得尤为重要。优势消息过滤 终端写入时为消息添加标签,指定该消息的类型,业务端消费时则可以指定只消费特定类型的标签,从而实现更好的业务处理
-
分布式消息服务(Distributed Message Service,简称DMS)是一项基于高可用分布式集群技术的消息中间件服务,提供了可靠且可扩展的托管消息队列,用于收发消息和存储消息。使用DMS,您可以创建消息队列,将消息队列作为一个传输消息的中转站,存储应用程序不同组件间传递的消息,从而做到在应用程序的不同组件之间传输消息时,不要求各个组件同时处于可用状态。DMS是分布式的队列系统,队列中的消息分布存储,且每条消息存储多个副本,以实现高可用性。消息队列具有如下属性:消息顺序普通队列支持“分区有序”和“全局有序”两种模式,高级队列均为分区有序。分区有序的队列通过分布式处理,支持更高的并发,但由于队列的分布式特性,DMS无法保证能够以接收消息的精确顺序进行消费。如果用户要求保持顺序,建议在每条消息中放置排序信息,以便在收到消息时对消息重新排序。全局有序的队列对消息消费遵循先入先出规则(FIFO),适用于对消费顺序要求较高的场景。至少一次传递在极少数情况下,当用户接收或删除消息时,存储消息副本的服务器之一可能不可用。如果出现这种情况,则该不可用服务器上的消息副本将不会被删除,并且在接收消息时可能会再次获得该消息副本。这被称为“至少一次传递”,因此,用户的应用程序应该设计为幂等的应用程序(即,如果应用程序多次处理同一条消息,与单次成功处理该条消息的效果等价)。 以下是我们整理的分布式消息服务DMS相关资料:分布式消息服务DMS产品官方文档https://support.huaweicloud.com/productdesc-dms/dms-pd-0001.html分布式消息服务DMS产品功能https://support.huaweicloud.com/productdesc-dms/dms-pd-0312001.html分布式消息服务DMS快速入门https://support.huaweicloud.com/qs-dms/index.html分布式消息服务DMS API参考https://support.huaweicloud.com/api-dms/dms-api-180522001.html开发者最佳实践挑战营(使用DMS Kafka优化消费者poll)https://education.huaweicloud.com/courses/course-v1:HuaweiX+CBUCNXP021+Self-paced/about
-
828选华为云,实惠更实用!研发与中间件专场全场3折起! Redis、Kafka、数字资产链、软件开发平台,首购低至1.98元! 下单抽FreeBuds耳机,满额送P50手机,助力企业转型云原生2.0! 活动有效期至2022年9月16日,上云正当时!>点击这里,马上进入活动专场<
-
【问题现象】 DWS集群监控面板不显示监控信息:即 数据仓库服务-》集群列表-》操作-》监控面板进入某个集群的监控页面,其中集群概览,监控-》主机监控,设置-》监控设置 没有数据,且弹出“获取集群 监控配置接口异常”【分析过程】 1.登录CDK Master,登录monitor容器查看日志 #kubectl get pod -n dws #kubectl -ti exec dms-monitoring-xxxxxx -n dws bash #vi logs/dms-monitoring.log 日志中大量出现"ERROR com.huawei.dws.dms.monitoring.util.ResponseFactory - receive empty row data, failed to gen response." 2.登录集群节点查看dms agent日志 #vi /home/Ruby/dms_workdir/log/initial.log 出现配置文件找不到,Can not find or read /home/Ruby/InitDms.json file failed 分析:在集群创建阶段,会创建/home/Ruby/InitDms.json,将参数{"dms.collection.apigateway.addr":"dws.dms.cn-global-1.eihcs.com","dmsVersion":"v1.0"}写入该文件 所以获取参数登录cdk查看controller的参数发现 dms.collection.apigateway.addr 这个参数配置为null 参考ces 找到对应的进行修改 3.查看对应的dwscollection服务的日志,出现 1) get token from fault cache failed Failed to obtain the token information 2) DWS.0001 The resource does not exist or is illegal 3) 查看collection 的日志有获取token失败的问题,对应访问controller的/v2.0/insight/instance接口日志也有token为null的情况,查看access.dns.domainName,access.dns.username,access.dns.pwd 三个参数,发现collection和controller的access.dns.pwd不一致然后从IAM获取token需要保证用户名,密码正确,所以需要将access.dns.pwd修改和controller的保持一致【解决方案】 1.针对分析中的2修改方案: 1)获取dms.collection.apigateway.addr参数,参考cesGateway.endpoint的值进行修改,在节点中ping dws.dms.cn-global-1.eihcs.com 是通的: 比如: cesGateway.endpoint=mo-ces.cn-global-1.eihcs.com:443 dms.collection.apigateway.addr=dws.dms.cn-global-1.eihcs.com 2)在每个节点创建用户用户组为Ruby:Ruby的文件/home/Ruby/InitDms.json,且写入内容 {"dms.collection.apigateway.addr":"dws.dms.cn-global-1.eihcs.com","dmsVersion":"v1.0"} 2.针对分析中3修改方案 1)修改collection中的参数access.dns.pwd和controller中一致,点击升级 2)重启dwscollection服务:kebectl delete pod dwscollection-xxx1 dwscollection-xxx2 -n dws 使用 kubectl get pod -n dws查看,等待两个的ready都为1/13.查看页面已经恢复正常 4.防止后面下发集群再现该问题,需要修改dwscontroller-x86_64服务参数dms.collection.apigateway.addr等升级成功,同时要kebectl delete pod dwscontroller-xxx -n dws 逐个删除dwscontroller容器,等待重新拉起
-
华为云IoT平台增强版和基础版均支持对接分布式消息服务DMS,开发者平台暂时不支持对接DMS调测,本节使用IoT平台基础版对接DMS进行测试。创建DMS队列操作步骤登录华为云-->进入控制台-->搜索DMS并进入DMS服务控制台-->创建队列在平台配置DMS服务认证信息AK/SK①获取AK/SK在公有云基本信息 > 我的凭证 > 管理访问密钥 中新增访问密钥,成功后将下载一个credentials.csv文件,文件中包含AK和SK②将AK/SK配置到IoT平台 规则引擎 > 创建规则 中配置规则引擎至此,DIS服务已配置完成,可以开始使用设备上报数据进行测试了在DMS控制台查看数据如图,监控图表中显示有数据,即表示数据已抵达DMS服务调用DMS接口获取数据详情请参考:分布式消息服务DMS API参考
推荐直播
-
TinyEngine低代码引擎系列第2讲——向下扎根,向上生长,TinyEngine灵活构建个性化低代码平台
2024/11/14 周四 16:00-18:00
王老师 华为云前端开发工程师,TinyEngine开源负责人
王老师将从TinyEngine 的灵活定制能力出发,带大家了解隐藏在低代码背后的潜在挑战及突破思路,通过实践及运用,帮助大家贴近面向未来低代码产品。
即将直播 -
华为云AI入门课:AI发展趋势与华为愿景
2024/11/18 周一 18:20-20:20
Alex 华为云学堂技术讲师
本期直播旨在帮助开发者熟悉理解AI技术概念,AI发展趋势,AI实用化前景,了解熟悉未来主要技术栈,当前发展瓶颈等行业化知识。帮助开发者在AI领域快速构建知识体系,构建职业竞争力。
去报名 -
华为云软件开发生产线(CodeArts)10月新特性解读
2024/11/19 周二 19:00-20:00
苏柏亚培 华为云高级产品经理
不知道产品的最新特性?没法和产品团队建立直接的沟通?本期直播产品经理将为您解读华为云软件开发生产线10月发布的新特性,并在直播过程中为您答疑解惑。
去报名
热门标签