RecoketMQ的核心概念与单机部署
2017-12-05 11:36
162 查看
核心概念
生产者(Producer):消息发送方,将业务系统中产生的消息发送到brokers(brokers可以理解为消息代理,生产者和消费者之间是通过brokers进行消息的通信),rocketmq提供了以下消息发送方式:同步、异步、单向。生产者组(Producer Group):相同角色的生产者被归为同一组,比如通常情况下一个服务会部署多个实例,这多个实例就是一个组,生产者分组的作用只体现在消息回查的时候,即如果一个生产者组中的一个生产者实例发送一个事务消息到broker后挂掉了,那么broker会回查此实例所在组的其他实例,从而进行消息的提交或回滚操作。
消费者(Consumer):消息消费方,从brokers拉取消息。站在用户的角度,有以下两种消费者。
主动消费者(PullConsumer):从brokers拉取消息并消费。
被动消费者(PushConsumer):内部也是通过pull方式获取消息,只是进行了扩展和封装,并给用户预留了一个回调接口去实现,当消息到底的时候会执行用户自定义的回调接口。
消费者组(Consumer Group):和生产者组类似。其作用体现在实现消费者的负载均衡和容错,有了消费者组变得异常容易。需要注意的是:同一个消费者组的每个消费者实例订阅的主题必须相同。
主题(Topic):主题就是消息传递的类型。一个生产者实例可以发送消息到多个主题,多个生产者实例也可以发送消息到同一个主题。同样的,对于消费者端来说,一个消费者组可以订阅多个主题的消息,一个主题的消息也可以被多个消费者组订阅。
消息(Message):消息就像是你传递信息的信封。每个消息必须指定一个主题,就好比每个信封上都必须写明收件人。
消息队列(Message Queues):在主题内部,逻辑划分了多个子主题,每个子主题被称为消息队列。这个概念在实现最大并发数、故障切换等功能上有巨大的作用。
标签(Tag):标签,可以被认为是子主题。通常用于区分同一个主题下的不同作用或者说不同业务的消息。同时也是避免主题定义过多引起性能问题,通常情况下一个生产者组只向一个主题发送消息,其中不同业务的消息通过标签或者说子主题来区分。
消息代理(Broker):消息代理是RockerMQ中很重要的角色。它接收生产者发送的消息,进行消息存储,为消费者拉取消息服务。它还存储消息消耗相关的元数据,包括消费群体,消费进度偏移和主题/队列信息。 命名服务(Name Server):命名服务作为路由信息提供程序。生产者/消费者进行主题查找、消息代理查找、读取/写入消息都需要通过命名服务获取路由信息。
消息顺序(Message Order):当我们使用DefaultMQPushConsumer时,我们可以选择使用“orderly”还是“concurrently”。
1、orderly:消费消息的有序化意味着消息被生产者按照每个消息队列发送的顺序消费。如果您正在处理 全局顺序为强制的场景,请确保您使用的主题只有一个消息 队列。注意:如果指定了消费顺序,则消息消费的最大并发性是消费组订阅的消息队列数。
2、 concurrently:当同时消费时,消息消费的最大并发仅限于为每个消费客户端指定的线程池。注意:此模式不再保证消息顺序。
1.单机部署详解(安装工具Xshell )
1.1 安装jdk1.8
# tar xvzf jdk-8u144-linux-x64.tar.gz -C /usr/local【解压压缩包】 # cd /usr/local && ln -s jdk1.8.0_144jdk
配置JDK环境
# vim /etc/profile
在profile文件中添加:
#set java environment export PATH=$PATH:/usr/local/jdk/bin export JAVA_HOME=/usr/local/jdk export CLASSPATH=.:$JAVA_HOMElib/dt.jar:$JAVA_HOME/lib/tools.jar exportPATH=$PATH:$JAVA_HOME/bin
# source /etc/profile 【重启生效】
检测JDK信息
# java -version
1.2 安装maven
# tar zxvf apache-maven-3.5.0-bin.tar.gz -C /usr/local # cd /usr/local && ln -s apache-maven-3.5.0 maven
配置Maven环境变量
# vim /etc/profile
在profile文件中添加:
#set maven enviroment export M2_HOME=/usr/local/maven export PATH=$M2_HOME/bin:$PATH
检测Maven信息
# source /etc/profile # mvn -v
1.3 安装git
# sudo yum install git
检验git信息
# git --version
1.4安装RocketMQ
# git clone https://github.com/apache/incubator-rocketmq.git 【在下载rocketmq最新版本】
# cd incubator-rocketmq # mvn -Prelease-all -DskipTests clean install -U 【使用mvn编译】
# cd distribution/target/apache-rocketmq
配置RocketMQ环境(可以选择不配置环境变量,此处配置是为了方便启动)
# pwd 【显示当前路径】 # vim /etc/profile
在profile文件中添加:
Export ROCKETMQ_HOME=/usr/local/src/incubator-rocketmq/distribution/target/apache-rocketmq export PATH=$PATH::$ROCKETMQ_HOME/bin
# source /etc/profile 【重启生效】
修改默认配置
由于RocketMQ默认配置要求很高,比如内存至少就要4个G,开发调试环境根本吃不消,所以我们开始启动前需要先修改这些参数。否则的话,我们很有会遇到内存分配或者不够的问题。# vim bin/runserver.sh
修改前:
修改后:
# vim bin/runbroker.sh
修改前:
修改后:
# vim bin/tools.sh
修改前:
修改后:
1.5 启动RocketMQ
启动NameServer
# nohup sh bin/mqnamesrv & # cat nohup.out
启动Broker
# nohup sh bin/mqbroker -n localhost:9876 & # jps
# netstat -ntlp
开启端口
# vim /etc/sysconfig/iptables
在iptables文件中添加:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9876 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 10911 -j ACCEPT
# service iptables restart 【重启防火墙】
PS:关于关闭NameServer和Broker
关闭Broker(bin目录下执行)# mqshutdown broker
关闭NameServer
# mqshutdown namesrv
单机部署结束。
下期将介绍RocketMQ集群部署。相关文章推荐
- C#读书笔记(框架设计第二版:CLR VIA C#)—— 一些生成、打包、部署和管理应用程序的核心概念
- kubernetes核心概念总结和手动集群部署实践 之一
- Redis基本概念、基本使用与单机集群部署
- 理解高性能内存缓存对象缓存Memcached原理 (Memcached核心概念,部署)
- 第二章 函数编程的核心概念
- 从经典架构项目中透析微服务架构的核心概念和充血模型
- Elasticsearch简单使用系列--详细介绍ES的核心概念
- Hadoop单机部署方法
- (十)maven核心概念-依赖范围
- 用Linux Container在单机上部署完全分布式的Hadoop集群
- NIO学习系列:核心概念及基本读写
- hadoop 单机安装与部署
- 从零开始部署小型企业级虚拟桌面 -- Vmware Horizon View 6 For Linux VDI -- 概念简介
- Memcached实战之单机部署----单实例/多实例
- 从零基础认识FastDfs单机部署
- spring boot/cloud 多服务部署单机启动顺序有依赖的解决办法
- CSS 最核心的几个概念
- CSS 核心概念归纳之定位和 BFC
- 理解事务处理的核心概念
- lucene核心概念