欢迎访问深圳敏捷云计算科技有限公司!

甲骨文云 OCI 部署微服务:结合Helidon和融合数据库的高效解决方案

2024-04-09 原创文章

开发人员主要使用微服务架构构建新的数据驱动应用程序。此外,现有客户通过在数据库访问模式中引入松耦合和有界上下文,将单体设计现代化为微服务。他们寻求简化工作流程和数据流程,以使小团队的DevOps更加高效。当前行业中的Lambda和Kappa架构模式增加了复杂性,涉及多种技术、多份数据副本、多重安全跳转和团队中所需的多种技能。融合数据库简化了底层架构的复杂性。


架构


这一架构展示了使用微服务结合云基础设施、融合Oracle数据库和Helidon所需的资源和拓扑结构。


融合Oracle数据库是一种优化的数据库,具有对现代数据类型、关键数据中心组件和最新开发范式的原生支持。例如,融合数据库支持空间数据进行位置感知、JSON用于文档存储、物联网用于设备集成、内存技术用于实时分析,以及传统的关系数据。通过支持所有这些数据类型,融合数据库可以运行从物联网到区块链再到分析和机器学习的各种工作负载。它还可以处理任何开发范式,包括微服务。


微服务架构有三个主要层次 - 消息层、应用层和数据库层 - 为企业应用带来敏捷性、水平扩展和稳健性。这一参考架构基于Oracle第二代云上的标准组件,使用Oracle数据库作为持久层来构建强大的微服务。


消息层是数据库内置的Java消息服务(JMS)事务消息、事务事件队列(TEQ)或基于Kafka的传输机制,如Oracle云基础设施流服务。应用层使用由Oracle云基础设施容器引擎管理的Docker容器构建。每个微服务都是一个连接到独立数据库或数据库内部架构级别隔离的容器。以下是一些应用示例:

  • 事件监控和警报:Grafana和Prometheus
  • 可观察性和追踪:Kiali和Jaeger
  • 传统应用程序:Java企业版和Oracle Weblogic
  • Java微服务:Java, helidon.io和Oracle GraalVM企业版
  • 多语言微服务:node.js和python
  • 服务网格与Oracle容器引擎:Istio、Kubernetes和Docker


数据库层包括两个自治事务处理实例(ATP-1和ATP-2)。架构在融合数据库中使用关系数据、空间数据、文档、文本和JSON数据,并在数据库中内置事务消息,以简化微服务的工作流程。下图是一个在线移动食品配送应用的微服务架构示例。


架构包含以下组件:


负载均衡器

  • Oracle云基础设施负载均衡服务提供了从单一入口点到后端多个服务器的自动化流量分配。

容器引擎用于Kubernetes

  • Oracle云基础设施容器引擎用于Kubernetes是一个完全托管的、可扩展的、高可用性服务,您可以用它将容器化应用部署到云中。您指定应用程序所需的计算资源,容器引擎用于Kubernetes将它们在现有租户的Oracle云基础设施上配置。容器引擎用于Kubernetes使用Kubernetes自动化跨主机集群的容器化应用的部署、扩展和管理。

Kubernetes服务连接器

  • 使用OCI服务代理将Oracle自治事务处理数据库连接到Oracle容器引擎用于Kubernetes。
  • OCI服务代理用于Kubernetes是开放服务代理API的实现。它专门用于从Kubernetes集群与Oracle云基础设施服务进行交互。它包括三个服务代理适配器,用于绑定以下Oracle云基础设施服务:对象存储、自治事务处理、自治数据仓库和Oracle流服务。
  • 您可以将OCI服务代理添加到您使用Oracle云基础设施容器引擎创建的Kubernetes集群中,以与上述Oracle云基础设施服务进行交互。当您将OCI服务代理添加到集群时,您无需在每次在集群上部署或取消部署应用程序时手动配置和取消配置Oracle云基础设施服务。相反,您可以使用kubectl调用OCI服务代理实现的开放服务代理API来与Oracle云基础设施服务进行交互。

注册表

  • Oracle云基础设施注册表是Oracle管理的注册表,可帮助您简化从开发到生产的工作流程。注册表使您能够轻松存储、共享和管理开发工件,如Docker镜像。Oracle云基础设施的高可用和可扩展架构确保您能够可靠地部署和管理应用程序。

对象存储

  • 对象存储提供对大量结构化和非结构化数据的快速访问,包括数据库备份、分析数据和丰富内容,如图像和视频。对于需要快速、立即且频繁访问的“热”存储,使用标准存储。对于长期保留并很少或极少访问的“冷”存储,使用存档存储。



微服务

  • 使用Istio服务网格通过代理连接微服务,以提供在Kiali中可视化的追踪信息。
  • 使用Jaeger进行追踪,使用Kiali观测Istio网格。

Helidon

  • 使用Helidon MicroProfile注解来监控微服务的健康和活跃度。

自治事务处理

  • Oracle自治事务处理是一种自驾、自保护、自修复的数据库服务,专为事务处理工作负载优化。您无需配置或管理任何硬件,也无需安装任何软件。Oracle云基础设施负责创建数据库,以及备份、打补丁、升级和调优数据库。
  • 下图是在线移动食品配送应用的微服务架构工作流程的一个示例。


