图林白板_流数据:如何从状态转移到流–白板演练(第2部分)

图林白板

在本周的白板演练第二部分中,MapR的首席应用架构师Ted Dunning谈到了采用基于流数据的微服务架构所获得的设计自由。 当您一次移动一个步骤时,从过于依赖共享全局状态数据库的旧式架构迁移到基于流的流架构时,微服务之间的隔离将减少原始数据库的负担,提高了灵活性并通常提高了速度。

如果您想了解有关构建基于流的体系结构的更多信息,请阅读作为MapR融合平台一部分的MapR Streams或参阅“ Streaming Architecture”一书。

在这里观看第一部分。

这是未经编辑的转录:

嘿。 今天我想谈一谈从状态样式转换为流程样式的问题。 我是MapR的首席应用架构师Ted Dunning。 这完全是一场革命,是目前正在发生的对计算的重新平台。 这确实促进了从旧式孤立的系统向新式微服务,大数据类型的系统的迁移。

现在,我们在另一个视频中讨论了流量和状态之间的区别,但是只要说一下状态,我们就倾向于共享诸如共享数据库之类的东西。 共享数据库具有诸如事务之类的昂贵操作,这使我们能够简化具有共享状态的系统交互的问题,但最终变得太昂贵而无法扩展到许多企业需要运行的规模。

因此,我们将改为流动。 这是一种新样式,我们将业务事件放入某种队列中,而服务则更新其自己的本地状态。 除了这些消息进入的队列和主题之外,我们避免出现任何全局状态。 在Kafka中,这将是代理群集中的主题。 在MapR Streams中 ,它将是中的主题。 当然,MapR中可以有很多流。 在旧样式中,我们将使进程A,B和C都与共享数据库通信。 不可避免地,正如您可能猜测并根据您自己的经验所发生的那样,这会变得炙手可热。

现在它可能会变得很热,因为有太多进程正在访问它,但是它也可能以一种更人性化的方式变得很热。 因为这是共享资源,并且是共享数据库,所以如果A想要进行更改,则B和C必须同意更改是可以的。 如果我们在这个团队中有10个人,在这个团队中有10个人,并且在这个团队中有10个人,那么最终我们必须在30个人之间达成协议。 真的很难 因此,我们结束了这些大型会议。 我们最终拥有大量涉及许多人的工程变更控制,这极大地减缓了进度。 最终,人们开始尝试做某事,或者开始设计尚未使用的500个虚拟列的数据库,这样他们就可以避免彼此之间的交谈过多,而不必进行更改。 好吧,那真的是非常不愉快。

我不知道您是否曾经在这样的系统上工作过。 超载问题和委员会问题(问题的社会方面)都很难解决。 最终,由于这种问题,大型组织的动作往往非常缓慢。

在某些情况下,但并非在所有情况下,我们都可以从此迁移到基于流的体系结构。 如果我们可以根据业务事件(可以始终应用的业务事件)来抽象化数据库中发生的某些更改。 可能已应用它们,发现了故障,并发送了更正事件,但是这些都是实际事件,在某种意义上总是会成功; 它们始终可以应用于所涉及的所有本地州。 假设,如果要在迁移的第一步中将C与其他C隔离开,我们可以将所有这些箭头更改为单向,并使所有更新以业务事件的形式进行。

现在的样子是,A,B和C将业务事件发送到某种队列,MapR Stream中的Kafka主题或MapR主题。 这些事件正在更新数据库。 这是旧的共享数据库。 非常热。 现在它不那么热了,因为C不再使用它了。 C现在拥有自己的私有数据库,由于它是完全私有的,完全专用于C的特殊需求,因此保持了很好的状态。 它甚至可能在内存数据库中,或者可能成为NoSQL数据库。 您可以更改技术,可以更改结构,也可以更改设计。 如果有很多C甚至不需要的列,则数据库可能会变小。 这样可以使其更快,依此类推。

因此,业务事件消失了,它们并行地应用于这些不同的数据库。 我们确实失去了一点同步,但是如果我们可以使用队列提供的顺序,那么正在进行更改的A会说:“我已经在数据库中处于这种状态,并且正在进行更改相对于此。” 然后,C可以理解这些更改。 它将确保等待直到那时为止的那些更新已应用到其本地数据库。

因此,这里的技巧是获得可以并行应用的业务事件。 到那时,我们可以说的是C代替了老式的微服务,已经成为一个孤立的micr服务。 它从大型服务转移到了微服务。

现在,我们周围有了这个抽象边界,任何人都看不到它。 无论C基于其合同被指定具有什么外部交互,它都将仍然具有,但是对其本地状态的所有更新都必须来自该队列,并且它对世界的共享感知所做的所有更新都必须进入该队列中。商业活动的形式。 当然,这些必须更高级别,但这意味着内部已经隐藏了,运行C的团队可以自由地将其进一步发展到微服务中,或者改变结构或改变事物的工作方式。 由于C已被隔离,所以现在发生了各种自由。 这是迁移到流式计算的第一步,这对于非常大规模是必需的。

流的代名词是微服务架构,这是第一步。 我们已经取了一个大的,相互作用的字符串球,并且已经从其中抽出一根线并提供了一项微服务。 这是我们漫长旅程的第一步。 这一切都需要一段时间才能完成,但这是您的第一步。 这是令人兴奋的一步,也是令人兴奋的旅程。 非常感谢

翻译自: https://www.javacodegeeks.com/2016/08/streaming-data-move-state-flow-whiteboard-walkthrough-part-2.html

图林白板

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值