消息解决方案连接您的应用程序组件,使它们能够可靠地交换数据、透明地扩展并达到高可用性水平。它们使您能够将处理过程与数据生产者解耦,有效地缓冲未处理的消息,并提供消息持久性、处理可扩展性和应用程序弹性。面向消息的应用程序涵盖了一系列架构 - 组件之间的数据传输可能是一个定义良好的分布式和融合处理管道的一部分,或者组件可能向多个独立的下游系统发布消息,这些系统独立发展。有三种常见的现代消息模型,每种模型都有共享和独特的应用程序需求:
事件流处理a
事件流处理应用程序摄取高容量和高速度的数据流,这些数据必须实时处理。原始数据必须处理以提取见解,这些见解可能被其他应用程序组件使用,用于监控,或者可能存储以供以后分析。
此示例事件流处理应用程序使用甲骨文云基础设施流媒体或甲骨文事务性事件队列(TEQ)作为底层消息解决方案,甲骨文云基础设施函数用于实时处理,以及甲骨文自主数据库作为后端存储。
发布-订阅
发布-订阅或pub/sub是一种通信模式,其中数据生产者将数据发布到特定主题,然后任何数量的下游消费者可以通过订阅这些主题来消费这些数据。生产者和消费者之间的耦合相当松散,以便消费者可以独立发展,而不影响上游生产者。
此示例展示了如何使用甲骨文云基础设施流媒体或甲骨文TEQ来实现发布/订阅消息模式。
消息队列
消息队列使分布式有状态处理成为可能,其中上游和下游组件紧密绑定并共同实现应用程序工作流。消息解决方案必须支持至少一次交付等语义,以确保消息在被消费之前不会丢失。
此示例展示了如何使用甲骨文云基础设施队列或甲骨文TEQ来实现消息队列。
设计原则
构建消息应用程序或平台时,请使用以下设计原则。
将应用构建为一组使用REST API通信的服务
架构
以下图表展示了如何使用OCI流媒体实现事件流处理。
使用OCI流媒体实现事件流处理和发布/订阅消息模式,并使用甲骨文云基础设施队列实现消息队列。使用甲骨文自主数据库来持久化处理后的事件数据。OCI函数可用于处理事件数据,然后由下游应用程序组件消费或持久化到数据库之前。
通过为您的应用程序、数据库和消息服务使用专用子网来实现网络隔离。通过使用私有端点来保护您的流访问。使用甲骨文云基础设施身份和访问管理(IAM)政策来限制对队列的访问。
使用甲骨文云基础设施对象存储进行长期消息保留。使用像服务连接器这样的无服务器服务,无缝地将数据从OCI流媒体移动到对象存储,并启用对象存储的跨区域备份来实现多区域备份。使用部署在容错的甲骨文容器引擎Kubernetes(OKE)环境上的Kafka MirrorMaker 2.0实现跨区域灾难恢复策略,以异步复制流之间的数据。这种设置使恢复时间目标(RTO)和恢复点目标(RPO)达到几分钟。使用远程VCN对等连接以确保数据传输过程中的最小延迟。
使用死信队列隔离问题消息。创建队列时会自动创建死信队列。死信队列可以帮助您避免失败的消息阻塞主执行管道。然后可以分析死信队列中的消息,以确定它们为什么失败。
通过在外部存储(如对象存储)中存储处理过的消息的偏移量,将幂等性纳入应用程序。通过查询外部存储来检测和丢弃重复消息。分类容易恢复的错误,并允许消息重放。
此架构使用以下服务和技术:
流媒体
队列
函数
服务连接器
数据库中心的替代架构
此架构使用事务性事件队列(TEQ)来实现现代应用程序中的消息模式。TEQ是甲骨文自主数据库的内置功能。
此架构通过消除使用外部流媒体或队列服务的需求,提供了简化性,并提供了简化常见微服务模式的事务性消息功能。
TEQ将数据和消息处理结合在一个可扩展的基础设施中,简化了生命周期管理、安全性和灾难恢复,同时提供高性能。TEQ支持常见的消息模式,包括流媒体、队列和发布/订阅。您可以使用TEQ实现跨消息和数据库操作的事务,并使用极少量甚至无需额外代码就能轻松实现像事务性出站和恰好一次消息等消息模式。甲骨文TEQ为在数据库中运行的应用程序提供恰好一次消息传递。这意味着您不需要维护消息ID来检查重复消息或在应用程序级别构建幂等消费者。TEQ支持事件处理中常见的小消息以及与业务工作流相关的更大有效负载,并且还可以作为安全的事件网格。
消除外部流媒体或队列服务简化了状态管理。事件和消息存储在应用程序使用的同一个数据库中。这使您能够轻松实现并维护事件、消息和应用程序更改之间的一致性。如果出现需要进行时间点恢复或灾难恢复的故障,所有内容(事件、消息和应用程序数据)都会自动恢复到一致状态。
TEQ受益于自主数据库的高可用性。TEQ中的消息数据通过ADB的跨区域复制自动备份并受到自治数据防护的保护。您可以使用甲骨文实时应用集群和甲骨文活动数据防护的高可用方式部署甲骨文TEQ,这两者都是甲骨文自主数据库的内置功能。甲骨文实时应用集群在区域内提供可用性,而甲骨文活动数据防护提供跨区域灾难恢复保护。
如果您的应用程序需要执行以下任何操作,请使用此架构:
此架构使用以下服务和技术:
不推荐的架构
考虑因素
在实现消息设计模式时,请考虑这些实施选项。
根据您的应用程序需求选择合适的消息平台
基础平台和服务可能看起来相似且具有共同的特性。然而,每个平台都有其独特的特性和优势,这可能更符合您的应用程序需求。例如:
公开案例研究
基于甲骨文流媒体的架构
Tango Eye将监控视频转换为零售行业的可操作洞见。
部署
通用健康组织(UHO)是一个符合现代应用程序开发框架原则的示例应用程序。特别是,它实现了Web或移动端、消息传递和事件驱动架构模式的元素,并且可在GitHub上获取。
开启您的Oracle云之旅:Agilewing - 您的智能云服务伙伴
作为Oracle的高级合作伙伴,Agilewing正重新定义企业体验Oracle云服务的方式。借助于其简化的开户流程和一流的技术支持,Agilewing将复杂的开户和操作流程转化为一种轻松、直观的体验。通过我们的一站式服务,您可以迅速开启并享受Oracle云的全方位服务,从而无缝融入云端世界。
Agilewing的AgileCDN服务,结合了OCI的云基础服务,提供了一流的全球内容加速解决方案。超过2800个全球POP节点和7000个直连点的强大网络,确保了无论您的业务扩展到全球哪个角落,都能保持高效稳定的运行。
利用Oracle云的先进技术,Agilewing致力于简化云服务搭建、云迁移和业务出海的过程。我们的合作模式为客户带来经济高效的解决方案,使他们能够更加专注于核心业务,同时享受Oracle云的高性能和安全保障。
Oracle云服务,作为一个充满潜力的领域,以其高性能、安全性和全球统一的服务标准,为各类企业开启了新的机遇之门。通过Agilewing的专业服务,无论是个人用户还是企业,都能轻松步入这个充满技术革新和高效能的新时代。现在,就让Agilewing引领您开始探索Oracle云服务,打开一个全新的世界大门