Введение в 4 проекта сервера перца с открытым исходным кодом

открытый источник

В начале нового года команда разработчиков серверной системы прямых трансляций Huajiao открыла исходный код ряда базовых сервисов, которые широко используются внутри компании, включая систему шин и распределенное управление cron, представленное ранее:

  • gokeeper — централизованный центр управления конфигурацией
  • pepperbus - Система перечных автобусов
  • peppercron — распределенное управление pepcron live cron
  • приборная панель - фон операции перец и пепперкрон

gokeeper

  • Адрес репозитория на гитхабе:https://github.com/huajiao-tv/gokeeper
  • репозиторий образов докеров:docker pull huajiao/gokeeper

gokeeper — централизованный центр управления конфигурацией, написанный на языке go, который поддерживает функцию обнаружения сервисов, по умолчанию в качестве внутреннего хранилища конфигурации используется ETCD (который может поддерживать consul, zokeeper и т. д.), а также поддерживает работу с одним узлом. или развертывание кластера.

бегать

Предварительные условия

  • Настройте среду Docker и docker-compose локально
  • Клонировать код gokeeper на локальный

начать вратарь

  • Входитьdeploy/docker_composeсодержание
  • воплощать в жизньdocker-compose up -d

Централизованная конфигурация

gokeeper поддерживает встроенную кодировку gob языка go и поддерживает большинство типов данных и составных структур языка go:

bool, []bool
int, int64
[]int, []int64
float64, []float64
string, []string
map[string]string, map[string]int, map[string]bool
map[int]string, map[int]int, map[int]bool
map[string][]string, map[string]struct{}, map[int]struct{}
time.Duration

В дополнение к перечисленным выше типам языка go он также поддерживает сопоставление строк json с пользовательскими типами.json.

Кроме того, для совместимости с другими языками gokeeper также поддерживает использование протокола gRPC, а SDK для других языков все еще находятся в стадии разработки и тестирования.

доступ

  • вводитьgo get -u github.com/huajiao-tv/gokeeper

  • использовать пользовательскийiniконфигурация определения формата

    использование ini-файла<key> [type] = [value]формат, если тип не указан, по умолчаниюstring

  • Создать объект конфигурации

go get -u github.com/huajiao-tv/gokeeper/cmd/gokeeper-cli

$GOPATH/bin/gokeeper-cli -in ./ini_file_path -out data
  • gokeeper client
//your sections to use
sections := []string{"test.conf/DEFAULT"}  

//gokeeper.WithGrpc() will use grpc to connect gokeeper server,otherwise use gorpc
client := gokeeper.New(keeperAddr, domain, nodeID, component, sections, nil, gokeeper.WithGrpc())
client.LoadData(data.ObjectsContainer).RegisterCallback(run)
if err := client.Work(); err != nil {
	panic(err)
}

обнаружение службы

принцип

имя существительное иллюстрировать
Service Provider поставщики услуг
Service Consumer вызывающий абонент
Instance Информация об экземпляре, запущенный узел службы, уникальность идентификатора
Service Информация о службе. Служба содержит один или несколько экземпляров.
ServiceName Уникальный идентификатор сервиса в формате проект.сервис[.под_сервис]
Zone Идентификатор IDC
Env Идентификатор рабочей среды службы, prod (онлайн)/pre (предварительная версия)/test (тест)/dev (разработка).
Registry Интерфейс внутреннего хранилища для обнаружения сервисов можно подключить к etcd, zookeeper, consul и т. д.
Scheduler Планировщик балансировки клиентской нагрузки, настраиваемые случайные, весовые и другие стратегии

характеристика

  • Интерфейс для регистрации и обнаружения службы на стороне клиента взаимодействует только с gokeeper и не заботится о внутреннем хранилище для обнаружения gokeeper.
  • Подписчики сервисов подписываются только на интересующие их сервисы, а сервисы без подписок не будут получать push-уведомления об изменении информации
  • gokeeper discovery устанавливает соединение с серверным хранилищем, отслеживает изменения в информации об узле службы, и, если есть добавленные или удаленные узлы, обнаружение отправляет информацию подписчикам службы в режиме реального времени.
  • В случае, если клиент-потребитель и обнаружение gokeeper не подключены, можно использовать исходный узел.
  • Стратегия балансировки нагрузки настраивается в фоновом режиме, записывается в хранилище через gokeeper, синхронно обновляется каждым узлом обнаружения gokeeper, а затем синхронизируется с каждым потребителем услуг через gokeeper.

