• 关于MQ,你必须知道的!
    码农每日一题长按关注,工作日每天分享一个技术知识点。转载自 https://www.cnblogs.com/zhuoqingsen/p/MQ.html消息队列的应用场景和好处异步-流量削峰我们先来看下传统的服务器接收处理请求的流程:如上图,在不使用消息队列服务器的时候,用户的请求都直怼数据库,在高并发的情况下数据库压力剧增,不仅使得响应速度变慢,还可能因此而挂掉数据库,导致用户页面直接报错,项目经理找上门,然后*#!%@!#** ......(PS:尽管是某服务挂了,但某宝的用户页面提示信息一定会甩锅给网络...
  • 从源码入手,全面解析 MQ 的设计与实现
    说起消息队列,早期有“上古”的 ActiveMQ,如今有应用广泛的 RocketMQ、Kafka,到最近推出的 Pulsar,伴随着技术的持续发展,一代又一代的消息队列不断推陈出新,性能越来越强大,功能也日臻丰富完善。消息队列本身功能简洁、结构清晰,入门简单且有足够的深度,作为使用最广泛的中间件,涉及的底层技术非常全面,适合用来深入分析和学习分布式系统等一些复杂的相关技术,让你一通百通。你可能会问,我是普通程序员, 工作中只会使用消息队列等“轮子”来实现业务,并没有机会参与到“轮子”的开发,学习这些底层的技...
  • 从源码入手,全面解析 MQ 的设计与实现(通信、存储难点!
    福利:通过零度海报购买可以享受返现福利(返现24),优惠码是 ILOVEMQ666 (刚刚才知道的) ,综上所述,68-24-5=39块。说起消息队列,早期有“上古”的 ActiveMQ,如今有应用广泛的 RocketMQ、Kafka,到最近推出的 Pulsar,伴随着技术的持续发展,一代又一代的消息队列不断推陈出新,性能越来越强大,功能也日臻丰富完善。消息队列本身功能简洁、结构清晰,入门简单且有足够的深度,作为使用最广泛的中间件,涉及的底层技术非常全面,适合用来深入分析和学习分布式系统等一些复杂的相关技术...
  • 从源码入手,解析MQ架构设计与实现
    MQ在互联网架构中应用及其广泛,涉及的底层技术非常全面,适合用来深入分析和学习分布式系统等一些复杂的相关技术,彻底弄透了MQ,基本上互联网分布式架构体系都能够掌握得七七八八。我之前写过几篇MQ架构相关的文章,汇总在《MQ可达性+幂等性+延时性架构设计》一文里,大家讨论得还挺多,但对MQ的代码细节及应用案例讲的比较少,大家都觉得不过瘾。有没有系统且全面学习MQ架构,底层细节,最佳实践的方法呢?说到这里,就一定要给大家介绍一位高手,京东零售技术架构部资深架构师李玥,他在去年带领团队重构了京东自研的消息队列产品:...
  • 某互联网金融企业(4500W用户规模)如何将单体应用迁移到微服务?
    【摘要】本文以金融行业为例,完整讲述了如何将线上运行的单体应用无缝从0开始迁移到微服务的过程,同时也讲述了在微服务实施过程中需要哪些工具的支撑、哪些人的支撑,以及微服务架构下的新三板斧技术等。可以帮助在单体应用是否需要微服务化转型的决策提供非常好的参考思路,同时也可以给正在实施微服务阶段的企业提供全方位的指导,从而帮助大家找到正确的解决问题的思路。【作者】潘志伟,某金融企业,拥有十多年从业经验,精通微服务架构,精通大数据,拥有亿级用户平台架构经验,万级并发的API网关经验。微服务架构是互联网很热门的话题,是...
  • 5种分布式事务解决方案优缺点对比
    背景分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免。ACID指数据库事务正确执行的四个基本要素:原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)CAPCAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容忍性(Partition tolerance)。CAP 原则指的是,这三个要素最多...
  • 面试官:聊聊消息中间件在你们的项目业务里是如何落地的?
    公众号后台回复“学习”,获取作者独家秘制精品资料扫描下方海报二维码,试听课程:(课程详细大纲,请参见文末)业务场景介绍这篇文章,我们通过落地到某个具体业务系统的某个场景,看看如何使用消息中间件,然后其效果是什么。业务场景的话,咱们就用大家都很熟悉的电商业务为例,这里为了便于理解,对其做了一定的抽象和简化。还是来考虑一个下订单的业务流程,比如你下个订单,此时需要干几件事情:更新订单状态为“待发货”(耗时20ms)扣减商品库存(耗时100ms)增加会员积分(耗时80ms)附赠优惠券(耗时50ms)仓储调度发货(...
  • 通过源码告诉你,阿里的RocketMQ事务消息到底牛逼在哪?
    “得益于MQ削峰填谷,系统解耦,操作异步等功能特性,在互联网行业,可以说有分布式服务的地方,MQ都往往不会缺席。”由阿里自研的RocketMQ更是经历了多年的双十一高并发挑战,其中4.3.0版本推出了事务消息的新特性本文对RocketMQ 4.5.0版本事务消息相关的源码跟踪介绍,通过阅读可以知道:事务消息解决什么样的问题事务消息的实现原理及其设计亮点01—解决什么问题假设我所在的系统现在有这样一个场景:本地开启数据库事务进行扣款操作,成功后发送MQ消息给库存中心进行发货。有人会想到开启mybatis事务实...
  • RocketMQ 实现分布式事务,达到数据最终一致性
    阅读文本大概需要10分钟。前言在分布式环境下,经常会有跨服务的事务需求,典型的例子如: 服务A 为账户服务,服务B为包月服务,在服务A扣钱成功之后,要在服务B上做增加包月时长的操作,需要保证数据的一致性。本文主要描写如何在分布式环境下通过Rocket MQ的事务消息保证数据的最终一致性。注: 最终一致性是指在中间过程中,数据有可能不一致,但经过一段时间后(具体时长视网络延迟以及系统负载而定),数据最终会保持一致。RocketMQ 官方事务消息的代码例子https://rocketmq.apache.org/...
  • 高速飞机上换引擎,MQ如何实现平滑迁移?
    前几天,杨紫琼同学在知识星球提问,说公司要切换MQ,从一个旧的服务商升级为新的服务商,问有没有什么好方案。这个需求估计还挺普遍的,这里分享一些经验。 一、MQ架构简述如上图,使用MQ异步通信,一般分为三层:消息发送方:使用MQ客户端生成消息。MQ-client::SendMsg(topic, msg); MQ服务:中转消息。 消息接收方:使用MQ客户端消费消息。MQ-client::RecvMsg(topic, msg, CALLBACK_FUNC); 这是一个典型的pub-sub架构,如果要替换MQ供应商...
  • 天天都用消息队列,却不知道为啥要用MQ,这就有点尴尬了!
    要记住,不要给公司挖坑!所幸,RabbitMQ的社区十分活跃,可以解决开发过程中遇到的bug,这点对于中小型公司来说十分重要。在生产中,没人使用单机模式的消息队列。因此,作为一个合格的程序员,应该对消息队列的高可用有很深刻的了解。这个问题可以认为是消息队列领域的基本问题。其实无论是那种消息队列,造成重复消费原因其实都是类似的。正常情况下,消费者在消费消息时候,消费完毕后,会发送一个确认信息给消息队列,消息队列就知道该消息被消
  • 微服务架构专题四:如何保障微服务架构下的数据一致性
    随着微服务架构的推广,越来越多的公司采用微服务架构来构建自己的业务平台。微服务架构的数据一致性问题以电商平台为例,当用户下单并支付后,系统需要修改订单的状态并且增加用户积分。然而微服务架构下,每个微服务都有自己的数据库,导致微服务架构的系统不能简单地满足 ACID,我们就需要寻找微服务架构下的数据一致性解决方案。可靠消息服务和 MQ 消息组件,协调上下游消息的传递,并确保上下游数据的一致性。下游应用,监听 MQ 的消息并执行自身业务。
  • 我只是下了个订单,鬼知道我在微服务里经历了什么?
    DDD 领域驱动设计刚刚确实是梳理了一下模块,既然是微服务,就得进行服务的拆分,服务怎么进行拆分呢?貌似按照刚次梳理模块来划分也是可以的,不过这样好像显得我很是不专业,听说现在很多人都要使用 DDD来指导微服务的拆分。简单的说,在微服务实际的开发中,结合 DDD 的思想去划分所有属于自己的领域。实施 DDD 的关键第一点是使用通过的语言建立所有的聚合,实体,值对象。我们的目的是什么?时序图一个简单的下单流程,涵盖了几个领域:完美,接下来就可以开发微服务了。相比 Dubbo,Spring Cloud 可以说是微服务一整套的解决方案,在功能上是 Dubbo 的一个超级。
  • 面试题:用户在电商网站中购买成功了,那么它在微服务中经历了什么?
    当我傻啊,用户在电商网站购买成功,还在微服务中,那肯定就是有一套微服务架构的电商系统。DDD 领域驱动设计刚刚确实是梳理了一下模块,既然是微服务,就得进行服务的拆分,服务怎么进行拆分呢?简单的说,在微服务实际的开发中,结合 DDD 的思想去划分所有属于自己的领域。实施 DDD 的关键第一点是使用通过的语言建立所有的聚合,实体,值对象。我们的目的是什么?^_^等等,微服务的技术栈还未选型。相比 Dubbo,Spring Cloud 可以说是微服务一整套的解决方案,在功能上是 Dubbo 的一个超级。Dubbo 和 Spring Cloud 比喻,Dubbo 架构的微服务就像组装电脑,各个环节自由度很高。
  • ​面试官:你们是如何解决分布式事务问题的?
    现在面试,分布式系统成了标配,而分布式系统带来的分布式事务也成了标配了。比如 TCC 方案的网络问题、XA 方案的一致性问题。这个就是避免可能本地事务执行成功了,而确认消息却发送失败了。你找一个严格资金要求绝对不能错的场景,你可以说你是用的 TCC 方案;如果是一般的分布式事务场景,订单插入之后要调用库存服务更新库存,库存数据没有资金那么的敏感,可以用可靠消息最终一致性方案。
  • 我只是下了个订单,鬼知道我在微服务里经历了什么?
    DDD 领域驱动设计刚刚确实是梳理了一下模块,既然是微服务,就得进行服务的拆分,服务怎么进行拆分呢?貌似按照刚次梳理模块来划分也是可以的,不过这样好像显得我很是不专业,听说现在很多人都要使用 DDD来指导微服务的拆分。简单的说,在微服务实际的开发中,结合 DDD 的思想去划分所有属于自己的领域。实施 DDD 的关键第一点是使用通用的语言建立所有的聚合,实体,值对象。我们的目的是什么?时序图一个简单的下单流程,涵盖了几个领域:完美,接下来就可以开发微服务了。相比 Dubbo,Spring Cloud 可以说是微服务一整套的解决方案,在功能上是 Dubbo 的一个超级。
  • 分布式消息系统,设计要点。画龙画虎难画骨
    消息系统的设计要点,有很多。现在,很难有一个消息系统,能够兼顾下面提到的设计要点。高可靠消息系统的可靠性和性能是相悖的。同时,数据的完整性校验也是需要的,这也是类似kafka这种消息系统,数据量大的时候,启动时间非常长的原因。即确保消息至少被消费1次。对于消息吞吐量来说,是一个生产端、mq节点、消费端共同优化的结果。事务消息更加耗费性能,慎用。消息系统的作用消息系统在目前的分布式系统中设计中,作用越来越大。异常情况下,丢失几条消息,无伤大雅。但消息系统,可能关注的只是mq本身。
  • 漫画:架构师是吧?什么是哈希轮?
    通过MQ+分布式事务消息机制解耦了支付平台与第三方支付渠道之间的回调依赖及支付平台与业务接入方之间的回调依赖。Rocket MQ延迟消息对账延迟消息对账的主要实现方式就是在向第三方渠道发起支付请求后,向Rocket MQ服务器指定队列发送一条延迟对账消息。从结构上看,哈希时间轮是一个存储定时任务的环形队列。在具体实现哈希轮算法时可以根据实际应用场景设计不同的策略!
  • 分布式消息系统,设计要点。画龙画虎难画骨
    消息系统的设计要点,有很多。现在,很难有一个消息系统,能够兼顾下面提到的设计要点。高可靠消息系统的可靠性和性能是相悖的。同时,数据的完整性校验也是需要的,这也是类似kafka这种消息系统,数据量大的时候,启动时间非常长的原因。即确保消息至少被消费1次。事务消息更加耗费性能,慎用。缓冲 在服务层和缓慢的落分布式消息系统,设计要点地层作为缓冲层存在,作用与削峰类似,但主要用于服务内数据流转。异常情况下,丢失几条消息,无伤大雅。但消息系统,可能关注的只是mq本身。
  • 关于RocketMQ消息拉取与重平衡的一些问题探讨
    关于 push 模式下的消息循环拉取问题之前发表了一篇关于重平衡的文章:「Kafka重平衡机制」,里面有说到 RocketMQ 重平衡机制是每隔 20s 从任意一个 Broker 节点获取消费组的消费 ID 以及订阅信息,再根据这些订阅信息进行分配,然后将分配到的信息封装成 pullRequest 对象 pull 到 pullRequestQueue 队列中,拉取线程唤醒后执行拉取任务,流程图如下:但是其中有一些是没有详细说的,比如每次拉消息都要等 20s 吗?
活跃用户
《科技日报》是富有鲜明科技特色的综合性日报,是面向国内外公开发行的中央主流新闻媒体,是党和国家在科技领域的重要舆论前沿,是广大读者依靠科技创造财富、提升文明、刷新生活的服务平台,是中国科技界面向社会、连接世界的明亮窗口。
《中国银行保险报》是中国银行保险监督管理委员会主管唯一工作日报。
数字生活家,手机新娱乐
专业的中文 IT 技术社区,与千万技术人共成长。
数字公民的糖
腾讯新闻旗下腾讯科技官方账号,在这里读懂科技!
凤凰科技频道官方账号,带你直击真相。
TechWeb专注于互联网消费领域,每日专业提供互联网产品、智能设备及互联网服务等方面的最新资讯。
从思考,到创造
让创业者不再孤独@i黑马
《环球科学》杂志官方帐号 www.huanqiukexue.com
用极客视角,追踪你最不可错过的科技圈。有快闻、也有洞见;有脑洞、也有思考。
雷锋网,读懂智能&未来。
36氪是中国领先的新商业媒体,提供新锐深度的商业报道。我们强调趋势与价值,我们的slogan是:让一部分人先看到未来。
最好的中文人物报道
笑谈开发轶事,品味程序人生。
可能是最会用故事讲解技术本质的公众号!
以通俗易懂的方式讲解数据结构与算法、计算机网络,计算机基础等编程知识。
程序员职业规划:职场晋升之路;探讨程序员转化转管理之路。程序员学习管理之道:团队管理、项目管理、管理工具的推荐和使用经验。
促进软件测试领域知识的传播