- Введение в ПО промежуточного слоя для обмена сообщениями
- Сравнение общей очереди сообщений
- Введение в RocketMQ
- Возможности хранилища RocketMQ
- Конфигурация кластера RocketMQ
-
Учебное пособие по установке приложения
-
установка JDK
- Создайте каталог java в каталоге usr
- Войдите в каталог Java
- Загрузите jdk в каталог usrjava, а затем распакуйте его с помощью tar.Вы можете использовать xftp для загрузки jdk локально или использовать команду curl -O url для загрузки
- Установить переменные среды
- viПравить
- Файл профиля добавлен в следующую конфигурацию, как нажать esc, чтобы выйти из wq, чтобы сохранить
- Сделать изменения вступившими в силу
- Проверить действительность jdk
- Установка переменных окружения Другие операции такие же, как описано выше.
-
Установка RocketMQ
- Разархивируйте и скопируйте в каталог usrlocal
- Войдите в каталог usrlocal
- Установите синхронную связь с помощью команды ln
- Перейти к синхронизируемой папке
- vim редактировать файл конфигурации
- Редактировать блок памяти JAVA
- Создать каталог данных
- Запустить RocketMQ
- Посмотреть журнал запуска
- Просмотр порта запуска
- Закрыть RocketMQ
- начать снова
-
установка JDK
Введение в ПО промежуточного слоя для обмена сообщениями
Очередь сообщений (Message Queue, сокращенно MQ). Как ключевой компонент для реализации масштабируемости и масштабируемости системы распределенных сообщений, промежуточное программное обеспечение сообщений имеет преимущества высокой пропускной способности и высокой доступности.
Сравнение общей очереди сообщений
Обычно используемые очереди сообщений: RocketMQ, kafka, ActiveMQ, RabbitMQ, ZeroMQ и т. д.
Большая разница между activemq rabbitmq и kafka и RocketMQ заключается в том, что первые два поддерживают только режим master-slave, а последние два — это системы распределенных сообщений, которые поддерживают распределенные.
Постоянное сравнение сообщений: zeroMq не поддерживает, поддерживаются и activeMq, и rabbitMq.
RocketMQ
RocketMQ — это распределенная система обмена сообщениями с открытым исходным кодом, основанная на технологии распределенных кластеров с высокой доступностью, предоставляющая услуги публикации сообщений и подписки с низкой задержкой и высокой надежностью.
Kafka
Kafka — это очередь сообщений без механизма повторной передачи. Он широко используется благодаря своей горизонтальной масштабируемости и высокой пропускной способности. В настоящее время все больше и больше систем распределенной обработки с открытым исходным кодом, таких как Cloudera, Apache Storm и Spark, поддерживают интеграцию с Kafka. Kafka не полностью соответствует спецификации jms, ориентируясь на пропускную способность, аналогичную udp и tcp. У Кафки большая пропускная способность, и она не гарантирует 100% данных, будут потери данных, и она не 100% доставляется. Таким образом, kafka подходит для больших потоков данных, таких как данные журнала, например данные, используемые для статистики.
ActiveMQ
ActiveMQ похож на ZemoMQ, его можно развернуть в режиме брокера и в режиме P2P. Подобно RabbitMQ, здесь легко реализовать расширенные сценарии с небольшими затратами.
RabbitMQ
RabbitMQ — это ведущая реализация протокола AMQP, которая реализует архитектуру брокера (Broker), что означает, что сообщения могут ставиться в очередь на центральном узле перед отправкой клиентам. Эта функция упрощает использование и развертывание RabbitMQ и подходит для многих сценариев, таких как маршрутизация, балансировка нагрузки или сохранение сообщений.Это можно сделать с очередями сообщений всего несколькими строками кода. Однако это делает его менее масштабируемым и медленным, поскольку центральный узел увеличивает задержку, а сообщения после инкапсуляции становятся больше.
ZeroMQ
ZeroMQ — это очень легкая система обмена сообщениями, специально разработанная для сценариев с высокой пропускной способностью и низкой задержкой, ее часто можно найти в приложениях в финансовом мире.
Введение в RocketMQ
RocketMQ — это промежуточное ПО для распределенных сообщений модели очереди. RocketMQ был разработан на основе Metaq, а когда был выпущен Metaq3.0, он был переименован в RocketMQ. RocketMQ — это распределенная система обмена сообщениями с открытым исходным кодом, основанная на технологии распределенных кластеров с высокой доступностью, предоставляющая услуги публикации сообщений и подписки с низкой задержкой и высокой надежностью.
Основными компонентами RocketMQ являются:
Основные компоненты RocketMQ: NameServer, Broker (брокер), Producer (производитель сообщений), Consumer (потребитель сообщений)
NameServer
NameServer: сервер имен RocketMQ, примерно эквивалентный технологии jndi, услуги брокера обновлений и обнаружения. Узел практически без состояния, который можно развернуть в кластерах без какой-либо синхронизации информации между узлами.
Producer
Производитель: Производитель сообщения.
Производитель устанавливает соединение с одним из узлов сервера имен. Периодически получать информацию о разделе с сервера имен. И установить длительную связь с Мастером, который предоставляет информацию по теме. Производители также могут быть развернуты в кластерах.
Consumer
Потребитель: потребитель сообщений.
Потребитель устанавливает постоянное соединение с одним из узлов (выбранным случайным образом) в кластере серверов имен, периодически получает информацию о маршрутизации темы от сервера имен, устанавливает постоянное соединение с главным и подчиненным, которые предоставляют службы темы, и регулярно отправляет тактовые импульсы на Мастер и Раб. Потребитель может подписаться на сообщения от Мастера или от Ведомого.Правила подписки определяются конфигурацией Брокера.
Broker
Брокер: роль ретранслятора сообщений, отвечающая за хранение и пересылку сообщений. Брокер делится на Master и Slave.
Master может соответствовать нескольким Slave, но Slave может соответствовать только одному Master. Соответствие между Master и Slave определяется указанием одного и того же BrokerName и разных BrokerId. BrokerId, равный 0, указывает на Master, а BrokerId, отличный от 0, указывает на Slave. Затем все брокеры устанавливают длительные соединения с узлами на сервере имен и регулярно регистрируют информацию о топике на всех серверах имен.
Broker-Master: хост-сервер сообщений брокера
Broker-Slave: подчиненный сервер сообщений брокера
Возможности хранилища RocketMQ
В процессе потребления потребительских сообщений используется нулевое копирование, которое включает следующие два метода:
- Используйте метод mmap + write
Преимущества: даже при частых вызовах передача файлов небольшими блоками очень эффективна.
Недостатки: метод прямого доступа к памяти нельзя использовать должным образом, он будет потреблять больше ресурсов процессора, чем sendfile, контроль безопасности памяти сложен, и необходимо избегать проблемы сбоя JVM.
- Использовать метод sendfile
Преимущества: можно использовать метод прямого доступа к памяти, который потребляет меньше ресурсов процессора, а эффективность передачи больших файлов высока, и нет новых проблем с безопасностью памяти.
Недостатки: Эффективность небольших блочных файлов ниже, чем у режима mmap, и может передаваться только в режиме BIO, а NIO использовать нельзя.
RocketMQ выбрал первый метод, метод mmap+write, потому что есть необходимость в передаче данных небольшими блоками, эффект будет лучше, чем sendfile.
Конфигурация кластера RocketMQ
Конфигурация кластера RocketMQ
Приложение: Учебник по установке
Woohoo. Linux IDC.com/Linux/2016-…
【Установка JDK】
Поскольку RocketMQ разработан на основе Java, нам необходимо установить JDK перед установкой RocketMQ, поскольку сервер обычно использует Linux, поэтому в этом блоге представлены только учебные пособия, основанные на системе Linux.
1. Создайте каталог java в каталоге /usr/
mkdir /usr/java
Войдите в каталог Java
cd /usr/java
2. Загрузите jdk в каталог /usr/java, а затем распакуйте его с помощью tar (вы можете использовать xftp для локальной загрузки jdk или использовать команду curl -O url для загрузки)
tar -zxvf jdk-8u102-linux-x64.tar.gz
3. Установите переменные среды
viПравить
vi /etc/profile
Добавьте следующую конфигурацию в файл профиля, как нажать esc для выхода, :wq!
JAVA_HOME=/usr/java/jdk1.8.0_102
JRE_HOME=/usr/java/jdk1.8.0_102/jre
CLASS_PATH=.:
J AVA H OM E/ li b/ d t.j ar: JAVA_HOME/lib/tools.jar:
J RE H OM E/ li bP AT H= PATH:
J AV A H OM E/ bin : JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
Сделать изменения вступившими в силу
source /etc/profile
Проверить действительность jdk
java -version Если в системе установлен yum, вы можете напрямую использовать yum install java-1.7.0-openjdk для загрузки jdk
Установите переменные среды, остальные операции такие же, как указано выше.
JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64
JRE_HOME=
J AVA H OM E/ jr eC LAS S P AT H= .: JAVA_HOME/lib/dt.jar:
J AV A H OM E/ li b/ to ols. jar: JRE_HOME/lib
PATH=
P AT H: JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
[Установка RocketMQ]
Woohoo. Linux IDC.com/Linux/2015-…
Разархивируйте и скопируйте в каталог /usr/local
tar zxf alibaba-rocketmq-3.2.2.tar.gz -C /usr/local/
Войдите в каталог /usr/local
cd /usr/local/
Чтобы установить синхронную связь, используйте команду ln
ln -s /usr/local/alibaba-rocketmq /usr/local/rocketmq
Перейти к синхронизируемой папке
cd rocketmq/
vim редактировать файл конфигурации
vim conf/2m-noslave/broker-a.properties
Эталонный файл конфигурации
brokerClusterName=FusionCluster
brokerName=broker-a
brokerId=0
namesrvAddr=dbTest249:9876;webTest251:9876
deleteWhen=04
fileReservedTime=120
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
sstorePathRootDir=/data/rocketmq/store
storePathCommitLog=/data/rocketmq/store/commitlog
Редактировать блок памяти JAVA
vim bin/runbroker.sh JAVA_OPT_1="-сервер -Xms512m -Xmx1g -XX:PermSize=128m -XX:MaxPermSize=320m"
Создать каталог данных
mkdir -p /data/rocketmq/store/commitlog
mkdir /data/logs
cd conf/
sed -i 's#{user.home}#/data#g' *.xml // Заменить {user.home} во всех файлах xml в каталоге conf на /data, введите r
Запустить RocketMQ
cd ../bin/
nohup sh mqnamesrv >/var/log/ns.log 2>&1 &
nohup sh mqbroker -c ../conf/2m-noslave/broker-a.properties > /var/log/mq.log 2>&1 &
Посмотреть журнал запуска
tail -f /var/log/ns.log tail -f /var/log/mq.log
Просмотр порта запуска
netstat -tunpl jps
Закрыть RocketMQ
sh mqshutdown
sh mqshutdown broker
sh mqshutdown namesrv
начать снова
nohup sh mqnamesrv >/var/log/ns.log 2>&1 & nohup sh mqbroker -c ../conf/2m-noslave/broker-a.properties > /var/log/mq.log 2>&1 &