доступ

  • вводитьgo get -u github.com/huajiao-tv/gokeeper/client/discovery

  • Service Provider

instance := discovery.NewInstance(discovery.GenRandomId(), "demo.test.com", map[string]string{discoverry.SchemaHttp: "127.0.0.1:17000"})
instance.Id = "test_id_1"

client := discovery.New(
	// gokeeper server address(grpc address)
	"127.0.0.1:7001",
	// registry service
	discovery.WithRegistry(instance),
	discovery.WithRegistryTTL(60*time.Second),
	// schedule strategy,default:random
	discovery.WithScheduler(map[string]schedule.Scheduler{
		"demo.test.com": schedule.NewRoundRobinScheduler(),
	}),
)
  • Service Consumer
// start gokeeper client
client := discoverry.New(
	// gokeeper server address(grpc address)
	"127.0.0.1:7001",
	// subscribe a group of service
	discovery.WithDiscovery("example_client1", []string{"demo.test.com"}),
)

// TODO

// get service address
addr, err := client.GetServiceAddr("demo.test.com", discovery.SchemaHttp)
if err != nil{
	// TODO
}

pepperbus

  • Адрес репозитория на гитхабе:https://github.com/huajiao-tv/pepperbus
  • репозиторий образов докеров:docker pull huajiao/pepperbus

перец-автобус - автобусная система прямого вещания сычуаньского перца, соответствующий дизайн и внедрение находятся втехнология перцаВыпуск официального аккаунта 2019-11-26.

peppercron

  • Адрес репозитория на гитхабе:https://github.com/huajiao-tv/peppercron
  • репозиторий образов докеров:docker pull huajiao/pepperbus

peppercron — распределенный сервис управления cron для прямых трансляций pepcron, соответствующий дизайн и внедрение находятся в разработке.технология перцаВыпуск официального аккаунта 2019-10-29.

dashboard

  • Адрес репозитория на гитхабе:https://github.com/huajiao-tv/dashboard
  • репозиторий образов докеров:docker pull huajiao/dashboard

Панель инструментов — это фон общего управления, разработанный в соответствии с бизнес-требованиями прямой трансляции перца, чтобы упростить использование перцового автобуса и пепперкрона.

Инструкции по приборной панели

запускать

После клонирования кода на локальный выполнитеdocker-compose up -d, создаются следующие контейнеры:

  • Redis — хранилище сообщений приземляющихся сообщений
  • mysql — база данных бэкэнд-панелей
  • gokeeper_etcd — ETCD, используемый gokeeper и peppercron.
  • gokeeper — Центр конфигурации
  • peppercron — Распределенный сервис управления cron.
  • php-fpm - потребление php шины
  • перец-автобус - автобусная система
  • приборная панель - фон операции управления pepperbus и pepcron

Авторизоваться

Вход через браузерlocalhost:8360, учетная запись по умолчанию после запуска:

  • Администратор по умолчанию:admin
  • пароль:admin@pass(существуетconfig.yamlуказано в)

Создать систему

автобус пеппербус

Добавить сервер перец в систему

Добавить хранилище Redis в систему

добавить очередь

Добавить две темы в очередь

в хранилище кодаexample/php/consume.phpЧерез php SDK реализованы два потребителя, а именно:queue1/topic1, queue1/topic2. Среди них тема1 по умолчанию возвращает успех, а тема2 по умолчанию возвращает ошибку.

Тема теста

  • topic1

  • topic2

управление задачами пепперкрон

Добавить сервер задач перец в систему

добавить задачу

тестовое задание

Перед запуском вы можете проверить, правильно ли настроена задача

Изменить вывод задачи в файл

Проверить результаты выполнения задачи