dot 快速的未来正在您所在的城市举办的活动中。

加入我们参加 Redis 发布会

如何使用 Redis 构建分布式业务规则管理系统

速度和效率是当今快节奏商业环境中卓越的标志。 

陷入手动、僵化流程的组织将承受着笨重架构的重担,并且将永远落后于业务机会。 

但那些实现了流程自动化的组织将更加高效、更加灵活, _并且更有可能_ 经历增长。这就是为什么组织需要分布式业务规则管理系统 (DBRMS)。 

Vishrut Kohli 希望对商业界产生影响,因此构建了他自己的 DBRMS Bonsai。通过使用 Redis,Bonsai 保证用户能够使用应用程序实时自动化流程,通过减少滞后的可能性来最大程度地提高生产力水平。 

让我们来看看这个应用程序是如何制作的。但在我们深入探讨之前,我们要指出,我们还有许多创新的应用程序供您在 Redis Launchpad 上查看。 

因此,如果您喜欢这篇文章,请在阅读完之后浏览一下!

https://www.youtube.com/embed/GuAkzNbNvRE

如何使用 Redis 构建分布式业务规则管理系统

  1. 您将构建什么?
  2. 您需要什么?
  3. 架构
  4. 入门
  5. 设置后端
  6. 设置前端 
  7. 工作原理
  8. 如何执行不同的功能

1. **您将构建什么?**

您将构建一个分布式业务规则管理平台,该平台将帮助企业在整个企业范围内创建、管理和实施可扩展的业务规则。许多业务任务可以自动化,并释放出可以投资于业务其他方面的额外资源。 

该应用程序将使组织能够指定、部署和管理业务决策规则和决策逻辑,以便应用程序能够始终如一地快速做出明智的决策,无需人工干预。 

下面,我们将重点介绍您需要哪些组件来使该应用程序栩栩如生,并引导您完成实施过程的每个步骤。 

准备开始了吗?

好的,让我们直接开始。 

2. **您需要什么?**

  • Python: 作为一种用途广泛的功能强大的编程语言使用
  • Redis: 一个内存数据存储,用于以亚毫秒级延迟摄取、处理和分析实时数据。
  • RedisJSON: 用作在 Redis 中提供 JSON 支持的模块
  • RedisTimeSeries: 用作将时间序列数据结构添加到 Redis 的模块

3. **架构**

4. **入门**

确保您的 Redis Stack 数据库已启动并正在运行

docker run -d --name redis-stack -p 6379:6379 -p 8001:8001 redis/redis-stack:latest

5. **设置前端**

使用 Create React App 入门

该项目使用 Create React App 初始化。

步骤 1:克隆前端存储库

git clone https://github.com/redis-developer/bonsai-frontend

步骤 2:安装依赖项

yarn install

步骤 3:使用可用的脚本

在项目目录中,您可以运行以下脚本

yarn start

在开发模式下运行应用程序。

打开 https://#:3000 在浏览器中查看。

如果您进行编辑,页面将重新加载。

您还将在控制台中看到任何 lint 错误。

yarn test

在交互式监视模式下启动测试运行器。

有关更多信息,请参阅有关 运行测试 的部分。

yarn build

构建应用程序以进行生产,并将其放到 build 文件夹中。

它会在生产模式下正确捆绑 React,并优化构建以实现最佳性能。

构建已缩小,并且文件名包含哈希值。

您的应用程序现在已准备好部署。 

有关更多信息,请参阅有关 部署 的部分。

yarn eject

注意:这是一次性操作。弹出后,您将无法返回!

如果您对构建工具和配置选择不满意,您随时可以弹出。此命令将从您的项目中删除单个构建依赖项。

相反,它会将所有配置文件和传递依赖项(webpack、Babel、ESLint 等)复制到您的项目中,以便您完全控制它们。除了弹出之外的所有命令仍然有效,但它们将指向复制的脚本,以便您对其进行调整。此时,您将独自一人。

您不必始终使用弹出。精心策划的功能集适合中小型部署,您不应该感到有义务使用此功能。但是,我们理解,如果在您准备好时无法对其进行自定义,那么此工具将毫无用处。

步骤 4. 克隆 Bonsai 规则引擎

git clone: ​​https://github.com/redis-developer/bonsai

步骤 5. 安装 Python 依赖项

pip3 install -r requirements.txt

步骤 6. 执行脚本

python3 manage.py runserver

6. **工作原理**

关键字

  • 命名空间
  • 规则
  • 实体

命名空间

