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

OSCHINA-MIRROR/xuan698400-distributed-tool

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

Проект Distributed-tool

Проект

Это набор распространённых компонентов для распределённых систем. Включает в себя:

  • Распределённый список (List).
  • Распределённую коллекцию (Set).
  • Длинное целое число (Long).
  • Сигнальное количество.
  • Распределительную память.
  • Блокировку.
  • Последовательный генератор.

В настоящее время существует множество микросервисных систем разработки, и это связано с проблемой распределённого кластера. Если раньше можно было использовать API JMV для решения этих проблем, то в распределённой среде эти API недоступны. Поэтому требуется набор распределённых API для поддержки таких операций.

Обратите внимание: все компоненты на данный момент не являются потокобезопасными. При использовании многопоточности рекомендуется использовать несколько экземпляров или добавить собственную синхронизацию.

Архитектура

На данный момент проект состоит из двух модулей: distributed-tool и distributed-tool-test. Первый — основной исходный код. Второй — тестовый код. Distributed-tool включает следующие модули:

  1. Core — предоставляет основные распределённые компоненты (поддерживает версию V1.3).
  2. Cache — простой модуль распределённой памяти (поддерживает версию V1.3).
  3. Lock — распределённая блокировка (поддерживает версию V1.3).
  4. Pubsub — модуль распределённой подписки и публикации (поддерживает версию V1.3).
  5. Sequence — последовательный генератор (поддерживает версию V1.3).

Обновление версий

Версия 1.0
  • Добавлен клиентский модуль (все инструменты компонентов ядра).
  • Добавлен модуль кэша (распределённый инструмент кэширования).
  • Добавлен последовательный модуль (инструмент генерации распределённых последовательностей).
Версия 1.1
  • Добавлен pubsub-модуль (модуль подписки и публикации).
Версия 1.2
  • Добавлена очередь (распределённая очередь).
  • Переработан нижний уровень DtClient-модуля. Модуль не является потокобезопасным, поэтому при многопоточной работе необходимо использовать собственную синхронизацию или создавать разные экземпляры.
  • Добавлен глобальный одноэлементный класс Dt. После инициализации можно использовать различные компоненты без настройки фабрики классов DtClient.
Версия 1.3
  • Переработана реализация нижнего уровня, чтобы сделать использование более удобным.
  • Добавлены распределённая блокировка и сигнальное количество.
Версия 1.4
  • Поддержка режима «главный-резервный» и режима «дозорный» при развёртывании Redis.

Maven-ссылка

<dependency>
    <groupId>com.xuanner</groupId>
    <artifactId>distributed-tool</artifactId>
    <version>1.3</version>
</dependency>

Руководство по использованию

Инициализация (в настоящее время нижний уровень использует Redis для реализации, поэтому используется способ инициализации Redis)

Dt.getInstance().initJedis("xxx", 8380, "xxx");

Уничтожение (обратите внимание, что в конце жизненного цикла приложения следует добавить код уничтожения, например, в Spring в цикле destroy)

Dt.getInstance().getDefaultJedisFactory().destroy();

Пример использования распределённого списка

DtList list = Dt.newDtList("listName");
list.pushLeft(new String[] { "a", "b" });
list.popLeft();
list.close();//использование завершено, не забудьте закрыть

Пример использования распределённой блокировки

DtLock lock = Dt.newDtLock("lockName");
String kId = lock.tryLock();
//критическая логика ресурсов
lock.unLock(kId);
lock.close();//использование завершено, не забудьте закрыть

Дополнительные примеры использования: https://gitee.com/xuan698400/distributed-tool/wikis/.

Будущие функции

  1. Распределённый инструмент ограничения потока.

Контакты

  1. Имя: Сюань Ан.
  2. Электронная почта: javaandswing@163.com.
  3. QQ: 349309307.
  4. Личный блог: xuanner.com.
  5. Группа общения: 813221731 (название группы: xsequence общение, примечание группы: общение о распределённой разработке).

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

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

Введение

Один из распространённых компонентов инструментария для распределённых систем. Например: распределённое кэширование, распределённый генератор серийных номеров, распределённая блокировка, распределённые подписка и публикация и т. д. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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