lambda 异步线程_使用Lambda架构的简单异步微服务

lambda 异步线程

Lambda体系结构是一个简单,功能强大但微服务有限的示例。 因为它是如此简单,所以您想尽可能多地使用它,以在系统中公开不支持此交互模型的更复杂的服务/组件。

Lambda体系结构依赖于数据模型,该数据模型具有只能作为记录系统使用的仅追加的不可变数据源。 它用于摄取和处理添加到现有事件的带有时间戳的事件,而不是覆盖它们。 根据数据的自然时间排序来确定状态。

翻译功能

微服务接收消息并产生消息。 它的输入是仅附加数据结构,并且该函数没有其自身的状态,该状态不是从其输入派生的。

Lambda建筑

这个简单的转换器对于从外部系统获取消息并将这些消息规范化为内部格式很有用。 相反,您可以将消息从内部消息格式转换为外部格式。

处理历史

名义上,迄今为止所有消息均构成该功能的输入。 在每个新消息上重播每个消息太昂贵。 您可以缓存从这些消息派生的关键信息,以提供实时解决方案。

带状态的Lambda建筑

这是标准函数的一种变体,在标准函数中根据输入保留状态。 只要这仅仅是一种优化,而不是改变行为,它仍然是一种功能。 即是所有消息的功能,而不仅仅是一条消息。

具有具有私有状态的功能可为其提供存储空间,并使它可用于更复杂的操作,例如控制(许可,打开和关闭功能),一段时间内消息的匹配(例如顺序匹配)

将它们放在一起

通过具有用于进出消息的翻译器以及中央控制系统,您可以构建更复杂的处理系统。

Lambda建筑服务链

这里的功能应该构成您的关键路径。 您希望一条简单的消息能够在尽可能短的时间内从系统的一端传递到另一端。 在Java中,这意味着99%的时间中只有10微秒。 除了快速之外,还可以轻松地独立测试每个功能,并且无需传输即可进行测试,从而简化了调试。

非关键路径功能。

并非所有事情都可以或应该走在关键道路上。 某些操作要么使用大量的CPU,要么需要从数据库等外部系统获取数据。 您需要一种与这些系统进行交互的方式,而又不会影响关键路径。 使用反馈是实现此目的的简单方法。

Lambda建筑服务反馈

在此图中,较慢的功能是受CPU限制的策略,但是您可以使用例如从数据库获取数据而不会降低关键路径的组件。

阅读更多

您可以阅读我之前的文章,了解如何在Java中实现这些Lambda体系结构组件并轻松对其进行测试。 Micro Performance for Performance也提供了如何实现简单服务以异步访问JDBC数据库的方法JDBC Gateway Microservice

对于低延迟,高吞吐量的持久性,我们建议使用Chronicle Queue ,它是Apache 2.0开源项目,可从https://github.com/OpenHFT/Chronicle-QueueMaven Central获得

翻译自: https://www.javacodegeeks.com/2016/05/simple-asynchronous-microservices-using-lambda-architecture.html

lambda 异步线程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值