dot Redis 8 来了——而且它是开源的

了解更多

如何使用 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

在开发模式下运行应用。

打开 http://localhost:3000 在浏览器中查看。

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

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

yarn test

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

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

yarn build

将应用构建到 build 文件夹中以供生产环境使用。

它正确地在生产模式下打包 React 并优化构建以获得最佳性能。

构建被压缩,文件名包含哈希值。

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

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

yarn eject

注意:这是一个单向操作。一旦弹出,您就无法撤销!

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

相反,它将把所有的配置文件和传递性依赖项(webpack、Babel、ESLint 等)直接复制到您的项目中,以便您对其拥有完全的控制权。除了 eject 之外的所有命令仍然有效,但它们将指向复制的脚本,以便您可以对其进行调整。此时,您将自行负责。

您不必使用 eject。精选的功能集适用于小型和中型部署,您不应感到有义务使用此功能。但是,我们理解,如果您无法在准备好时对其进行自定义,这个工具就没有用处了。

步骤 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% 的所得税。因此我们有两个变量——省份和城市,但一个输出 tax_rate。 

因此在这种情况下,一个省份的输入谓词(input)示例是 Ontario,它可以是一个由 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 
 }

每条规则都是一个命令,决定了针对任何特定输入(实体)应该产生什么输出。每条规则将通过以下格式保存到命名空间中:Ontario and the city is Toronto the tax rate will be 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,rule_id 是:123456。

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

JSON.SET namespace_name .rule_id rule_object

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

JSON.GET namespace_name

用于通过 rule_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 上关注他。