使用聚合数据库和 Helidon 部署微服务
体系结构
此体系结构显示将微服务与云基础设施、聚合 Oracle Database 和 Helidon 一起使用所需的资源和拓扑。
聚合 Oracle Database 是一个优化的数据库,它支持现代数据类型、关键数据中心组件和最新的开发范式。例如,聚合数据库支持空间数据以提高位置识别、JSON 用于文档存储、IoT 用于设备集成、内存中技术用于实时分析和传统关系数据。通过对所有这些数据类型提供支持,聚合数据库可以运行从 IoT 到区块链到分析和机器学习的所有工作负载。它还可以处理任何发展模式,包括微服务。
微服务体系结构有三个主要层 – 消息传送层、应用层和数据库层 - 为企业应用带来敏捷性、水平规模和强大性。此引用体系结构列出了 Oracle Gen 2 云上可用的基于标准的组件,可使用 Oracle Database 作为持久性层构建强大的微服务。
消息传送层是内置到数据库、事务事件队列 (TEQ) 或基于 Kafka 的传输机制(例如 Oracle Cloud Infrastructure 流处理服务)中的 Java Message Service (JMS) 事务处理消息传送。
- 事件监视和预警:Grafana 和 Prometheus
- 可观察性和跟踪性:Kiali 和 Jaeger
- 传统应用程序:Java Enterprise Edition 和 Oracle Weblogic
- Java Microservices:Java、helidon.io 和 Oracle GraalVM Enterprise
- Polyglot 微服务:node.js 和 python
- 使用 Oracle Container Engine for Kubernetes 的服务网格:Istio、Kubernetes 和 Docker
数据库层由两个自治事务处理实例(ATP-1 和 ATP-2)组成。该体系结构使用聚合数据库中的关系数据、空间数据、文档、文本和 JSON 数据以及数据库中的内置事务消息传送来简化工作流。
下图是用于在线移动食品交付应用程序的微服务架构的示例。

插图 helidon_microservices_db_architecture.png 的说明
体系结构具有以下组成部分:
- 负载平衡器
Oracle Cloud Infrastructure Load Balancing 服务提供从单个入口点到后端多个服务器的自动通信分配。
- Container Engine for Kubernetes
Oracle Cloud Infrastructure Container Engine for Kubernetes 是一种完全托管、可扩展和高可用性的服务,可用于将容器化应用程序部署到云中。您可以指定应用程序所需的计算资源,Container Engine for Kubernetes 将在现有租户中的 Oracle Cloud Infrastructure 上设置这些资源。Container Engine for Kubernetes 使用 Kubernetes 自动部署、缩放和管理跨主机群集的容器化应用程序。
- Kubernetes 的服务连接器
使用 OCI Service Broker for Kubernetes 将 Oracle Autonomous Transaction Processing 数据库连接到 Oracle Container Engine for Kubernetes。
Kubernetes 的 OCI Service Broker 是 Open Service Broker API 的实施。OCI Service Broker for Kubernetes 专用于与 Kubernetes 集群中的 Oracle Cloud Infrastructure 服务交互。它包含三个要绑定到以下 Oracle Cloud Infrastructure 服务的服务中介适配器:对象存储、自治事务处理、Autonomous Data Warehouse 和 Oracle 流处理服务。
您可以将 Kubernetes 的 OCI Service Broker 添加到与 Oracle Cloud Infrastructure Container Engine for Kubernetes 创建的集群中,以便与上面列出的 Oracle Cloud Infrastructure 服务交互。将 Kubernetes 的 OCI Service Broker 添加到集群时,不必每次在集群上部署或取消部署应用程序时手动预配和取消预配 Oracle Cloud Infrastructure 服务。而是使用kubectl
调用 OCI Service Broker for Kubernetes 实施的 Open Service Broker API 来与 Oracle Cloud Infrastructure 服务交互。 - 注册表
Oracle Cloud Infrastructure Registry 是 Oracle 管理的注册表,可用于简化从开发到生产的工作流。注册表使您可以轻松地存储、共享和管理开发对象,如 Docker 映像。Oracle Cloud Infrastructure 的高可用性和可扩展的体系结构可确保您可以可靠地部署和管理应用程序。
- 对象存储
通过对象存储,可以快速访问任何内容类型的大量结构化和非结构化数据,包括数据库备份、分析数据以及丰富的内容,例如图像和视频。使用标准存储进行“热”存储,您需要快速、立即和频繁地访问这些存储。将归档存储用于长期保留且很少或很少访问的“冷”存储。
- 微服务
使用 Istio Service Mesh 将微服务与代理连接,以提供在 Kiali 中可视化的跟踪信息。
使用 Jaeger 进行跟踪,使用 Kiali 可观察 Istio 网格。
- Helidon
使用 Helidon MicroProfile 注释监视微服务的健康和生活状况。
- 自治事务处理
Oracle Autonomous Transaction Processing 是一个自我驱动、自我保护和自我修复的数据库服务,针对事务处理负载进行了优化。您无需配置或管理任何硬件,也不需要安装任何软件。Oracle Cloud Infrastructure 处理创建数据库以及备份、打补丁、升级和优化数据库。
下图是用于在线移动食品交付应用程序的微服务体系结构工作流的示例。

