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

OSCHINA-MIRROR/fastdev-OF.DistributeService

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

#OF.DistributeService

Базовое описание

OF.DistributeService — это веб-сервисный фреймворк, основанный на интерфейсах для объявления сервисов, использует Zookeeper для регистрации и подписки на сервисы. Вызывающая сторона использует метод ILEmit для генерации прокси-классов для доступа к сервисам, при этом промежуточный процесс остаётся незамеченным для клиента.

Основные компоненты

  • Динамический сервисный прокси: создаёт прокси-классы для вызова сервисов на основе интерфейсов, поддерживает балансировку нагрузки, отказоустойчивость, кластеры, реальное расширение и удаление сервисов, а также мониторинг состояния доступности сервисов.
  • Registry: служба для регистрации сервисов и публикации/подписки событий сервисов.
  • Сетевое взаимодействие: запросы HTTP (POST/GET/DELETE/PUT), можно использовать MVC или WebAPI для разработки сервисов, POST-запросы поддерживают формат данных JSON или MSGPack.

Принцип работы

Провайдер

  • Предоставление сервиса называется "поставщиком".

Клиент

  • Вызов сервиса называется "потребителем".

Registry

  • Регистрация сервиса называется "регистрационным центром", который использует Zookeeper для выполнения задач.##### (1) Соединяемость
  • Регистрационный центр отвечает за регистрацию и поиск адресов сервисов, выполняет роль каталоговой службы. Поставщики и потребители взаимодействуют с регистратурой только при запуске и завершении работы, регистратура не передает запросы, поэтому нагрузка на неё минимальна.
  • Поставщики сервисов регистрируются в регистратуре со своими сервисами.
  • Потребители сервисов получают список адресов поставщиков из регистратуры и используют алгоритмы балансировки нагрузки для прямого обращения к поставщику.
  • Регистрационный центр и поставщики сервисов поддерживают постоянное соединение, потребители и регистратура также поддерживают постоянное соединение, а потребители и поставщики поддерживают временное соединение.
  • Регистрационный центр через постоянное соединение следит за существованием поставщика сервисов. При выключении или перезапуске поставщика сервисов регистратура немедленно отправляет события для уведомления потребителей.
  • При выключении регистратуры работа уже запущенных поставщиков и потребителей не прекращается, так как потребители хранят локально список поставщиков.##### (2) Устойчивость
  • Регистрационный центр, реализованный на основе Zookeeper, представляет собой кластер равноправных узлов. При выключении любого узла он автоматически переключается на другой.
  • При выключении всех узлов регистрации поставщики и потребители продолжают работу благодаря использованию локального кэша списка поставщиков.
  • Поставщики сервисов являются бессостоятельными, то есть выключение любого из них не влияет на использование сервиса. При полной остановке всех сервис-провайдеров, клиентское приложение будет недоступно, и вызовы потребителей будут генерировать исключение "Нет доступных сервисов".

(3) Эластичность:

Регистрационный центр представляет собой равноправную кластерную систему, которая может динамически расширяться за счет добавления новых машин с запущенным экземпляром Zookeeper, все клиенты автоматически обнаруживают новые регистрационные центры.

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

II. Примеры использования

1. Структура проекта:

Проект состоит из четырёх частей, где OF.DistributeService.Core является общей библиотекой для сервис-потребителей и сервис-провайдеров.OF.DistributeService.Server — это библиотека для регистрации сервисов.

OF.DistributeService — пример веб-приложения API, который можно использовать как шаблон для создания серверной части или добавления сервисов непосредственно в этот проект.

TestOpenRestClient — тестовый проект для сервис-потребителей, который можно использовать как образец для создания сервис-потребителей.

2. Шаги выполнения тестового проекта:

  1. Запустите службу Zookeeper; после успешного старта приступайте ко второму шагу.

  2. Измените поле ZookeeperHostPort в конфигурационном файле проекта OF.DistributeService, указав правильный IP и порт Zookeeper (по умолчанию используется локальный порт OnClickListener 2188), затем запустите проект OF.DistributeService.

  3. Аналогично измените поле ZookeeperHostPort в конфигурационном файле проекта TestOpenRestClient, затем запустите проект TestOpenRestClient.

  4. В случае возникновения ошибок во время выполнения этих шагов, они будут записаны в подкаталог App_Logs рабочего каталога. При успешном выполнении всех шагов вы сможете видеть окно тестового проекта, нажав кнопку в этом окне вызывает методы серверной части, результат которых выводится в нижнем текстовом поле.

Шаги 2 и 3 могут выполняться в любом порядке. Если сначала запустить проект сервис-потребителя, то при нажатии кнопки будет отображено сообщение о том, что нет доступных сервисов. После запуска проекта сервис-провайдера повторное нажатие кнопки позволит нормально вызвать сервис.Для развертывания нескольких проектов сервис-провайдеров, клиентская часть сможет динамически обнаруживать их без необходимости перезапуска, а также будет осуществлять балансировку нагрузки при вызовах. При отключении сервис-провайдера, клиентская часть также будет обнаруживать его, и последующие вызовы не будут направляться к этому сервис-провайдеру.

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

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

Введение

Распределённая **платформа для вызова сервисов**, которая реализует функции управления кластером сервисов, балансировки нагрузки и проверки сервисов. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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