区块链研究实验室-解析以区块链为持久层的CQRS模型作用(下)

本文探讨了CQRS(命令查询责任分离)模式与区块链技术的结合应用,详细阐述了两者如何协同工作以提高系统的透明度和可追溯性。通过共享命令和模型逻辑,文章解释了这种组合如何为第三方提供状态缓存的有效性验证,以及如何在不同场景下选择性地共享信息。

CQRS简述

命令查询的责任分离Command Query Responsibility Segregation (简称CQRS)模式是一种架构体系模式,能够使改变模型的状态的命令和模型状态的查询实现分离。

因此,我们将使用命令模型来更新状态,使用查询模型来获取状态。

CQRS通常与 Event-Sourcing一起使用,但不一定要一起使用。 Event-Sourcing确保在事件对象中捕获状态的每个更改并保持不变。

Event-Sourcing有一些我们想要应用于区块链的预期好处。

  • 完全重建:我们可以重建应用程序状态,从空应用程序的事件日志中重新运行事件。

  • 时间查询:我们可以确定特定时间应用程序的状态。

  • 事件回放:如果某些事件出现错误,我们可以计算得出后果并给以修复。

对于以上的应用,利用区块链技术是非常难实现的;

什么是事件日志?这是一个保存所有事件的数据库。

命令和事件不包含逻辑,只包含数据。它们是数据传输对象(DTO)。

命令显示更改状态的意图。事件分享发生的事件,这是一个巨大的差异。命令可能会失败,同时事件会反映系统中已经发生的事情。

为什么将CQRS模型与区块链一起使用是有意义的?

我们需要代表一个应该随着时间的推移改变其状态并且仍然使用区块链的商业事物。

CQRS模型帮助我们定义一组命令,我们将存储在区块链上,并使用公共API发布我们的查询模型。

在链上存储命令有助于我们重新创建状态并审核第三方提供的状态缓存,以确定它是有效还是无效。

共享命令有助于我们快速让其他人了解如何通过可信网络与我们的域模型进行交互,而无需共享我们的域模型内部逻辑。

作为一个团队,我们可以选择我们想要的共享信息级别。

案例 - 共享命令:

人们将需要

a)依靠我们的API来阅读;

b)模拟我们的模型逻辑以防出现问题并证明我们在作弊;

案例 - 共享命令和模型逻辑:

人们将

a)依靠我们的API来阅读;

b)创建一个应用程序来执行我们的模型逻辑而不依赖于我们的API;

案例 - 共享所有应用程序:

人们将 

a)依赖我们的API来阅读 ;

 b)在他们的终端启动所有应用程序而不使用我们;

共享模型逻辑和一切都有一个灰色限制。

在我们的例子中,我们选择共享命令和模型逻辑。我们希望其他人能够自己执行此操作,并依赖于我们的某些特定逻辑,如复杂的查询模型。

使用CQRS模型,我们能够以不同的方式扩展命令模型和查询模型。我们希望系统快速响应复杂的查询,但我们不介意慢写,因为资产创建或管理不像读取数据那么频繁。

此外,这种方法允许我们选择只是共享命令。对于选择分享内容和不分享内容的公司而言,这一点非常重要。

想象中的公司差异化是如何管理信息,而不是控制资产创造。

具体实现代码请去查看:区块链研究实验室

本文转载公众号:区块链研究实验室

先展示下效果 https://pan.quark.cn/s/a4b39357ea24 遗传算法 - 简书 遗传算法的理论是根据达尔文进化论而设计出来的算法: 人类是朝着好的方向(最优解)进化,进化过程中,会自动选择优良基因,淘汰劣等基因。 遗传算法(英语:genetic algorithm (GA) )是计算数学中用于解决最佳化的搜索算法,是进化算法的一种。 进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择、杂交等。 搜索算法的共同特征为: 首先组成一组候选解 依据某些适应性条件测算这些候选解的适应度 根据适应度保留某些候选解,放弃其他候选解 对保留的候选解进行某些操作,生成新的候选解 遗传算法流程 遗传算法的一般步骤 my_fitness函数 评估每条染色体所对应个体的适应度 升序排列适应度评估值,选出 前 parent_number 个 个体作为 待选 parent 种群(适应度函数的值越小越好) 从 待选 parent 种群 中随机选择 2 个个体作为父方和母方。 抽取父母双方的染色体,进行交叉,产生 2 个子代。 (交叉概率) 对子代(parent + 生成的 child)的染色体进行变异。 (变异概率) 重复3,4,5步骤,直到新种群(parentnumber + childnumber)的产生。 循环以上步骤直至找到满意的解。 名词解释 交叉概率:两个个体进行交配的概率。 例如,交配概率为0.8,则80%的“夫妻”会生育后代。 变异概率:所有的基因中发生变异的占总体的比例。 GA函数 适应度函数 适应度函数由解决的问题决定。 举一个平方和的例子。 简单的平方和问题 求函数的最小值,其中每个变量的取值区间都是 [-1, ...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值