RocketMQ介绍Apache RocketMQ是一个具有低延迟、高性能和高可靠性、万亿级容量,同时具备灵活的、可伸缩性强的分布式消息流处理平台,它由四个部分组成:name servers, brokers, producers 和 consumers。它们所有部分都可以水平扩展避免单点故障,就像上图所示。名称服集群务 NameServer cluster
NameServer服务提供了轻量级的服务发现和路由。每个NameServer服务记录完整的路由信息,提供一致的读写服务,支持快速存储扩展代理服务集群 Broker Cluster
Broker通过提供轻量级主题和队列机制来处理消息存储。它们支持Push和Pull模型,包含容错机制(2个副本或3个副本),提供了极强的峰值处理里能力和按照时间顺序存储数以百万记的消息存储能力,此外,代理提供了灾难恢复、丰富的度量统计和警报机制,这些都是在传统的消息传递系统中缺乏的生产者集群 Producer Cluster
produce支持分布式部署,分布式的produce通过broker集群提供的各种负载均衡策略将消息发送到broker集群中。发送过程支持快速失败是低延迟的。消费者集群 Consumer Cluster
消费者也支持在推送或者拉取模式下分布式部署,它还支持集群消费和消息广播。提供实时的消息订阅机制,能够满足大多数消费者的需求。RocketMQ的网站为感兴趣的用户提供了一个简单的快速入门指南。NameServer是一个功能齐全的服务器,主要包括两个功能:
⊙broker 管理,nameserver 接受来自broker集群的注册信息并提供心跳来检测他们是否可用。
⊙路由管理,每一个nameserver都持有关于broker集群和队列的全部路由信息,用来向客户端提供查询。我们知道 ,rocketMQ客户端(生产者/消费者)会从nameserver查询队列的路开发云主机域名由信息,客户端是如何知道nameserver的地址的呢?有四种方式能够让客户端获取到nameserver的地址:
⊙通过程序,像这样producer.setNamesrvAddr(“ip:port”)
⊙java 配置项,这么用rocketmq.namesrv.addr
⊙环境变量 NAMESRV_ADDR
⊙HTTP 端点
更多关于nameserver地址发现的详细信息请参考这里 broker server负责消息的存储传递,消息查询,保证高可用等等。像下图所示,broker server有一些非常重要的子模块:
⊙remoting(远程) 模块,broker的入口,处理从客户端发起的请求。
⊙client manager(客户端管理),管理各个客户端(生产者/消费者)还有维护消费者主题订阅。
⊙store(存储服务),提供简单的api来在磁盘保持或者查询消息。
⊙HA 高可用服务,提供主从broker的数据同步。
⊙index(索引服务),为消息建立索引提供消息快速查询。RocketMQ与其他消息队列服务的区别如下图,列出了 ActiveMQ、Kafka、RocketMQ 三者的区别,详见官方文档服务器规划如下表,准备两台服务器,互为主备:RocketMQ环境准备1、设置主机hosts2、准备 JAVA 环境下载 JAVA 安装包:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html解压下载的 jdk 包到 /usr/local 目录,并配置环境变量3、准备 Maven 环境下载 Maven 安装包:http://maven.apache.org/download.cgi 下载 bin 包,则直接解压到 /use/local 目录,再修改环境变量RocketMQ部署下载 RocketMQ 安装包:http://rocketmq.apache.org/dowloading/releases/解压所下载的 RocketMQ 安装包,进行编译此过程受限于网络状况,有可能非常缓慢,请耐心等待。。。。。。编译完成之后,进入 distribution/target/ 目录,将该目录下的 apache-rocketmq 目录整个复制到 /usr/local 目录下进入 /usr/local/rocketmq/conf 目录,修改日志配置文件,将配置文件中的相关日志路径修改为自己设置的路径再进入 2m-2s-async 目录(注意:这里一共三个目录,2m-2s-async为多主多异步复制预配置文件目录,2m-2s-sync为多主多从同步双写预配置文件目录,2m-noslave为双主预配置文件目录),修改 broker 配置文件保存退出保存退出保存退出保存退出注意:这里的 brokerId 格式为主0从1进入 /usr/local/rocketmq/bin ,修改 JAVA 虚拟机运行的所占用的内存(这里主要看服务器配置,如果服务器配置较差,建议修改)修改为上图中红框中所示的内容编辑 namesrv 服务的配置文件(此步可以忽略,采用系统默认的配置)主要修改相关的目录以及端口号,其他想不用管说明:以上配置中所涉及的字段含义,详情请参阅官方文档,这里不错过多说明。复制文件将 192.168.2.177 上 /usr/local/rocketmq 整个目录复制到 192.168.2.178 上。此处操作为了方便起见,如果不是很放心,可在另外一台服务器上做上述同样的操作。启动 RocketMQ在 192.168.2.177上操作在 192.168.2.178 上操作到此,RocketMQ 集群部署完成,为了查看集群的状态,我们可以使用 github 上的图形化开源工具 rocketmq-console 。下载 rocketmq-console :https://github.com/apache/rocketmq-externals解压并进入 rocketmq-console 目录,进行编译在编译之前,需要先修改该目录下的 pom.xml 文件将上图中红框内的
最近,系统设计中较新颖的概念之一要属“无服务器架构”理念。毫无疑问, 这有点夸张, 因为确实有服务器参与其中, 但这意味着我们可以以不同的方式看待服务器。无服务器的潜在上升空间想象一下,一个简单的基于Web的应用程序,处理来自HTTP客户端的请求。而不是让一些…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。