Apache RocketMQ

还没使用过消息队列?这一份书单值得你好好看看!

强颜欢笑 提交于 2020-08-07 09:45:02
​ 如果想看更多技术好书,可以关注微信公众号【程序员书单】作者黄小斜,目前是阿里Java工程师,业余时间广泛读书,在公众号里除了分享程序员必读的技术书籍之外,也会推荐很多关于个人成长、投资理财等方面的书籍。你烦恼的每个问题,书中都有答案。 在这里,我们将为你推荐帮助程序员以及互联网从业者自我提升的各类好书、优质学习资源和工具,每周pick精品书单,解读经典书籍。 Java工程师往往容易忽视的一块知识点,其实就是Java网络编程,为什么呢,因为如果我想写一个Java Web项目,我只要用SSM就可以轻松搞定,写好我们的controller、service和dao就可以了,也就是只需要关心业务逻辑,不需要关心前端请求的路由、甚至是后端的负载均衡和网络请求处理,因为这些东西很多时候都被Nginx和Tomcat给吃掉了,Nginx帮我们做好了负载均衡,Tomcat则帮我们完成TCP连接的建立,HTTP请求的处理,把所有复杂的技术细节都给屏蔽了。 不过随着技术发展和更迭,大公司对于人才的要求也越来越高,对于高并发服务端编程能力的要求也在提高,比如在直播、实时通讯、游戏服务端开发等技术领域,通信协议和网络编程就成为了很重要的一个技术课题,相应的在Java领域,我们就必须要了解NIO、Linux epoll以及Netty等和网络通信相关的技术。如果你想做基础技术研发,比如消息队列

5 项大奖,70 项满分!阿里云全方位引领云原生技术升级

妖精的绣舞 提交于 2020-08-06 12:12:24
跟大家分享几个好消息: 在今天“2020 可信云线上峰会”上,中国信通院公布了多项可信云认证的评估结果。 阿里云原生在容器平台安全能力、函数及服务、分布式消息队列服务、可信云服务最佳实践(服务云)、可信云技术最佳实践(容器及管理)等评选中获得可信云认证! 多年来,阿里巴巴作为云原生领域的先行者、实践者,基于自身累积多年的最佳实践,对社区赋能,为企业提供普惠的云原生产品服务。在这次可信云评选中,阿里云原生更是拿到5项大奖,从技术到实践,以最全面的技术影响力推动云原生进入新的阶段! 下面我们来一一揭开这些奖项! NO.1:阿里云 49 个满分,获得可信云容器安全能力先进级认证 今天,信通院发布了国内云厂商的容器安全评估结果: 阿里云容器服务 ACK 和容器镜像服务 ACR 荣获最高级别先进级可信云安全能力认证,特别是在最小化攻击面,二进制镜像验签名,密文的 BYOK 加密等能力上国内领先,达到国际先进水平。 早在 2018 年,阿里云容器服务团队率先提出了“端到端的企业级安全能力”概念,并推出立体式的端到端云原生安全架构,从三个层面来解决安全问题: 最底层依托于阿里云平台已有的安全能力,包括物理安全,硬件安全,虚拟化安全和云产品安全能力; 中间是容器基础设施安全层,基于最小化攻击面原则,提供了包括访问控制,权限收敛,配置加固和身份管理等重要的底座安全能力;同时针对凭证下发,证书、密钥

记一次蚂蚁金服面试被虐经历

别说谁变了你拦得住时间么 提交于 2020-08-06 02:55:56
记一次蚂蚁金服面试被虐经历 本文来自作者投稿,原作者:yes 面试前的小姐姐 来说说前不久蚂蚁金服一面的情况。说来也是巧合,当时在群里有位蚂蚁金服的小姐姐发了个内推,看了下JD感觉可以试试于是就私聊了小姐姐发简历内推了。 我16年也就是大三上就开始实习了,到现在其实不到三年的经验。就我个人而言面试的经验真的是少之又少,不超过一个手掌的数。因此我简历发给小姐姐之后又联系她,让她晚点推让我先找几个公司练练手。 但是小姐姐说她可以先帮我热热身,她也是面试官(小姐姐可真的是太好了!),挑了晚上和小姐姐语音了20多分钟,虽然不是具体的面试内容,但是内容比这个更干!她我说了说一面二面大致的问的方向和注重点,还有一些注意事项: 一面: 小姐姐:上来先会给 两道编程题,二选一 ,不会是很难的算法那种,比较务实。基本上常年在一线编程的话能写的出来。是发个链接给你的邮箱,然后点击链接 在线编程,没有代码提示 ,写不出来基本上就是没了。 我:假如有些方法实在记不起来能在idea写了拷过去吗? 小姐姐:这个你可以跟面试官提,不过就我而言比较减分,并且你idea写代码,面试官可能会把代码拿来跑而不是目测过了就好了。如果没跑过也基本上没了。 我:哦哦好的好的。 小姐姐:然后就是自我介绍,一面 着重考察基础 方面,比如锁啊、GC啊、常见集合等等。再会 根据你的简历 ,比如我看你简历写了dubbo

