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

OSCHINA-MIRROR/stoneson-wanno

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

Anno: распределённая микросервисная среда разработки

Anno — это распределённая среда разработки, ориентированная на управление сервисами, мониторинг и отслеживание связей. В качестве RPC можно использовать высокопроизводительный межъязыковой Thrift (рекомендуется) или Grpc. Поддерживаются .net core, .net framework и java.

Онлайн-демонстрация: http://49.232.112.70

Пример проекта: https://gitee.com/stoneson/Viper

🎄Nuget: основы

Название пакета Описание Версия Скачивания
Vive.Anno.Core Ядро библиотеки

🎃Nuget: коммуникация

Название пакета Описание Версия Скачивания
Vive.Anno.Api.GateWay WebApi-шлюз Thrift
Vive.Anno.Rpc.Center Библиотека центра регистрации Thrift
Vive.Anno.Rpc.Client Клиентская библиотека Thrift
Vive.Anno.Rpc.Server Серверная библиотека Thrift для сервисов
Vive.Anno.Wcf.Server Библиотека сервера Thrift Wcf
Vive.Anno.Rpc.CenterGrpc Центр регистрации Grpc
Vive.Anno.Rpc.ClientGrpc Клиенты Grpc
Vive.Anno.Rpc.ServerGrpc Серверы Grpc

🎁Nuget: расширения

Название пакета Описание Версия Скачивания
Vive.Anno.EventBus Библиотека шины событий EventBus
Vive.Anno.Plugs.MonitorService Промежуточное ПО для мониторинга сервисов Anno
Vive.Anno.Rpc.Client.DynamicProxy Динамический прокси для клиентских расширений Anno

Vive.Anno.Rpc.Client.DynamicProxy | Vive.Anno.Rpc.Client.DynamicProxyGrpc | Интерфейс-посредник Anno-клиента, расширение | | NuGet | downloads|

Общая архитектура

Общая архитектура состоит из трёх частей:

  1. Регистрационный центр — AnnoCenter.
  2. Микросервисы — AnnoService (может быть несколько сервисов, например: сервис заказа A, сервис склада B, платёжный сервис C, пользовательский сервис D).
  3. ApiGateway — см. Viper.

#📢 Основные функции

Функции включают в себя регистрацию центра, обнаружение сервисов, проверку работоспособности, балансировку нагрузки, ограничение потока, обработку отказов, трассировку цепи, мониторинг ресурсов и др.

#📦 Регистрационный центр (AnnoCenter)

AnnoCenter — это сервисный регистрационный центр, который отвечает за обнаружение сервисов (например, сервис заказа A или складской сервис B), хранение информации о сервисах и предоставление этой информации локально. Клиенты (например, ApiGateway), отправляя запросы, получают доступ к сервисам через AnnoCenter, который выбирает подходящий сервис на основе стратегии (возможно, включая стратегию балансировки нагрузки).

Если соединение с сервисом не устанавливается, AnnoCenter помечает этот сервис как неработоспособный. В этом случае AnnoCenter не будет исключать сервис из списка, но и не предоставит его клиентам. Вместо этого он начнёт повторную попытку проверки сервиса. Если сервис восстановит работоспособность в течение минуты, он снова будет помечен как работоспособный и станет доступен для клиентов. В противном случае сервис останется помеченным как неработоспособный навсегда.

Для регистрации центра требуется только настроить порт и время ожидания. Информация о каждом новом сервисе автоматически записывается при его подключении.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <!--#lbs 配置 Port 注册中心监听端口 TimeOut 超时时间 毫秒
  dc:узел
  dc:никнейм: имя сервиса App001
  dc:имя: тег функции
  dc:ip: IP сервиса
  dc:порт: порт сервиса
  dc:тайм-аут: время ожидания сервиса
  dc:вес: вес сервиса число -->
  <Port>6660</Port>
  <TimeOut>120000</TimeOut>
  <Servers>
    <dc name="Vive.Anno.Plugs.TraceService,Vive.Anno.Plugs.DLockService,Vive.Anno.Plugs.EsLogService" nickname="App001" ip="10.112.93.122" port="6659" timeout="20000" weight="1" />
  </Servers>
</configuration>

#👑 Сервисы (AnnoService)

Сервис — это основная программа, разработанная в соответствии с принципом конфигурации разработки. Плагины разрабатываются на основе пакетов.

Инициализация конфигурации Реализация интерфейса: IPlugsConfigurationBootstrap.

using Vive.Anno.EngineData;

