Viper
Viper — это проект на основе микросервисной платформы Anno, который представляет собой Dashboard и пример проекта. В Anno для связи используется gRPC и Thrift. Проект включает в себя обнаружение сервисов, трассировку вызовов, планирование задач с помощью Cron, ограничение потока, шину событий и другие функции.
Скриншоты:
🎩 Реализация на 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.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 )