最合理的规则划分方式是基于命名空间。命名空间是一组规则,这些规则将对一组数据进行评估。例如,在这篇文章的后面,您将构建一个用于忠诚度管理系统的命名空间,所有相关的规则都将保存在该命名空间下。 

  • 用于保存数据的结构如下
{
 "tax_system": {}
}

这里的命名空间为:tax_system.

用于创建命名空间的命令为

JSON.SET namespace_name . {}

 

实体

实体指的是命名空间的输入,在评估命名空间中存在的规则后,将提供输出。 

规则

子关键字
  • 谓词:这表示规则的输入条件。
  • 结果:这表示规则的输出条件。
  • 运算符:我们有 7 个运算符
    – eq 表示 =
    – range 表示值应位于给定范围内(不包括上限)
    – contains 表示字符串应包含给定的输入值。
    – gt 表示大于或 >
    – gte 表示大于或等于 >=
    – lt 表示小于 <
    – lte 表示小于或等于 <=

例如,我们想要创建一个规则来确定住在安大略省多伦多市的公民的税收价值。此外,此人缴纳 35% 的所得税。因此,我们有两个变量——省份和城市,但只有一个输出税率。 

因此,在这种情况下,安大略省的谓词(输入)的一个示例可以是一个包含 4 个部分的谓词

{
          "attribute_name": "Province", # the name of your input
          "operator": "eq", # type of operation
          "type": "string", # type of input such as INT or STRING
          "value": "Ontario" # value of the input you want to gove 
 }

每条规则都是一个命令,该命令决定对任何特定输入(实体)应该输出什么。每条规则将通过以下格式保存在命名空间中:安大略省和城市是多伦多,税率为 35。 

这是规则对象: 

{
"tax_system": {
  "123456": {
    "id": 123456,
    "namespace": "tax_system",
    "rule_description": "this is a test rule",
    "predicates": [
      {
        "attribute_name": "Province",
        "operator": "eq",
        "type": "string",
        "value": "Ontario"
      },
      {
        "attribute_name": "City",
        "operator": "eq",
        "type": "string",
        "value": "Toronto"
      }
    ],
    "result": {
      "attribute_name": "tax_rate",
      "operator": "eq",
      "type": "string",
      "value": "35"
    }
  }
}
}

这里的命名空间为:loyalty_system,规则 ID 为:123456.

用于更新命名空间中规则的命令为

JSON.SET namespace_name .rule_id rule_object

用于获取命名空间中所有规则的命令为

JSON.GET namespace_name

用于按规则 ID 获取命名空间中的一条规则的命令为

JSON.GET namespace_name path .rule_id

7. **如何执行不同的功能**

如何创建规则

在主屏幕上,单击“创建”。

接下来,填写不同的字段以完成规则的创建。 

规则可视化

创建规则后,您将能够以流程图的形式轻松地可视化它们。 

规则评估

评估流程包含用于创建规则的所有属性。该应用程序具有一段代码,该代码使用模式匹配算法来查看哪条规则最适合实体,以及发出执行规则的顺序。

规则分析

RedisTimeSeries 允许您可视化所有指标,并帮助您根据所有规则在其命名空间中的性能做出数据驱动的决策。 

用于公开时间序列数据的命令

TS.ADD ruleId * 1

结论:使用实时数据创建提高效率的 DBRMS 平台

DBRMS 平台可以解放员工和企业,让他们不必执行对组织至关重要但耗时且单调的任务。通过 DBRMS 平台自动化这些任务可以彻底振兴组织,让所有员工将注意力集中在不太琐碎的任务上。 

但是,为了使 DBRMS 系统有效,它需要由实时数据库驱动,以始终如一地保证卓越的性能水平。即使是短暂的延迟也会使流程效率停滞不前,从而对生产力产生负面影响。 

得益于 Redis,所有业务规则都可以在实时状态下进行管理、更新和维护。这使您可以实时洞察性能,并做出即时的数据驱动决策,帮助您抓住业务机会。

如果您想了解更多关于 Bonsai 的创建过程,请务必观看 Vishrut 的 YouTube 视频。但这还不是全部... 我们还提供了一系列创新的应用程序供您在 Redis Launchpad 上查看。

来自世界各地的程序员正在利用 Redis 的魔力,对日常生活产生影响。

快来一起体验吧。获得灵感。享受 Redis 的乐趣。

谁开发了这个应用程序?

Vishrut Kohli

Vishrut 是一位全栈开发人员和数据爱好者,精通 Python、MATLAB/octave 和机器学习算法。如果您想及时了解他的所有项目,请务必在 GitHub 上关注他。