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

OSCHINA-MIRROR/stoneson-Viper

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

Viper

Viper — это проект на основе микросервисной платформы Anno, который представляет собой Dashboard и пример проекта. В Anno для связи используется gRPC и Thrift. Проект включает в себя обнаружение сервисов, трассировку вызовов, планирование задач с помощью Cron, ограничение потока, шину событий и другие функции.

Скриншоты:

  1. Скриншот 1.
  2. Скриншот 2.
  3. Скриншот 3.
  4. Скриншот 4.
  5. Скриншот 5.
  6. Скриншот 6.
  7. Скриншот 7.
  8. Скриншот 8.
  9. Скриншот 9.
  10. Скриншот 10.
  11. Скриншот 11.
  12. Скриншот 12.
  13. Скриншот 13.

🎩 Реализация на Java: https://gitee.com/stoneson/wanno/tree/master/samples/Thrift/Anno.javaService

🔥 Онлайн-демонстрация: http://49.232.112.70 * учётная запись: anno; * пароль: 123456.

🎃 Anno — распределённая платформа разработки

Anno — это распределённая среда разработки, которая поддерживает .NET Core 3.1 и .NET Framework 4.6.1.

Как запустить Viper

1. MySQL-база данных

Запустите скрипт создания базы данных:

  • Viper\database\viper20210617_01.sql.

Измените строку подключения к базе данных в файле Viper.config в папке ViperService\bin\Debug\net5:

<appSettings>
  <!-- 数据库连接字符串 Mysql-->
  <add key="ConnStr" value="server=127.0.0.1;database=viper;uid=bif;pwd=123456;SslMode=None;"/>
</appSettings>

2. Запуск центра регистрации

Откройте файл конфигурации ViperCenter.config в папке Viper\ViperCenter\bin\Debug\net5 и измените значения параметров Port и TimeOut:

<!--ViperCenter 端口-->
<Port>7010</Port>
<!--ViperCenter 超时时间-->
<TimeOut>120000</TimeOut>

Также измените содержимое раздела Servers:

<Servers>
   <!--dc 注册到注册中心的 服务节点 (下面的内容是ViperService 启动后自动写入的内容)-->
    <dc name="Anno.Plugs.LogicService,Anno.Plugs.TraceService,Anno.Plugs.ViperService" nickname="ViperService-01" ip="100.100.100.9" port="7011" timeout="20000" weight="1" />
  </Servers>

Перейдите в папку Viper\ViperCenter\bin\Debug\net5, запустите команду dotnet ViperCenter.dll и убедитесь, что запуск прошёл успешно (см. скриншот).

3. Запуск ViperService

Откройте файл конфигурации ViperService.config в папке Viper\ViperService\bin\Debug\net5 и внесите изменения в параметры IdWorker, AppName, Port, Weight, TsIp и TsPort:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <!--0,0 第一位是 工作站,第二位数据中心
  (所有的 AnnoService 的 两位数不能重复例如不能存在【1,2】【1,2】)
  可以存在【1,2】【2,1】
  -->
  <IdWorker>0,0</IdWorker>
  <!--App名称-->
  <AppName>ViperService-01</AppName>
  <!--监听端口-->
  <Port>7011</Port>
  <!--权重-->
  <Weight>1</Weight>
  <!--注册到的目标-->
  <Ts Ip="127.0.0.1" Port="7010"/>

В большинстве случаев достаточно изменить только параметры TsIp и TsPort.

Перейдите в папку Viper\ViperService\bin\Debug\net5, запустите команду dotnet ViperService.dll и убедитесь, что запуск прошёл успешно (см. скриншот). Новый текст:

new Exception("Исключение потребления, демонстрация тестирования: уведомление о сбое потребления от FirstMessageExceptionEventHandler!");
}
}

4. Промежуточное ПО

4.1. Промежуточное ПО кеширования

💪 Install-Package Anno.EngineData.Cache

Install-Package Anno.EngineData.Cache
using System;
using System.Collections.Generic;
using System.Text;
using Anno.EngineData;
using Anno.EngineData.Cache;

namespace Anno.Plugs.CacheRateLimitService
{
    public class CacheModule : BaseModule
    {
        /*
        Параметр 1: длина кэша
        Параметр 2: время жизни кэша
        Параметр 3: является ли время жизни кэша скользящим
        */
        [CacheLRU(5,6,true)]
        public ActionResult Cache(string msg)
        {
            Console.WriteLine(msg);
            return new ActionResult(true, null,null,msg);
        }
    }
}

4.2. Промежуточное ПО ограничения скорости

💄 Install-Package Anno.EngineData.RateLimit

Install-Package Anno.EngineData.RateLimit
using System;
using System.Collections.Generic;
using System.Text;
using Anno.EngineData;
using Anno.RateLimit;

namespace Anno.Plugs.CacheRateLimitService
{
    public class LimitModule : BaseModule
    {
        /*
        Параметр 1: алгоритм ограничения скорости — токен-ведро или ведро с утечкой
        Параметр 2: временной интервал ограничения скорости в секундах
        Параметр 3: максимальное количество запросов, которое может быть выполнено за один временной интервал
        Параметр 4: ёмкость ведра
        */
        [EngineData.Limit.RateLimit(LimitingType.TokenBucket,1,5,5)]
        public ActionResult Limit(string msg)
        {
            Console.WriteLine(msg);
            return new ActionResult(true, null, null, msg);
        }
    }
}

#dotnet dotnet publish "E:\gitProject\Anno\DCS\AppCenter\AppCenter.csproj" -c Release -r linux-x64 -o "E:\gitProject\Anno\DCS\AppCenter\bin"

#Описание файла конфигурации

{
  "Target": {
    "AppName": "traceWeb",--имя службы
    "IpAddress": "127.0.0.1",--адрес центра регистрации
    "Port": 6660,--порт центра регистрации
    "TraceOnOff": true--включить отслеживание цепочки вызовов
  },
  "Limit": {--ограничение скорости
    "Enable": true,--включать ли ограничение скорости
    "TagLimits": [--ограничения по тегам
      {
        "channel": "*",--канал
        "router": "*",--маршрутизатор
        "timeSpan": "10",--единица времени в секундах
        "rps": 1,--количество допустимых запросов за единицу времени
        "limitSize": 2--размер буфера для хранения
      }
    ],
    "DefaultIpLimit": {--политика ограничения скорости по умолчанию для IP
      "timeSpan": 1,
      "rps": 20,
      "limitSize": 200
    },
    "IpLimits": [--политики ограничения скорости для IP (ipMatch ссылается на IPAddressRange)
      {
        "ipMatch": "0.0.0.1",
        "timeSpan": 1,
        "rps": 100,
        "limitSize": 100
      },
      {
        "ipMatch": "192.168.0.10 - 192.168.10.20",
        "timeSpan": 1,
        "rps": 100,
        "limitSize": 100
      }
    ],
    "White": [--белый список
      "0.0.0.1",
      "192.168.1.2",
      "192.168.2.18"
    ],
    "Black": [--чёрный список
      "0.0.0.2",
      "192.168.3.18"
    ]
  }
}

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

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

Введение

Viper — это проект Dashboard и пример проекта, разработанный на основе микросервисного движка Anno. В качестве средств коммуникации на нижнем уровне в Anno используются grpc и thrift. Имеются встроенные функции обнаружения сервисов, отслеживания цепочки вызовов, cron-планирования, ограничения потока и шины событий. Развернуть Свернуть
MIT
Отмена

Обновления

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

Участники

все

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

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