此架构中出现的步骤如下:

  1. 客户在线搜索评论并下单。订单服务微服务具有搜索评论功能。搜索评论请求和订单通过负载均衡器发送到订单服务微服务。订单服务与数据库通信。
  2. 文本和JSON数据搜索以及情感分析被发送到搜索评论功能。
  3. 订单服务和检查库存服务微服务使用事务消息进行相互通信。
  4. 订单服务向配送服务微服务发送下单请求。
  5. 数据库向配送服务的路线映射功能发送单个或多个配送的空间计算。
  6. 从数据库到分析仪表板发送低代码运营分析。



建议

您的需求可能与此处描述的架构不同。以下建议可作为起点:

简单性

  • 该架构强调了在使用Oracle融合数据库为微服务设计持久性层时对简单性的需求。数据库安全模型是实现身份验证和授权安全的良好起点。此外,使用数据库的备份和高可用性简化了微服务开发。
  • 对应用程序的良好理解驱动着每个微服务的数据访问,设计上考虑了有界上下文和松耦合。从架构级别的隔离开始。
  • 微服务的正确规模对于使数据依赖性更易于管理非常重要。
  • 内置于融合数据库中的事件驱动事务消息允许微服务之间松耦合,同时保留精确一次消息传递,提供了跨微服务最终一致事务的高效实现(称为sagas)。

可观测性和可管理性

  • 使用Helidon注解和追踪工具的可观测性和可管理性,允许在大规模操作基于微服务的应用程序时实现自动化。这是一个需要在应用层和数据库层设计得当的领域,尤其是当微服务的负载增长并且需要为大规模性能和可用性进行调整时。

可扩展性

  • 由Oracle云基础设施容器引擎管理的微服务的容器化允许应用层的可扩展性。虽然不总是建议每个微服务都有自己的数据库,但在融合数据库的架构下这是可能的。通常,微服务之间的架构级别隔离提供了不必要的数据依赖性的良好隔离。

安全

  • 融合数据库提供了高级别的安全性,应用程序可以用来提供用户级别的角色、身份验证、授权和数据加密。Helidon与持久性层的安全性结合,也提供了微服务的安全访问。

规模

  • 该架构通过使用Oracle容器引擎为Kubernetes管理微服务实例,并使用负载均衡器无缝地使用每个服务的多个实例,增加了微服务实例。通过使用这种微服务范式来解决可用性和规模扩展问题。数据库提供了简单的自动扩展到一定级别(每个数据库系统2至48 Oracle计算单元(OCPUs)),这可能适用于大多数应用程序。


                   

考虑因素

部署此参考架构时,请考虑以下几点。

性能

  • 通过添加额外的微服务实例并使用Kubernetes管理,水平扩展应用性能。
  • 通过观察Oracle自治事务处理性能控制台中的数据库负载并增加OCPUs的数量(在ATP-Shared中最多48个)来扩展数据库性能。

安全

  • 微服务的安全性遵循由Helidon微服务和Oracle数据库安全模型提供的安全性 - 身份验证、授权、资源访问控制。Oracle建议应用程序尽可能多地使用数据库的安全执行机制。

可用性

  • 高可用性包括应用层和数据层两个部分。
  • 应用程序可用性通过拥有无状态容器实现,这些容器由Kubernetes重新生成,并从中间层元数据或数据库恢复任何状态。
  • 跨Oracle云可用性域或跨区域的PDBs物理备用推荐用于高可用性架构。其他推荐请参考Oracle数据库高可用性参数。

成本

  • 云经济学适用于此微服务参考架构。所有组件都可在Oracle云基础设施上作为托管服务使用,您按使用量付费,而非为预配硬件付费。



部署

  • 此参考架构的Terraform代码可在GitHub上找到。您可以从GitHub下载代码到您的电脑,自定义代码,并通过Terraform命令行界面部署架构。
  • 使用GitHub中的Terraform代码部署:访问GitHub。克隆或下载仓库到您的本地电脑。遵循README文档中的说明操作。
  • 使用Oracle LiveLabs“使用Oracle融合数据库构建微服务”工作坊进行部署。



开启您的Oracle云之旅:Agilewing - 您的智能云服务伙伴

作为Oracle的高级合作伙伴,Agilewing正重新定义企业体验Oracle云服务的方式。借助于其简化的开户流程和一流的技术支持,Agilewing将复杂的开户和操作流程转化为一种轻松、直观的体验。通过我们的一站式服务,您可以迅速开启并享受Oracle云的全方位服务,从而无缝融入云端世界。


Agilewing的AgileCDN服务,结合了OCI的云基础服务,提供了一流的全球内容加速解决方案。超过2800个全球POP节点和7000个直连点的强大网络,确保了无论您的业务扩展到全球哪个角落,都能保持高效稳定的运行。


利用Oracle云的先进技术,Agilewing致力于简化云服务搭建、云迁移和业务出海的过程。我们的合作模式为客户带来经济高效的解决方案,使他们能够更加专注于核心业务,同时享受Oracle云的高性能和安全保障。


Oracle云服务,作为一个充满潜力的领域,以其高性能、安全性和全球统一的服务标准,为各类企业开启了新的机遇之门。通过Agilewing的专业服务,无论是个人用户还是企业,都能轻松步入这个充满技术革新和高效能的新时代。现在,就让Agilewing引领您开始探索Oracle云服务,打开一个全新的世界大门