云原生时代消息中间件的演进路线

痴心易碎 提交于 2020-08-05 16:11:36
引言 本文以一张云进化历史图开场,来谈谈云原生时代消息中间件的演进路线,但本文绝对不是“开局一张图,内容全靠编”。 从虚拟化技术诞生以来,IaaS/PaaS/SaaS概念陆续被提了出来,各种容器技术层出不穷。到2015年,Cloud Native概念应运而生,一时间,各种云厂商,云服务以及云应用都加上了“云原生”前缀。 我们也一直在思考,传统的消息中间件需要做些什么才能加上云原生这个修饰词,这也是本文探讨的主题:传统的消息中间件如何持续进化为云原生的消息服务。 云原生消息服务 什么是云原生 首先来谈谈什么是云原生,云原生是一个天然适用于云计算的架构理念,实践云原生技术理念的应用可以最大化享受云计算的技术红利,包括弹性伸缩、按量付费、无厂商绑定、高SLA等。 应用在实践云原生技术理念时一般会遵循四个要素: 采取DevOps领域的最佳实践来管理研发和运维流程。 通过CICD工具链做到应用的快速迭代和持续交付。 采取微服务架构。 采取容器及相关技术进行应用的托管。 消息服务作为应用的通信基础设施,是微服务架构应用的核心依赖,也是实践云原生的核心设计理念的关键技术,通过消息服务能够让用户很容易架构出分布式的、高性能的、弹性的、鲁棒的应用程序。消息服务在云原生的重要性也导致其极可能成为应用实践云原生的阻塞点,所以消息服务的云原生化是至关重要的。 什么是云原生消息服务 先说结论

SkyWalking 调用链忽略(取消跟踪)

余生颓废 提交于 2020-08-05 15:49:37
版本:7.0.0 描述 在某些场景下,我们可能对一些调用链路不关心,但是这部分数据还挺大的,大到会影响我们正常的业务。比如一些中间件的心跳。 这个时候可以选择性的忽略一些调用链,SkyWalking将不在收集忽略掉的数据。 在SkyWalking中,有三种手段忽略不需要跟踪的数据。 禁用插件。 引入忽略插件,配置指定忽略端点(endpoint)集合。 配置指定忽略链路的第一个span的操作后缀名称。 配置 1. 禁用插件 我们可以移除掉 agent/plugins/ 目录下特定的jar包,来忽略对特定组件的链路跟踪。例如:移除rocketmq插件包来忽略rocketmq的链路追踪。 2. 引入忽略插件 将 agent/optional-plugins 目录下的 apm-trace-ignore-plugin-xxx.jar 复制到 agent/plugins/ 目录下。 两种配置方式,第一种方式是在 config 目录下新增 apm-trace-ignore-plugin.config 文件,配置 trace.ignore_path=${SW_AGENT_TRACE_IGNORE_PATH:/eureka/**} ,第二种方式是增加环境变量 -Dskywalking.trace.ignore_path=/eureka/** ,重启应用,SkyWalking将不在采集指定路径的数据。

如何选择消息队列

牧云@^-^@ 提交于 2020-08-05 12:23:27
一、选择消息队列产品的基本标准 在消息队列的技术选型上,并不存在说哪个消息队列就是“最好的”。常用的几个消息队列,每个产品都有自己的优势和劣势,需要根据现有系统的情况,选择最适合的那款产品。 技术产品的及格标准: 必须是 开源产品 :如果遇到Bug至少有机会通过修改源代码迅速修复或规避,解决燃眉之急。 必须是近年来 比较流行 并且有一定 社区活跃度 的产品:流行的好处是,只要使用的场景不太冷门,遇到的Bug都可以找到解决办法。 流行的产品与 周边生态系统 会有一个比较好的集成和兼容:比如kafka和Flink就有比较好的兼容性,Flink内置了kafka的Data Sourse,使得你不用自己开发一个Flink的Data Source。 消息队列产品的及格标准: 消息的可靠传递:确保 不丢消息 。 Cluster:支持 集群 ,确保不会因为某个节点宕机导致服务不可用,当然也不能丢消息。 性能:具备足够好的性能,能 满足绝大多数场景 的性能要求。 二、可供选择的消息队列产品 1、RabbitMQ 介绍: 使用 Erlang语言编写 ,最早是为电信行业系统之间的可靠通讯性设计的,也是少数几个 支持AMQP 协议的消息队列。 轻量级 、迅速,开箱即用,非常容易部署和使用。 有一个特色的功能是支持非常 灵活的路由配置 。它在生产者和队列之间增加了一个 Exchange模块

Windows环境下安装RocketMQ

霸气de小男生 提交于 2020-08-05 08:23:17
一.预备环境 1.系统 Windows 2. 环境 JDK1.8、Maven、Git 二. RocketMQ部署 1.下载 1.1地址: http://rocketmq.apache.org/release_notes/release-notes-4.3.0/ 1.2选择‘Binary’进行下载 1.3解压已下载工程 2. 配置 2.1 系统环境变量配置 变量名:ROCKETMQ_HOME 变量值:MQ解压路径\MQ文件夹名 eg、ROCKETMQ_HOME=D:\dev\rocketmq-all-4.3.0-bin-release 3. 启动 3.1 启动NAMESERVER Cmd命令框执行进入至‘MQ文件夹\bin’下,然后执行‘ start mqnamesrv.cmd ’,启动NAMESERVER。成功后会弹出提示框,此框勿关闭。 3.2 启动BROKER Cmd命令框执行进入至‘MQ文件夹\bin’下,然后执行‘ start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true ’,启动BROKER。成功后会弹出提示框,此框勿关闭。 三. RocketMQ插件部署 1. 下载 地址: https://github.com/apache/rocketmq-externals.git 如果下载失败,把https:/

分布式

*爱你&永不变心* 提交于 2020-08-05 08:22:11
1. 首先说下要解决的内容 1. 1 分布式:分布式session会话、分布式锁、分布式存储、分布式事务 1.2 集群:集群管理、负载均衡、熔断 2. 消息中间件:rocketMQ、rabbitMQ、KAFKA、HIVE MQ、zookeeper、ACTIVE MQ 3.提供分布式事务的:rocketMQ/SEATA SAGA/JTA(spring Atomikos)/mongodb 2PC ( Mongo4.2 ) 4.分布式锁:Redis/zookeeper 5. 分布式存储搭建:可以使用云提供的存储、无需要考虑自己扩展的问题,必须使用MongoDB的云,它既提供了分布式事务,当然也提供了我们分布式存储的功能,当然如果往大的分布式存储的方向考虑就是使用大数据的分布式存储HIVE 和 HBASE 6. 集群管理:zookeeper,SPRING EUREKA 7. RPC调用: DUBBO、NETTY 、RMI(JAVA)/SPRING FEIGN、 8、 负载: NGINX 、 RIBBON 、 ZOOKEEPER , 基本上在中间件里都具备这些负载, 所以重点应该关注负载的一些基础原理: 9. 熔断/容错机制:既然在分布式中的各个中间件都是标榜给分布式带来高可用,就无比在每个中间件学习他们的熔断或者容错机制! 1. IP HASH 定向负载 2. 轮询 3. 随机负载 4.

RocketMQ(1)-架构原理

a 夏天 提交于 2020-08-05 04:23:41
RocketMQ(1)-架构原理 RocketMQ是阿里开源的分布式消息中间件,跟其它中间件相比,RocketMQ的特点是 纯JAVA实现 ; 集群和HA实现相对简单 ; 在发生宕机和其它故障时消息丢失率更低 。 一、RocketMQ专业术语 先讲专业术语的含义,后面会画流程图来更好的去理解它们。 Producer 消息生产者,位于用户的进程内, Producer通过NameServer获取所有Broker的路由信息 ,根据负载均衡策略选择将消息发到哪个Broker,然后调用Broker接口提交消息。 Producer Group 生产者组,简单来说就是多个发送同一类消息的生产者称之为一个生产者组。 Consumer 消息消费者,位于用户进程内。Consumer通过NameServer获取所有broker的路由信息后,向Broker发送Pull请求来获取消息数据。Consumer可以以两种模式启动, 广播(Broadcast)和集群(Cluster) , 广播模式下,一条消息会发送给所有Consumer,集群模式下消息只会发送给一个Consumer 。 Consumer Group 消费者组,和生产者类似,消费同一类消息的多个 Consumer 实例组成一个消费者组。 Topic Topic用于将消息按主题做划分, Producer将消息发往指定的Topic

本地启动 NameServer 和 Broker | 读 RocketMQ 源码前的准备工作

情到浓时终转凉″ 提交于 2020-08-05 02:46:32
clone 并导入源码 本地启动 NameServer 本地启动 Broker 本地运行生产者与消费者代码 完成上述步骤之后,RocketMQ的源码环境就搭建完毕了,之后就可以在本地启动以及收发消息,调试和分析RocketMQ的源码了。 clone 并导入源码 在 github 上选择对应的的代码 https://github.com/apache/rocketmq/tree/rocketmq-all-4.7.0,将其 clone 下来,再切出 4.7.0 版本的源码。Clone 到本地之后,用 IDEA 打开项目。 项目结构 模块 作用 broker Broker 相关代码 client Producer、Consumer 客户端代码,用于生产消息、消费消息 common 公共代码 dev 开发相关的信息 distribution 部署相关,比如配置文件 example 例子 filter 过滤器 logappender 日志相关 logging 日志相关 namesvr NameServer openmessaging 开放消息标准 remoting 远程网络通信,基于 netty 实现 srvutil 工具类 store 消息如何在 Broker 中进行存储相关代码 style 代码检查 test 测试 tools 命令行监控 本地启动 NameServer