Множественный MQ-фреймворк с различными схемами устойчивого хранения, реализованный на основе Go + Protobuf.
* Поддержка горизонтального и вертикального масштабирования отправителей, подписчиков и брокеров через zk/etcd
* Поддержка подписки на сообщения по теме и типу сообщения второго уровня
* Устойчивое хранение сообщений с использованием MySQL и файлового хранилища
* Обеспечение надёжной асинхронной доставки
* Поддержка двухэтапного коммита распределённых транзакций
* Возможность настройки ограничений скорости потока на уровне темы внутри группы для защиты подписчиков
* Защита от перегрузки сервера kiteserver
* Отчёт клиента о времени подготовки системы для постепенного увеличения объёма передачи сообщений в соответствии с этим временем
* Поддерживаемые клиенты: Java, Go, C++, PHP
kiteq/
├── README.md
├── conf конфигурационная информация
├── log конфигурация log4go
├── build.sh скрипт установки
├── doc документация
├── handler необходимые обработчики Handler для KiteQ
├── kiteq.go внешний вход для запуска KiteQ
└── server сборка компонентов серверной части KiteQ
* Consumer: потребитель сообщений
* Producer: отправитель сообщений
* Topic: тема сообщений, например, Trade — это тема сообщений, которая обычно представляет собой определенный вид бизнеса
* MessageType: второй уровень типа сообщений, например, в Trade существует тип сообщения pay-succ-200
KiteServer: /kiteq/server/${topic}/ip:port
Producer: /kiteq/pub/${topic}/${groupId}/ip:port
Consumer: /kiteq/sub/${topic}/${groupId}-bind/$data(bind)
Direct (прямоточная подписка): конкретная подписка на тему и тип сообщения
Regx (регулярная подписка): подписка на тип сообщения по регулярному выражению уровня темы
Fanout (распределенная подписка): подписка на все типы сообщений уровня темы
Устойчивая подписка: даже если все машины в группе вышли из сети, сообщения не будут потеряны; при восстановлении KiteQ будет повторно отправлено сообщение
Непостоянная подписка: если все машины в группе вышли из сети, сообщения не будут сохранены и будут удалены
Описание:
KiteQ-Common предоставляет средства для работы с хранилищами, сетевыми протоколами передачи данных и управлением через zk. KiteQ-OPS обеспечивает графическое отслеживание состояния кластера KiteQ.
Turbo предоставляет общие средства для работы с сетью.
KiteQ:
1.1 При запуске KiteQ отправляет список поддерживаемых им тем (topics) в центр регистрации (zk/etcd) на узел /kiteq/server и начинает слушать изменения подписок на эти темы.
1.2 В случае изменения подписок, центр регистрации уведомляет KiteQ о новых подписках с помощью механизма watch, чтобы он мог обновить локальные данные подписок и начать доставку сообщений новым группам подписчиков.
Producer:
2.1 После запуска производитель отправляет список тем, которые ему требуется использовать, в центр регистрации на узел /kiteq/pub (это используется для управления публикациями).
2.2 Производитель получает IP и порт соответствующего узла KiteQ из центра регистрации на основе списка тем и наблюдает за изменениями этого узла с помощью механизма watch.
3.1 Производитель устанавливает TCP соединение с этим узлом KiteQ и поддерживает его постоянной активностью путём периодического отправления heartbeat.
3.2 После успешной проверки авторизации со стороны KiteQ, производитель может начать публикацию сообщений.Consumer:
2.1 После запуска потребитель отправляет информацию о своих подписках на узел /kiteq/sub в центр регистрации.
2.2 Потребитель получает IP и порт соответствующих узлов KiteQ из центра регистрации на основе информации о подписках и наблюдает за изменениями этих узлов с помощью механизма watch.
3.1, 3.2 Потребитель устанавливает TCP соединение с этими узлами KiteQ и поддерживает его постоянной активностью путём периодического отправления heartbeat. После установления соединения KiteQ начинает направлять сообщения к этому потребителю при наличии соответствующих сообщений.
KiteQ-OPS:
На основе данных, предоставленных центром регистрации и HTTP-интерфейсов KiteQ, система собирает информацию о состоянии системы и представляет её в виде диаграмм.
- Примечание:
Разделение ролей между издателями и подписчиками является условным. Та же группа может выполнять роль как издателя, так и подписчика.
Например:- При успешной оплате покупки подписки необходимо обновить баланс пользователя в локальной базе данных MySQL и уведомить систему подписок о продлении срока действия подписки для данного пользователя.
Отправка незавершенного сообщения в KiteQ, при этом KiteQ не выполняет его доставку.
KiteQ регулярно отправляет запрос TxAck на производителя относительно незавершенных сообщений.
Процесс продолжается до тех пор, пока производитель явно не скажет о завершении или откате этого сообщения.
Завершение приведёт к обычному процессу доставки, тогда как откат приведёт к удалению текущего сообщения.##### Быстрый старт
Скачайте последнюю версию с releases[https://kiteq/releases]
Установите последнюю версию Zookeeper с http://www.apache.org/dyn/closer.cgi/zookeeper/
Запустите Zookeeper $ZOOKEEPER_HOME/bin/zkServer.sh start (Разработка в среде с одним узлом)
Распакуйте KiteQ-xxx-xxxx.tar.gz в путь развёртки
Выполните sh kiteq.sh
Восхитительный кластер KiteServer запущен...
*** Примечание:
Конфигурация KiteQ находится в conf/cluster.toml
Можно использовать команду 'sh kiteq -clusterName=${cluster_name} -configPath=${toml_path}'
Рекомендуется использовать supervisor для управления kiteq.
*** Регистрация KiteQ:
zk: zk://localhost:2181,localhost:2181 (стабильная)
etcd: etcd://http://localhost:2379,http://localhost:2379 (неустойчивая)
Почта: blackbeans.zc@gmail.com
QQ: 136448723
QQ-группа: 139685004 (группа практики Kiteq)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )