一、背景引入这篇文章,我们来聊聊在线上生产环境使用消息中间件技术的时候,从前到后的全链路到底如何保证数据不能丢失。这个问题,在互联网公司面试的时候高频出现,而且也是非常现实的生产环境问题。如果你的简历中写了自己熟悉MQ技术(RabbitMQ、RocketMQ、Kafka),而且在项目里有使用的经验,
一、背景引入这篇文章,我们来聊聊在线上生产环境使用消息中间件技术的时候,从前到后的全链路到底如何保证数据不能丢失。这个问题,在互联网公司面试的时候高频出现,而且也是非常现实的生产环境问题。如果你的简历中写了自己熟悉MQ技术(RabbitMQ、RocketMQ、Kafka),而且在项目里有使用的经验,
一前情回顾上篇文章《做了几年开发,你知道自己的系统为什么要用消息中间件吗?》,给大家讲了讲消息中间件引入系统架构的作用,主要是解决哪些问题的。其比较常见的实践场景是:复杂系统的解耦复杂链路的异步调用瞬时高峰的削峰处理二、正式开始这篇文章给大家讲讲,如果你在系统架构里引入了消息中间件之后,会有
一、写在前面上一篇文章咱们聊了聊TCC分布式事务,对于常见的微服务系统,大部分接口调用是同步的,也就是一个服务直接调用另外一个服务的接口。这个时候,用TCC分布式事务方案来保证各个接口的调用,要么一起成功,要么一起回滚,是比较合适的。但是在实际系统的开发过程中,可能服务间的调用是异步的。也就是说,
一、前情提示上篇文章:《一篇全面而且透彻的RabbitMQ性能优化指南!》,我们分析了RabbitMQ开启手动ack机制保证消费端数据不丢失的时候,prefetch机制对消费者的吞吐量以及内存消耗的影响。通过分析,我们知道了prefetch过大容易导致内存溢出,prefetch过小又会导致消费吞
一、前情回顾上篇文章《为什么要使用MQ消息中间件?这几个问题必须拿下!》,给大家讲了讲消息中间件引入系统架构的作用,主要是解决哪些问题的。其比较常见的实践场景是:复杂系统的解耦复杂链路的异步调用瞬时高峰的削峰处理二、正式开始这篇文章给大家讲讲,如果你在系统架构里引入了消息中间件之后,会有哪些
一、前情回顾针对那种工作年限比较长的资深的同学,可能会开始就候选人所在公司使用的消息中间件,深入里面的技术细节,比如让你聊聊RocketMQ的架构原理和核心源码。但是另外一种面试风格,会先从你们的项目和业务入手进行考察,比如像下面这样:消息中间件在你们生产项目里具体是哪个业务场景下落地的?这个业务场
写在前面对于常见的微服务系统,大部分接口调用是同步的,也就是一个服务直接调用另外一个服务的接口。这个时候,用TCC分布式事务方案来保证各个接口的调用,要么一起成功,要么一起回滚,是比较合适的。但是在实际系统的开发过程中,可能服务间的调用是异步的。也就是说,一个服务发送一个消息给MQ,即消息中间件,比
引言这篇文章开始,我们把消息中间件这块高频的面试题给大家说一下,也会涵盖一些MQ中间件常见的技术问题。假如面试官看你简历里写了MQ中间件的使用经验,很可能会有如下问题:你们公司生产环境用的是什么消息中间件?为什么要在系统里引入消息中间件?引入消息中间件之后会有什么好处以及坏处?好,我们一个个的来分析
在高并发的场景下,异步是一个极其重要的优化方向。前段时间,生产环境发生一次事故,笔者认为事故的场景非常具备典型性 。写这篇文章,笔者想和大家深入探讨该场景的架构优化方案。希望大家读完之后,可以对异步有更深刻的理解。1.业务场景老师登录教研平台,会看到课程列表,点击课程后,课程会以视频的形式
大家好,欢迎来到Tlog4J课堂,我是Jensen。记录今天发生的一次生产故障以及故障处理全过程。问题背景需求背景是这样的:产品要求订单过售后期后,资金平台需要对这些订单进行结算,并把虚拟资产入账到下单客户的虚拟账户。因为我们是按业务领域拆分多个微服务的,为了解耦订单与资金平台,我们选择了MQ异步消
在前面的文章中,我们实现了用户微服务、商品微服务和订单微服务之间的远程调用,并且实现了服务调用的负载均衡。也基于阿里开源的Sentinel实现了服务的限流与容错,并详细介绍了Sentinel的核心技术与配置规则。简单介绍了服务网关,并对SpringCloudGateway的核心架构进行了简要说明,也
什么是耦合?耦合,是架构中,本来不相干的代码、模块、服务、系统因为某些原因联系在一起,各自独立性差,影响则相互影响,变动则相互变动的一种架构状态。感官上,怎么发现系统中的耦合?作为技术人,每每在心中骂上下游,骂兄弟部门,“这个东西跟我有什么关系?为什么需要我来配合做这个事情?”。明明不应该联动,却要
据不完全统计,工业级别的代码,几乎有三分之二都是在处理异常情况。跟很多面试官聊过,在面试中如何考察一个应试者的思维是否周全,比较好的方法就是考察他是否能够思考周全,想到所有异常情况的处理方案。相信大家都使用过消息MQ,他可以很好地进行系统解耦,减低变成的复杂度,又可以进行削峰,增加系统在
作为一个后端程序员,MVC三层架构的模式相信大家都不会陌生,三层分别从上而下排布,只能由上层调用下层。一般越往下层越通用,越上层越细节。随着某些核心业务的访问量发展,通常我们需要去进行优化的措施,比如加缓存,加MQ,换数据源缓存可选redis,memcacheMQ可选kafka,rocketmq,r
最近小千会听到很多学员说,在面试大型互联网公司的时候,很可能会被问到消息队列的问题:在何种场景下使用了消息中间件?为什么要在系统里引入消息中间件?如何实现幂等?链式调用是我们在写程序时候的一般流程,为了完成一个整体功能,会将其拆分成多个函数(或子模块),比如模块A调用模块B,模块B调用模
前几天,杨紫琼同学在知识星球提问,说公司要切换MQ,从一个旧的服务商升级为新的服务商,问有没有什么好方案。这个需求估计还挺普遍的,这里分享一些经验。一、MQ架构简述如上图,使用MQ异步通信,一般分为三层:消息发送方:使用MQ客户端生成消息。复制MQ-client::SendMsg(top
大家平时也有用到一些消息中间件(MQ),但是对其理解可能仅停留在会使用API能实现生产消息、消费消息就完事了。图片来自pexels对MQ更加深入的问题,可能很多人没怎么思考过。比如,你跳槽面试时,如果面试官看到你简历上写了熟练掌握消息中间件。那么很可能给你发起如下4个面试连环炮:为什么要使用MQ?使
本文经授权转自公众号:石杉的架构笔记概述大家平时也有用到一些消息中间件(MQ),但是对其理解可能仅停留在会使用API能实现生产消息、消费消息就完事了。对MQ更加深入的问题,可能很多人没怎么思考过。比如,你跳槽面试时,如果面试官看到你简历上写了,熟练掌握消息中间件,那么很可能给你发起如下4个面试连环炮
这篇文章我们会把消息中间件这块高频的面试问题来给大家说一下,也会涵盖一些MQ中间件常见的技术问题。假如说面试官看你简历里写了MQ中间件的使用经验,很可能会有如下的问题:你们公司生产环境用的是什么消息中间件?为什么要在系统架构中引入消息中间件?引入消息中间件之后会有什么好处以及坏处?好,下