Если бизнес вашей системы сложен, а код перегружен
<img src="doc/imgs/architecture.png" width="100%">
<p align="center">Диаграмма архитектуры RuleGo</p>
<img src="doc/imgs/rulechain/demo.png" style="height:40%;width:100%;"/>
Установите RuleGo с помощью команды go get:
go get github.com/rulego/rulego
# или
go get gitee.com/rulego/rulego
RuleGo чрезвычайно прост в использовании. Просто выполните следующие 3 шага:
import "github.com/rulego/rulego"
//Load the rule chain definition file.
ruleFile := fs.LoadFile("chain_call_rest_api.json")
// Create a rule engine instance using the rule chain definition
ruleEngine, err := rulego.New("rule01", ruleFile)
// Define message metadata
metaData := types.NewMetadata()
metaData.PutValue("productType", "test01")
// Define message payload and message type
msg := types.NewMsg(0, "TELEMETRY_MSG", types.JSON, metaData, "{\"temperature\":35}")
// Hand over the message to the rule engine for processing
ruleEngine.OnMsg(msg)
``` ### Управление API механизма правил
- Динамическое обновление цепочек правил
```go
// Динамическое обновление логики цепочки правил
err := ruleEngine.ReloadSelf(ruleFile)
// Обновление узла в цепочке правил
ruleEngine.ReloadChild("node01", nodeFile)
// Получение определения цепочки правил
ruleEngine.DSL()
// Загрузка всех определений цепочек правил в папке в пул механизмов правил
rulego.Load("/rules", rulego.WithConfig(config))
// Получение уже созданного экземпляра механизма правил по ID
ruleEngine, ok := rulego.Get("rule01")
// Удаление уже созданного экземпляра механизма правил
rulego.Del("rule01")
// Создание конфигурации по умолчанию
config := rulego.NewConfig()
// Отладочный обратный вызов узла, конфигурация узла должна быть установлена на debugMode:true, чтобы вызвать вызов
// Информация о входе и выходе узла будет вызывать эту функцию обратного вызова
config.OnDebug = func (chainId,flowType string, nodeId string, msg types.RuleMsg, relationType string, err error) {
}
// Использование конфигурации
ruleEngine, err := rulego.New("rule01", []byte(ruleFile), rulego.WithConfig(config))
DSL определения цепочки правил
Основной функцией RuleGo является его компонентная архитектура, в которой вся бизнес-логика инкапсулирована в компоненты, которые можно гибко настраивать и использовать повторно. В настоящее время в RuleGo встроен широкий спектр часто используемых компонентов.
RuleGo предоставляет модуль Endpoint для унифицированной интеграции данных и обработки разнородных систем. Подробнее см.: Конечная точка.
RuleGo выполняет большую часть своей работы во время инициализации, поэтому запуск цепочки правил почти не добавляет дополнительных накладных расходов в систему, а потребление ресурсов чрезвычайно низкое, что делает его особенно подходящим для работы на периферийных серверах. Кроме того, RuleGo использует направленный ациклический граф (DAG) для представления цепочки правил, где каждое входное сообщение необходимо обрабатывать только вдоль пути на графике, не сопоставляя все правила, что значительно повышает эффективность обработки и маршрутизации сообщений, а также экономит системные ресурсы.
Тестирование производительности:
Компьютер: Raspberry Pi 2 (900 МГц Cortex-A7*4, 1 ГБ LPDDR2)
Размер данных: 260 Б
Цепочка правил: Фильтрация JS-скрипта -> Сложное преобразование JS -> HTTP-запрос
Результаты теста: 100 одновременных подключений и 500 одновременных подключений, потребление памяти составляет около 19 Мбайт
Дополнительные тесты производительности
Приветствуются любые формы вклада, включая отправку проблем, предложений, документации, тестов или кода. Руководство по вкладу
RuleGo использует лицензию Apache 2.0, пожалуйста, обратитесь в файл LICENSE для получения подробной информации.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )