Apache RocketMQ

互联网公司的面试官是如何360°无死角考察候选人的?

淺唱寂寞╮ 提交于 2020-11-18 18:27:15
作者: 石杉的架构笔记 一、写在前面 最近收到不少读者反馈,说自己在应聘一些中大型互联网公司的Java工程师岗位时遇到了不少困惑。 这些同学说自己也做了精心准备,网上搜集了不少Java面试题,然而实际去互联网公司面试才发现,人家问的,和你准备的对不上号,这就很尴尬了。 二、先来体验一个真实的面试连环炮 好,闲话不多说,我们进入正题! 本系列文章,我们将会从消息中间件、分布式缓存、分布式搜索、分布式架构、海量数据、NoSQL、高并发、高可用、高性能、数据库、JVM虚拟机等各方面聊一下面试中的高频技术问题。 现在一些中大型互联网公司的面试官,在面试候选人时,一般都会采取连环炮的策略来深挖一个候选人的技术水平。 举个例子,比如说看你简历上写了熟悉消息中间件(MQ技术)。那么可能我们就会有一个类似下面这样的连环炮式发问: 说说你们公司线上生产环境用的是什么消息中间件? 那你们线上系统是有哪些技术挑战,为什么必须要在系统里引入消息中间件? 你们的消息中间件技术选型为什么是RabbitMQ? 为什么不用RocketMQ或者是Kafka?技术选型的依据是什么? 你们怎么保证消息中间件的高可用性?避免消息中间件故障后引发系统整体故障? 使用消息中间件技术的时候,你们怎么保证投递出去的消息一定不会丢失? 你们怎么保证投递出去的消息只有一条且仅仅一条,不会出现重复的数据?

RocketMQ如何应对每天1500亿条的数据处理?

狂风中的少年 提交于 2020-11-18 14:39:52
同程艺龙的机票、火车票、汽车票、酒店相关业务已经接入了 RocketMQ,用于流量高峰时候的削峰,以减少后端的压力。 同时,对常规的系统进行解耦,将一些同步处理改成异步处理,每天处理的数据达 1500 亿条。 在近期的 Apache RocketMQ Meetup 上,同程艺龙机票事业部架构师查江,分享了同程艺龙的消息系统如何应对每天 1500 亿条的数据处理。 通过此文,您将了解到: 同程艺龙消息系统的使用情况 同程艺龙 消息系统的 应用场景 技术上踩过的坑 基于 RocketMQ 的改进 同程艺龙消息系统的使用情况 RocketMQ 集群分为 Name Server 和 Broker 两部分,Name Server 用的是双主模式,一个是考虑性能,另一个考虑安全性。 在纯数据的 Broker 分成很多组,每个组里面分为 Master 和 Slave。 目前,我们的机票、火车票、汽车票、酒店相关业务已经接入了 RocketMQ,用于流量高峰时候的削峰,以减少后端的压力。 同时,对常规的系统进行解耦,将一些同步处理改成异步处理,每天处理的数据达 1500 亿条。 选择 RocketMQ 的原因是: 接入简单,引入的 Java 包比较少 纯 Java 开发,设计逻辑比较清晰 整体性能比较稳定的,Topic 数量大的情况下,可以保持性能 同程艺龙消息系统的应用场景 退订系统

消息疯狂堆积!RocketMQ 出 Bug 了?