插图 microservices_converged_db.png 的说明
此体系结构中将显示以下步骤:
- 客户搜索在线复查并下达订单。订单服务微服务具有搜索审核功能。搜索复查请求和订单通过负载平衡器发送到订单服务微服务。订单服务与数据库通信。
- 文本和 JSON 数据搜索和情感分析将发送到“搜索审核”功能。
- 订单服务和检查库存服务微服务使用事务消息相互通信。
- 订单服务将交货请求的地点订单发送至交货服务微服务。
- 单个或多个交货的空间计算将从数据库发送到交货服务的路线映射功能。
- 低代码运营分析从数据库发送到分析仪表盘。
建议
您的要求可能与此处描述的体系结构不同。使用以下建议案作为起点:
- 简单性
该体系结构扩大了在设计具有 Oracle 收敛数据库的微服务的持久性层方面的简单性需求。数据库安全模型是获取验证和授权安全性的一个良好起点。此外,使用数据库的备份和高可用性可简化微服务开发。
通过对应用程序的良好了解,可以通过在有界上下文中设计来推动每个微服务的数据访问,并可在这些服务的多个范围内松开耦合。从方案级别隔离开始。
正确调整微服务大小对于提高数据依赖性的可管理性非常重要。
在聚合数据库内构建的事件驱动的事务消息传送允许微服务之间松散耦合,同时保留一次消息传送,从而有效地实现跨微服务(称为 sagas)的最终一致事务处理。
- 可观察性和可管理性
通过 Helidon 标注和使用跟踪工具,可以实现可观察性和可管理性,从而可以大规模运行基于微服务的应用程序。这是一个在应用程序层和数据库层进行良好设计的区域,特别是随着微服务负荷的增加和规模的性能和可用性需要调整。
- 可扩展性
通过 Oracle Cloud Infrastructure Container Engine for Kubernetes 管理的微服务容器化,可以扩展应用程序层。虽然并不总是建议每个微服务都有自己的数据库,但肯定可以与收敛的数据库体系结构配合使用。微服务之间的方案级别隔离通常与不必要的数据依赖性进行良好隔离。
- 安全性
聚合数据库提供了高级别的安全性,应用程序可以使用该安全性来提供用户级别角色、验证、授权和数据加密。Helidon 还结合持久性层的安全性提供了微服务的安全接入。
- 小数位数
此体系结构使用 Oracle Container Engine for Kubernetes 添加微服务实例以进行管理,并添加负载平衡器以允许为每个服务无缝使用多个实例。通过将此模式用于微服务来解决可用性和缩放问题。数据库提供简单的自主扩展到特定级别(每个数据库系统 2 到 48 个 Oracle 计算单元 (OCPU)),这可能适用于大多数应用程序。
考虑事项
部署此引用体系结构时,请考虑以下几点。
- 性能
通过为微服务添加其他实例并使用 Kubernetes 进行管理,水平缩放应用程序性能。
通过在 Oracle Autonomous Transaction Processing 性能控制台中观察数据库负载并增加 OCPU 数(ATP 共享中最多 48 个)来扩展数据库性能。
- 安全性
微服务的安全性遵循 Helidon 微服务和 Oracle Database 安全模型(资源的验证、授权、访问控制)提供的安全性。Oracle 建议应用程序尽可能使用数据库的安全实施机制。
- 可用性
高可用性有两个部分:应用层和数据层。
应用程序可用性是通过具有无状态容器、由 Kubernetes 重新创建以及从中间层元数据或数据库恢复任何状态来实现的。
对于跨 Oracle Cloud 可用性域或区域的 PDB,建议使用物理备用数据库以实现高可用性体系结构。查看 Oracle Database 高可用性参数以了解其他建议案。
- 成本
云经济学适用于这种微服务参考架构。所有组件都作为托管服务在 Oracle Cloud Infrastructure 上可用,您可以支付您使用的内容,而不是支付预配硬件的费用。
部署
GitHub 上提供了此引用体系结构的 Terraform 代码。您可以使用 Terraform CLI 将代码从 GitHub 下载到计算机,自定义代码并部署体系结构。
- 使用 GitHub 中的 Terraform 代码进行部署:
- 转到 GitHub。
- 将资料档案库克隆或下载到本地计算机。
- 按照
README
文档中的说明操作。
- 使用 Oracle LiveLabs Building Microservices 与 Oracle Converged Database Workshop 进行部署。