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

OSCHINA-MIRROR/rulego-rulego

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

Если бизнес вашей системы сложен, а код перегружен

  • Если ваши бизнес-сценарии сильно настроены или часто меняются
  • Если вашей системе необходимо взаимодействовать с большим количеством сторонних приложений или протоколов
  • Или если вам нужно комплексное IoT-решение
  • Или если вам нужна централизованная обработка разнородных системных данных
  • Или если вы хотите попробовать горячее развёртывание на языке Go... Тогда фреймворк RuleGo будет очень хорошим решением.

Типичные варианты использования

  • Edge Computing: Разверните RuleGo на периферийных серверах для предварительной обработки данных, фильтрации, агрегации или вычислений перед отправкой в облако. Правила обработки данных и правила распределения могут быть динамически настроены и изменены через цепочки правил без перезапуска системы.
  • IoT: Собирайте отчёты об устройствах, выносите суждения на основе цепочек правил и запускайте одно или несколько действий, таких как отправка электронных писем, сигналов тревоги и связь с другими устройствами или системами.
  • Распределение данных: Распределяйте данные по различным системам с помощью HTTP, MQTT или gRPC на основе различных типов сообщений.
  • Интеграция приложений: Используйте RuleGo в качестве связующего звена для подключения различных систем или протоколов, таких как SSH, webhook, Kafka, очереди сообщений, базы данных, ChatGPT, сторонние системы приложений.
  • Централизованная обработка разнородных системных данных: Получайте данные из разных источников (таких как MQTT, HTTP, WS, TCP/UDP и т. д.), затем фильтруйте, преобразуйте формат и распространяйте их по базам данных, бизнес-системам или панелям мониторинга.
  • Индивидуальные бизнес-требования: Отделите индивидуальные или часто меняющиеся бизнес-процессы и управляйте ими с помощью цепочек правил RuleGo. Бизнес-требования меняются без необходимости перезапуска основной программы.
  • Сложная бизнес-оркестровка: Инкапсулируйте бизнес-логику в пользовательские компоненты, управляйте этими компонентами с помощью RuleGo и поддерживайте динамическую настройку и замену бизнес-логики.
  • Оркестровка микросервисов: Управляйте микросервисами с помощью RuleGo или динамически вызывайте сторонние сервисы для обработки бизнес-процессов и получения результатов.
  • Развязка бизнес-кода и логики: Например, системы начисления баллов пользователей, системы контроля рисков.
  • Автоматизация: Например, системы CI/CD, системы автоматизации процессов, системы автоматизации маркетинга.
  • Низкокодовый подход: Например, платформы с низким уровнем кода, системы iPaaS, ETL, системы типа LangFlow (интеграция с большими моделями для извлечения намерений пользователя, затем запуск цепочек правил для взаимодействия с другими системами или обработки бизнеса).

Диаграмма архитектуры

<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 шага:

  1. Определите цепочки правил с помощью JSON:
  2. Импортируйте пакет RuleGo и используйте определение цепочки правил для создания экземпляра механизма правил:
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)
  1. Передайте экземпляру механизма правил полезные данные сообщения, тип сообщения и метаданные сообщения для обработки, после чего механизм правил обработает сообщение в соответствии с определением цепочки правил:
// 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 определения цепочки правил

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 )

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

Введение

Описание недоступно Расширить Свернуть
Go
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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