Nature

English|中文

Nature 是什么?

极简开发平台 && 流式计算引擎

Nature 是一个基于网络的适用于各种编程语音的极简开发平台。Nature 提供了面向业务基于配置流式计算引擎,业务的差异性不再体现为传统的一个个独立的代码系统,开发者不用考虑业务流程控制、时间调度、幂等、失败重试和高并发等问题。所有的开发工作都被分割成互不影响可独立编程的最小单元,每个单元只需关注一个输入的业务对象和一个输出的业务对象即可,而这些业务对象的流转控制和存储完全由 Nature 来代劳。Nature 使业务对代码具有完全的控制能力,不会受既有系统这样或那样的约束。这会有两个方面的重要意义:一是更容易塑造你的系统,二是可以大幅度减少开发投入。

数据中心

Nature 提供了统一的数据存储模型。开发者不再需要为每个业务实体设计数据表,Nature 使用统一的类似于Key-Value机制存储所有的数据实例。相对于传统项目有下面几点您可能比较关注:

如何使用

我们需要做下面的工作

  1. 创建一个mysqlmariadbTidb 数据库,并执行 schema.sql

  2. Meta 数据表里定义多个业务对象,如:我们定义订单订单账两个业务对象

    sql INSERT INTO meta (full_key, description, version, states, fields, config) VALUES ('B', 'sale/order', 'order', 1, '', '', ''), ('B', 'finance/orderAccount', 'order account', 1, 'unpaid|partial|paid', '', '{"master":"B:sale/order:1"}');

  3. relation 数据表使定义关系将多个业务对象关联起来(相当于流式计算中的 map),如上面的订单订单账可以有这样的定义:

    sql INSERT INTO relation (from_meta, to_meta, settings) VALUES('B:sale/order:1', 'B:finance/orderAccount:1', '{"executor":{"protocol":"localRust","url":"nature_demo:order_receivable"},"target":{"states":{"add":["unpaid"]}}}');

  4. 请依据关系定义中指定的 protocol 实现用于业务对象间转换的逻辑,我们称之为Executor。如对于订单订单账来讲这个逻辑是:

  5. 配置好.env 文件中的DATABASE_URL属性以指向您创建的数据库,

  6. 启动 natrue.exe 和 retry.exe。

  7. 对 Nature 发起 http post 请求,如将订单数据提交数据到 Nature,请参考Nature接口定义

深入了解Nature

示例及功能讲解

Nature 架构说明

使用 Meta

使用 Relation

内置执行器

一些业务情景的解决方法

注意

本系统还处于早期阶段,有不妥之处,还请多提建议。