分享

事件驱动型架构,究竟要怎样构建?

 WindySky 2017-09-03


的社交软件里有经常用火星文在朋友圈里发无聊内容的朋友吗?

“哎呀,我今天吃了顿饭,开心。”

“小海象存在在世界上的意义是什么呢?”

幸好,我们可以屏蔽这些内容。不过社交软件是如何让我们处理事件流呢,这是一个很有意思的话题:

  • 我们“关注”他人来了解他们的想法

  • 随时调整我们接收的动态信息

  • 在收到通知时参与到互动当中

整个过程自然流畅且互动性很强。

那么企业系统是怎样处理事件流的呢?企业系统就稍逊一筹了。大多数系统使用的都是严格定义好的通信路径,并在业务流程中的组件之间实现耦合。这使得我们很难检测数据中的趋势,很难快速调整业务,也很难与客户建立牢固的关系。

不过,这种情况开始逐渐改善。许多企业系统管理者都开始采用Cloud Foundry平台,加快企业转向 “事件驱动型架构”的步伐。下面我们来看看,为了帮助你打造适应性更强的业务,我们做了哪些具体工作。

1

什么是事件驱动型架构?

“事件”就是指发生的事情。例如,传感器报告温度变、用户点击鼠标、客户将支票存入银行账户等。在事件驱动型架构中,系统以松散耦合的方式发出并处理事件。这种环境会推动异步通信,并提高系统的适应性。

采用事件驱动型架构之后,生成、处理、存储和访问数据的方式都会随之改变。事件驱动型架构可以帮助你利用不可预测性,并减少组件之间的依赖关系。这样一来,你就可以更快地根据业务变化做出调整。

在事件驱动型架构模型中,事件是架构的核心。“事件驱动”不仅仅意味着安装Apache Kafka或使用无服务器功能,它还涉及一系列集中起来帮助你发出或处理事件的功能。以下是这些功能的示意图。

2

事件驱动型架构6大领域

1. 源/Sink。在事件驱动型架构中,几乎所有组件都会生成事件:设备、应用、用户活动等。许多其他组件通常会通过服务器推送协议(例如Web Socket)来使用事件的结果。

2. 服务器端应用。这是你的代码,由你构建的用来接收事件的内容。它可能会采用Web应用、微服务、函数、事件处理应用或富数据管道等形式。

3. 消息传递。事件如何在架构中快速传递?你可以在组件之间使用直接调用或者使用总线。总线可能是内存中的,且优先考虑低延迟而非耐久性。它可以存储消息并将消息路由到每个用户的队列。另一个选择是使用分布式提交日志的事件流代理。最后,使用组件与SaaS应用或外部应用服务进行通信也是个不错的选择。

4. 存储和分析。事件驱动型架构会改变你对存储的看法。如果你进行了事件溯源,事件记录将存储到数据库中,并通过一个实体化视图显示当前状态。当前状态可以加载到应用缓存中,并根据需要重新生成。你可以使用内存中数据网格从大型机或遗留系统加载数据,以完成高性能读取。缓存提供了很多可能性。企业采用事件驱动型模型是为了提高响应能力。因此,你可以使用数据仓库并训练机器学习模型来处理事件,生成供应用或数据管道使用的洞察信息。

5. 应用运行时。你所有的事件驱动型应用真正运行在哪里呢?你可能需要一个平台来长时间在线运行应用,执行短期任务或功能,处理负载平衡,维护新路线列表,以及快速扩展或收缩应用。

6. 事件记录和监控。事件驱动型架构的缺点是缺乏可预测性。下游系统如何处理这个事件?这些系统返回的结果为什么不一致?你的架构必须用一种强有力的方法来跟踪事件路径、监控应用性能并排除故障。

构建事件驱动型架构并非一日之功,与大多数技术变革一样,这是一场漫长的旅程。你很可能需要对技术进行彻底改造,才能有效地将事件处理引入你的架构。在打造事件驱动型架构的道路上,Cloud Foundry具有独特的优势,因为它能够运行大量的事件驱动型应用。

5

Cloud Foundry7大优势

多年来,Cloud Foundry始终为你提供运行现代应用的平台。同时,它也是运行事件驱动型架构的各种组件的理想之选。在帮助您构建事件驱动型架构方面,Cloud Foundry有以下7大优势!

1. 使用Spring Cloud Stream和Spring Cloud Data Flow构建部署流处理应用。你的事件驱动型应用可能是非常松散耦合的,每个应用可能都不知道上游或下游是什么。Spring Cloud Stream采用RabbitMQ或Kafka后端,能在Pivotal Cloud Foundry中运行顺畅,可以帮助你将代码从底层消息传递引擎中完全抽象出来。而Spring Cloud Data Flow是一项颠覆性技术,可以快速将Spring Boot应用组装到事件驱动型管道中。

2. 使用代理获得按需数据服务。最好的平台能优先保障数据服务,Pivotal Cloud Foundry就能做到这一点。你可以从Pivotal直接获取MySQL、RabbitMQ、Pivotal Cloud Cache和Redis的按需实例。Aynines、Crunchy、Aerospike、Redis Labs、Hazelcast等合作伙伴还提供更多服务。这一点为何如此重要?每个事件驱动型微服务都可以有自己的关系型数据库和缓存,它们全都由平台完全托管,这样你就不必使用共享式的一体化存储库了。

3. 使用你选择的语言编写应用。虽然Cloud Foundry非常适合事件驱动型Spring Boot应用,但你也可以部署使用.NET Framework、.NET Core、Node.js、Ruby、PHP、Python或Go编写的Web应用或Worker应用。如果需要,你可以将应用放在Docker容器中,甚至编写脚本并发布为Cloud Foundry任务。你可以根据需要,在事件处理的每个阶段使用所需要的语言和库。

4. 依赖动态的弹性运行时。Cloud Foundry的主要目标就是帮助客户实现软件交付和规模化运维。假设你有一个需要快速扩展的Web应用,该平台会负责更新所有网络路由和防火墙规则,你可以手动扩展或设置自动扩展策略。另外更重要的是,事件驱动型应用能够处理任何规模的流量。

5. 使用内置的监控、日志记录和分布式跟踪功能获取上下文。掌握事件驱动型环境的运行状况可能比较棘手,但也并非不可能。PCF Metrics可提供丰富的基础架构指标,这些指标与你的应用日志紧密相关。你可以据此了解每个应用实例的运行状况,并做出相应调整。另外,Pivotal Cloud Foundry还提供了Trace Explorer,让你可以看到事件驱动型服务的调用图。

6. 启动任务与功能。有时,你的代码需要对某些操作做出反应,然后关闭,它不会持续处理一连串数据。不过没关系,Cloud Foundry提供针对一次性任务和计划任务的Cloud Foundry任务。这些任务可通过API、CLI或应用管理器触发,用于执行数据迁移、预热缓存或发送通知等操作。你还可以将Spring Cloud Function用于响应HTTP或消息传递触发器的无服务器应用。

7. 在任意云端平台上运行Cloud Foundry。三大云提供商都提供了一些非常出色的原生事件驱动型服务,而我们的服务代理可让你轻松连接Azure、Google、Amazon等等平台。无论你的Pivotal Cloud Foundry实例在哪里运行,你都可以使用这些服务。你可以轻松地在任意云端平台上运行Cloud Foundry,并与原生服务相结合,帮助你提取、处理并分析事件。

Pivotal Cloud Foundry这一平台既适合你现有的应用,也适合现代化的事件驱动型应用,它可提供全部必备功能,帮助你构建响应迅速的可维护架构。为实现构建事件驱动型架构这一目标,你需要考虑周全,事先安排好所有功能。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多