一曲冷凌霜 提交于 2020-11-15 17:46:24
前言 用过 MQ 的同学,可能会遇到过 消息堆积 的问题。而我最近也踩上了这个坑,但是发现结果竟然是这么一个意料之外的原因而导致的。 正文 那一晚月和风高,我正准备踏上回家的路,突然收到告警短信轰炸! “MQ 消息堆积告警 [TOPIC: XXX] ” 肥壕心里“万只草泥马崩腾~” 第一反应是:“怎么肥事?刚下班就来搞事情???” 于是乎赶回公司赶紧打开电脑,登上 RocketMQ 后台查看(公司自己搭建的开源版RocketMQ) 握草 (キ`゚Д゚´)!!! 竟然堆积了3亿多条消息了??? 要知道出现消息堆积无在乎这个问题: 生产者的生产速度 >> 消费者的处理速度 生产者的生产速度骤增,比如生产者的流量突然骤增 消费速度变慢,比如消费者实例 IO 阻塞严重或者宕机 擦了一下头上的冷汗 来源: oschina 链接: https://my.oschina.net/u/4415646/blog/4497685

你知道Redis可以实现延迟队列吗?

穿精又带淫゛_ 提交于 2020-11-14 17:03:41
点击上方蓝色字体,选择“设为星标” 回复”资源“获取整理的海量电子书 作者:_BKing 来源:www.cnblogs.com/xiaowei123/p/13222710.html 最近,又重新学习了下Redis,深深被Redis的魅力所折服,Redis不仅能快还能慢(我想也这么优秀o(╥﹏╥)o),简直利器呀 咳咳咳,大家不要误会,本文很正经的啦!伙伴们跟我一起冲呀,我们一起去爬爬这座延时队列的山峰,探一探它究竟到底有高。 那接下来开始我们的旅行啦~,我们都知道Redis是一种基于内存的单进程单线程数据库(Redis6.0开始之后支持多线程啦!),处理速度都非常快。那么为何Redis又能慢呢?原来,这里说的慢是指Redis可以设置一些参数达到慢处理的结果。(这就是为什么Redis既能快又能慢啦!) 那接下来开始讲讲我们的Redis在队列中如何实现延时的情况: 在我们日常生活中,我们可以发现: 在淘宝、京东等购物平台上下单,超过一定时间未付款,订单会自动取消。 打车的时候,在规定时间没有车主接单,平台会取消你的单并提醒你暂时没有车主接单。 点外卖的时候,如果商家在10分钟还没接单,就会自动取消订单。 收快递的时候,如果我们没有点确认收货,在一段时间后程序会自动完成订单。 在平台完成订单后,如果我们没有在规定时间评论商品,会自动默认买家不评论。 ....... 这时

太狠了!阿里大牛纯手写RabbitMQ 笔记,GitHub 70K+星,你不服不行

╄→гoц情女王★ 提交于 2020-11-13 13:12:35
RabbitMQ 作为目前应用相当广泛的消息中间件,在企业级应用、微服务应用中充当着重要的角色。特别是在一些典型的应用场景以及业务模块中具有重要的作用,比如业务服务模块解耦,异步通信,高并发限流,超时延迟处理等均有广泛的应用! 你在面试相关岗位的时候,是不是也在为这些面试题发愁 为什么使用MQ?MQ的优点? 消息队列有什么优缺点?RabbitMQ有什么优缺点? 你们公司生产环境用的是什么消息中间件? Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点? MQ 有哪些常见问题?如何解决这些问题? 什么是RabbitMQ? 如何保证消息不被重复消费?或者说,如何保证消息消费时的幂等性? 等等等等………………………… 问来问去,也就差不多蒙了………… 如果你也正好在 RabbitMQ消息中间件 方面理解的不透彻,应对面试官的提问有些发怵。这里小编就要给大家分享一个 RabbitMQ 核心笔记了,图文并茂,非常适合有需要学习RabbitMQ消息中间件的朋友!由于篇幅原因,有需要RabbitMQ核心笔记完整文档可在文末获取免费领取方式! 总目录 1. 消息中间件概述 2. 安装及配置 RabbitMQ 3. RabbitMQ 入门 4. AMQP 5. RabbitMQ 工作模式 6.Spring t Boot 整合 RabbitMQ 7. RabbitMQ 高级

RocketMQ与kafka对比

穿精又带淫゛_ 提交于 2020-11-12 17:33:31
淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用Mysql作为消息存储媒介,可完全水平扩容,为了进一步降低成本,我们认为存储部分可以进一步优化,2011年初,Linkin开源了Kafka这个优秀的消息中间件,淘宝中间件团队在对Kafka做过充分Review之后,Kafka无限消息堆积,高效的持久化速度吸引了我们,但是同时发现这个消息系统主要定位于日志传输,对于使用在淘宝交易、订单、充值等场景下还有诸多特性不满足,为此我们重新用Java语言编写了RocketMQ,定位于非日志的可靠消息传输(日志场景也OK),目前RocketMQ在阿里集团被广泛应用在订单,交易,充值,流计算,消息推送,日志流式处理,binglog分发等场景。 数据可靠性 RocketMQ支持异步实时刷盘,同步刷盘,同步复制,异步复制 卡夫卡使用异步刷盘方式,异步复制/同步复制 总结:RocketMQ的同步刷盘在单机可靠性上比Kafka更高,不会因为操作系统Crash,导致数据丢失。Kafka同步Replication理论上性能低于RocketMQ的同步Replication,原因是Kafka的数据以分区为单位组织,意味着一个Kafka实例上会​​有几百个数据分区,RocketMQ一个实例上只有一个数据分区,RocketMQ可以充分利用IO组Commit机制,批量传输数据

阿里内部P8大神架构师都在用的神仙级Spring Cloud文档,赶紧学起来

谁都会走 提交于 2020-11-11 10:24:59
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。值得一提的是Spring Cloud Alibaba对Dubbo做了很好的兼容,同时也提供了一些强大的功能,如 Sentinel 流控 ,Seata 分布式事务,Nacos 服务发现与注册等等。 但现在网上学习SpringCloud的资料要么不全,要么很少,完整的就更别说了, 所以今天给大家免费分享的这个关于Spring Cloud的学习文档,图文并茂,量身打造,非常适合再学习Spring Cloud 的朋友观看!下面来看看这份Spring Cloud 学习文档吧! 由于篇幅问题,为了不影响阅读,这份完整的Spring Cloud 学习文档已经整理好了,见文末获取 一、微服务概念 随着互联网的发展,网站应用的规模也在不断的扩大,进而导致系统架构也在不断的进行变化。从互联网早起到现在

分布式事务之深入理解什么是2PC、3PC及TCC协议?

情到浓时终转凉″ 提交于 2020-11-08 23:15:35
导读 在上一篇文章 《【分布式事务】基于RocketMQ搭建生产级消息集群?》 中给大家介绍了基于RocketMQ如何搭建生产级消息集群。因为 本系列文章最终的目的是介绍基于RocketMQ的事物消息来解决分布式系统中的数据一致性问题 ,所以先给大家率先介绍了RocketMQ消息集群的搭建。 原本是想着在这篇文章中直接介绍RocketMQ的事务消息特性,但是在梳理的过程中作者发现对于 分布式事务的概念 ,可能还会有很多同学不理解或者理解得不是很深刻的地方,而跳过这些基本概念直接去学习上层的实践可能并不是一件很好的事情,因此在这篇文章中,作者打算重点给大家先介绍下分布式事务相关的基本概念,诸如 分布式事务、2PC、3PC、TCC 之类的基本问题,之后再单独去介绍RocketMQ事务消息相关的实践。 数据库事务的概念 在讲述分布式事务的概念之前,我们先来回顾下事务相关的一些概念。 事务的基本概念: 就是一个 程序执行单元,里面的操作要么全部执行成功,要么全部执行失败 ,不允许只成功一半另外一半执行失败的事情发生。例如一段事务代码做了两次数据库更新操作,那么这两次数据库操作要么全部执行成功,要么全部回滚。 事务的基本特性 : 我们知道 事务有4个非常重要的特性 ,即我们常说的( ACID )。 Atomicity(原子性) :是说事务是一个不可分割的整体,所有操作要么全做,要么全不做

Linux下删除文件系统空间不释放的问题

天涯浪子 提交于 2020-11-08 16:32:56
删除了Linux下的一个文件,但是系统空间并没有被释放。 如下:/home/hadmin/data/hadoop 使用了1.3T的空间,但是实际只使用了600多G 原因是我删除了一个600多G的文件,但是这个文件由于正在使用,所以Linux没有释放其空间。 1、首先获得一个已经被删除可是仍然被应用程序占用的文件列表,例如以下所看到的: 命令:lsof |grep deleted 2、查看占用文件的进程 命令:ps -ef | grep 368480 3、重启进程 杀掉进程之后,重启进程。 命令:kill -9 368480 命令:nohup sh /home/hadmin/alibaba-rocketmq/bin/mqbroker -c /home/hadmin/alibaba-rocketmq/conf/slave.properties & 重新查看磁盘空间,确认磁盘空间已经被释放。 来源: oschina 链接: https://my.oschina.net/u/4284509/blog/3933455

最中肯的Redis规范全在这了

被刻印的时光 ゝ 提交于 2020-11-08 13:35:56
Redis功能强大,数据类型丰富,再快的系统,也经不住疯狂的滥用。通过禁用部分高风险功能,并挂上开发的枷锁,业务更能够以简洁、通用的思想去考虑问题,而不是绑定在某种实现上。 Redis 根据不同的用途,会有不同的持久化策略和逐出策略,所以,在使用和申请 Redis 集群前,请明确是用来做缓存还是存储。redis 的集群有主从和 cluster 两种模式,各有优缺点。以下规范不区分集群模式,我们分别从使用场景和操作限制两方面说明。 使用规范 冷热数据区分 虽然 Redis支持持久化,但将所有数据存储在 Redis 中,成本非常昂贵。建议将热数据 (如 QPS超过 5k) 的数据加载到 Redis 中。低频数据可存储在 Mysql、 ElasticSearch中。 业务数据分离 不要将不相关的数据业务都放到一个 Redis中。一方面避免业务相互影响,另一方面避免单实例膨胀,并能在故障时降低影响面,快速恢复。 消息大小限制 由于 Redis 是单线程服务,消息过大会阻塞并拖慢其他操作。保持消息内容在 1KB 以下是个好的习惯。严禁超过 50KB 的单条记录。消息过大还会引起网络带宽的高占用,持久化到磁盘时的 IO 问题。 连接数限制 连接的频繁创建和销毁,会浪费大量的系统资源,极限情况会造成宿主机宕机。请确保使用了正确的 Redis 客户端连接池配置。 缓存 Key 设置失效时间