1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dnwc-Leaf

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Лист

В мире нет двух одинаковых листьев.

— Лейбниц

Китайская версия документа | Английская версия документа

Введение

Лист относится к некоторым общим схемам генерации идентификаторов в отрасли, включая Redis, UUID, Snowflake и другие. Каждая из вышеупомянутых схем имеет свои недостатки, поэтому мы решили реализовать набор распределенных сервисов генерации идентификаторов для удовлетворения требований. В настоящее время Лист охватывает внутренние финансовые,餐饮,外卖,酒店旅游,猫眼电影等多个业务线。基于4C8G虚拟机,通过公司RPC方法,QPS压力测试结果接近5万次/秒,TP999为1毫秒。

Вы можете использовать его в SOA-архитектуре для создания центра распределённых уникальных ID, который будет предоставлять ID для всех приложений.

Быстрый старт

Сервер Leaf

Leaf предоставляет HTTP-сервис на основе Spring Boot для получения ID.

Запуск сервера Leaf

Сборка
git clone git@github.com:Meituan-Dianping/Leaf.git
cd leaf
mvn clean install -DskipTests
cd leaf-server
Запуск
Maven
mvn spring-boot:run

или

Команда shell
sh deploy/run.sh
Тестирование
# сегмент
curl http://localhost:8080/api/segment/get/leaf-segment-test
# snowflake
curl http://localhost:8080/api/snowflake/get/test

Настройка

Leaf предоставляет два способа генерации ID (режим сегмента и режим Snowflake), которые можно включить одновременно или указать один способ для включения (оба по умолчанию отключены).

Настройка сервера Leaf находится в leaf-server/src/main/resources/leaf.properties| Настройка | Значение | Значение по умолчанию | | ------------------------- | ----------------------------- | ------ | | leaf.name | имя сервиса Leaf | | | leaf.segment.enable | включен ли режим сегмента | false | | leaf.jdbc.url | URL MySQL | | | leaf.jdbc.username | имя пользователя MySQL | | | leaf.jdbc.password | пароль MySQL | | | leaf.snowflake.enable | включен ли режим snowflake | false | | leaf.snowflake.zk.address | адрес zk в режиме snowflake | | | leaf.snowflake.port | порт регистрации сервиса в режиме snowflake | |### Режим сегментации

Чтобы использовать режим сегментации, сначала нужно создать таблицу в базе данных и настроить leaf.jdbc.url, leaf.jdbc.username и leaf.jdbc.password.

Если вы не хотите использовать этот режим, просто настройте leaf.segment.enable=false для отключения его.

CREATE DATABASE leaf;
CREATE TABLE `leaf_alloc` (
  `biz_tag` varchar(128) NOT NULL DEFAULT '', -- уникальное имя вашего бизнеса
  `max_id` bigint(20) NOT NULL DEFAULT '1',
  `step` int(11) NOT NULL,
  `description` varchar(256) DEFAULT NULL,
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`biz_tag`)
) ENGINE=InnoDB;

INSERT INTO leaf_alloc(biz_tag, max_id, step, description) VALUES('leaf-segment-test', 1, 2000, 'Тест режима сегментации Leaf Get Id');

Режим Snowflake

Алгоритм взят из открытого исходного кода Twitter Snowflake.

Если вы не хотите использовать этот режим, просто настройте leaf.snowflake.enable=false для отключения его.

Настройте адрес Zookeeper``` leaf.snowflake.zk.address=${address} leaf.snowflake.enable=true leaf.snowflake.port=${port}


Настройте `leaf.snowflake.zk.address` в файле `leaf.properties` и задайте порт прослушивания сервиса `leaf.snowflake.port`.

### Мониторинг страницы

режим сегментации: http://localhost:8080/cache

### Основной модуль Leaf

Конечно, чтобы достичь более высокой производительности, вам нужно развернуть сервис Leaf через сервер RPC, который требует только включения пакета `leaf-core` и упаковки API для генерации ID в указанный RPC-фреймворк.

#### Внимание
Обратите внимание, что текущая логика получения IP-адреса в режиме Snowflake берет IP-адрес первой сетевой карты напрямую (особенно для сервисов, которые меняют IP-адрес), чтобы избежать потери работы ID.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Распределенные идентификаторы Meituan Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/dnwc-Leaf.git
git@api.gitlife.ru:oschina-mirror/dnwc-Leaf.git
oschina-mirror
dnwc-Leaf
dnwc-Leaf
master