namespace Vive.Anno.Plugs.HelloWorldService
{
  /// <summary>
  /// Плагин запуска
  /// Зависит от типа программы *Domain.Bootstrap*
  /// </summary>
  [DependsOn(
      //typeof(Domain.Bootstrap)
      //, typeof(QueryServices.Bootstrap)
      //, typeof(Repository.Bootstrap)
      //, typeof(Command.Handler.Bootstrap)
    )]
  public class HelloWorldBootstrap : IPlugsConfigurationBootstrap
  {
    /// <summary>
    /// Сервис зависит от плагина после вызова
    /// </summary>
    public void ConfigurationBootstrap()
    {
      //throw new NotImplementedException();
    }

    /// <summary>
    /// Сервис зависит от плагина до вызова
    /// </summary>
    public void PreConfigurationBootstrap()
    {
      //throw new NotImplementedException();
    }
  }
}

Реализация функционального модуля Наследование: BaseModule.

Модуль называется в соответствии со стандартом именования XXXModule, формат имени модуля заканчивается на Module, например, HelloWorldViperModule. АнноСоИзи, СэйХай, инпут)). ОутпутДата;

возврат нью { ХелоуВорлдВайперМесдж = $"{нэйм} ты хорошо, в этом году {эйдж} лет", СоИзиМесдж = соИзиМесдж };

}

[АнноИнфо(Деск = "Два целых числа вычитаются равными нескольким? Я помогу тебе посчитать (x-y=?)")]

публик инт Субтракшн([АнноИнфо(Деск = "Целое число X")] инт икс, [АнноИнфо(Деск = "целое число Y")] инт уай) { возврат икс - уай; }

[АнноИнфо(Деск = "Купи товар, скоро наступит двенадцатое ноября")]

публик ПродуктДто БайПродукт([АнноИнфо(Деск = "Название товара")] стринг продактНэйм, [АнноИнфо(Деск = "Количество товара")] инт нэмбер) { дабл прайс = нью Ранадом(). Некст(2, 90); дикшнэйри<стринг, стринг> инпут = нью дикшнэйри<стринг, стринг>(); инпут. Эдд("продактНэйм", продактНэйм); инпут.Эдд("нэмбер", нэмбер. ТуСтрока()); вар продукт = Ньютонсоф. Джсон. ДжсонКонверт. ДесэриализеОбджект<ЭкшнРезалт<ПродуктДто>>(зис. ИнвокПросессор("Вайв. Анно. Плагс. СоИзи", "АнноСоИзи", "БайПродукт", инпут)).ОутпутДата; продукт. КантриОфОриджин = $"Китай Пекин — {продукт.КантриОфОриджин}"; ретурн продукт; }
} }

Конфигурация файла:


<?xml version="1.0" encoding="utf-8" ?>
<конфигурация>
  <!--0,0 Первая позиция — рабочая станция, вторая позиция — центр обработки данных
  (Все двухзначные числа AnnoService не могут повторяться, например, не может существовать [1,2] [1,2])
  Может существовать [1,2] [2,1] -->
  <АйдВоркер>0,0</АйдВоркер>
  <!--Имя приложения-->
  <АпНэйм>Ап001</АпНэйм>
  <!--Порт прослушивания-->
  <Порт>6659</Порт>
  <!--Вес-->
  <Вейт>1</Вейт>
  <!--Функция--> 
  <ФункНэйм>Вайв.Анно.Плагс.ЛоджикСервис,Вайв.Анно.Плагс.ТрейсСервис</ФункНэйм>
  <!--Игнорируемая функция Трейс,Логик-->
  <ИгнорФункНэйм></ИгнорФункНэйм>
  <!--Время ожидания в миллисекундах-->
  <ТаймАут>20000</ТаймАут>
  <!--Зарегистрированная цель-->
  <Ти Эс Айп="10.112.93.122" Порт="6660"/>
  <ИоКДиЭлЭл>
    <!-- IOC хранилище, область-->
    <Ассембли>Вайв.Анно.Репозитори</Ассембли>
  </ИоКДиЭлЭл>
  <аппСеттингс>
   
   </аппСеттингс>
</конфигурация>

🏄 Сетевой шлюз

Ссылка на Вайпер

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

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

Введение

Anno — это микросервисный фреймворк для быстрой разработки, в котором можно свободно выбирать gRPC или Thrift для связи на нижнем уровне. Он имеет встроенные функции обнаружения сервисов, отслеживания цепочки вызовов, cron-планирования, ограничения потока, шины событий, CQRS, DDD и опыт разработки, подобный MVC, а также поддерживает разработку с... Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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