了解如何部署 Oracle Banking Microservices 和 OCI Kubernetes Engine
了解如何使用 Oracle Cloud Infrastructure Kubernetes Engine 和 Oracle Banking Microservices 实现银行基础设施现代化。OCI Kubernetes 引擎 (OKE) 是完全托管、可扩展的高可用性服务,您可以使用其将容器化应用程序部署到云中。当您的开发团队想要可靠地构建、部署和管理云原生应用时,可使用 OKE。您可以指定应用所需的计算资源,OKE 在现有 OCI 租户中的 OCI 上供应这些资源。
体系结构
此架构介绍了如何实施 Oracle Banking Microservices 和 OCI Kubernetes Engine 来高效利用微服务。
Oracle Banking Microservices Architecture
Oracle 提供业界范围最广的领域驱动型银行解决方案,涵盖零售和企业银行以及从客户数字体验层到银行产品处理器或核心银行领域的全方位前后服务。
所有这些功能都作为一组自治模块提供,使用域驱动的设计进行设计,并使用先进的微服务架构实现。每个模块都由一组特定于业务域的微服务、一组跨所有模块的通用功能基础微服务(通用核心)和平台服务组成,这些服务提供所需的技术功能。
下图展示了分支模块中不同级别的微服务。
此架构可提供高度的部署灵活性。每个微服务都可以在 docker 映像中容器化并单独部署。此选项提供对部署的完全控制,允许您根据特定客户需求更新或扩展任何特定微服务。
一些客户可能不需要这种级别的粒度来进行平台管理,并且可能更喜欢一种简化的方法,将微服务分组在减少的 docker 映像中。尽管这种方法降低了在单个级别更新和扩展的灵活性,但它仍然为客户提供了对可扩展性、高可用性的标准要求所需的控制级别。在这种情况下,考虑到微服务的含义和具体性质,对微服务进行分组非常重要。在这个参考架构中,我们提出一个考虑这些因素的分组:
- 工作负载类型:基于 REST、基于批、基于事件、基于工作流。
- 重要组件:某些组件对平台至关重要。他们的工作量比其他人高。
下图说明了建议的分组。
插图 obma-service-landscape-branch-module-proposed.png 的说明
以下是这些分组的说明:
- 域 SD:包含模块的业务域微服务(在本例中为分支模块)。
- CMC SD:通用核心或功能基础微服务。
- Plato SD:包含尚未单独部署的技术平台微服务。
- Kafka:由平台事件中心用于微服务和外部系统之间的通信。
- Conductor:用于编排微服务和创建人工工作流的平台的工作流引擎。
- 批处理服务器:执行业务域所需的批处理。
此解决方案将七个 docker 映像组合在一起。
使用 OKE 部署体系结构
OCI Kubernetes Engine 使用开源系统 Kubernetes 跨主机集群自动部署、扩展和管理容器化的应用程序。Kubernetes 将构成应用程序的容器分组为逻辑单元(称为 pod),以便于管理和发现。
要在 Kubernetes 中运行容器,必须将其封装在 pod 中。pod 是 Kubernetes 中最小的原子单元,是运行共享相同网络、存储、内存和 IPC 名称空间的一组容器的构造。pod 中有一个主容器,后续容器支持主容器。例如,具有支持容器的应用程序容器将应用程序日志发送到日志记录服务器。在此架构中,我们不会详细介绍多容器云池用例,但在大多数情况下,每个云池只有一个容器。
对于部署 Oracle Banking 解决方案,我们将部署的七个容器映像中的每个映像都包含在自己的云池中。这可以通过为每个容器映像定义 Kubernetes 云池清单文件来实现。
Pod 可以直接部署到 Kubernetes 中,但通过 Kubernetes 部署来部署 Pod 更强大。Kubernetes 部署允许您定义 pod 的所需状态或行为,例如给定 pod 的副本数或副本数。Kubernetes 部署还可以将现有 pod 升级到新的应用版本。Kubernetes 可以维护 pod 的指定状态。
我们将为 Oracle 银行解决方案总共部署七个部署。部署中的每个云池都分配有一个 IP 地址,但是云池的 IP 地址是临时的,并且会在创建和销毁云池时进行更改。为了提供一致的方式来访问部署中的云池,将为每个部署创建一个 Kubernetes 服务。Kubernetes 服务是定义一组云池的抽象。当 Kubernetes 服务与部署关联时,它将表示部署中的所有云池,并将流量负载平衡到每个云池。根据访问云池的方式,无论是仅由 Kubernetes 集群中的其他资源、OCI VCN 中的其他资源还是通过互联网从外部访问云池,都会为部署分配不同类型的 Kubernetes 服务。
为了提供弹性,OKE 节点池将跨越我们区域中的所有三个可用性区域。如果可用性区域发生故障,将在故障可用性区域中的节点上部署的所有云池将自动在其他可用性区域中的节点上重新创建。
对于存储微服务数据的 Oracle 数据库,使用每个微服务的分离模式,我们在两个容错域中使用 Oracle Real Application Clusters (Oracle RAC) 配置。
下表展示了此体系结构。
插图 obma-oke-architecture.png 的说明
对于存储微服务数据的 Oracle 数据库,使用每个微服务的分离模式,我们在两个可用性域中使用 RAC 配置(使用图中未显示的两个容错域)。使用第二个可用性域中的 Oracle Data Guard 复制数据。
该体系结构具有以下组件:
- 区域
Oracle Cloud Infrastructure 区域是包含一个或多个数据中心(称为可用性域)的本地化地理区域。地区独立于其他地区,远距离可以把它们分开(跨越国家甚至大陆)。
- 可用性域
可用性域是区域中的独立数据中心。每个可用性域中的物理资源与其他可用性域中的资源隔离,从而提供容错能力。可用性域不共享电源或冷却设备等基础设施,也不共享内部可用性域网络。因此,一个可用性域出现故障不会影响区域中的其他可用性域。
- 容错域
容错域是可用性域内的一组硬件和基础设施。每个可用性域都有三个容错域,它们具有独立的电源和硬件。在多个容错域之间分配资源时,应用可以承受容错域内的物理服务器故障、系统维护和电源故障。
- 虚拟云网络 (VCN) 和子网
VCN 是一个可定制的软件定义网络,您可以在 Oracle Cloud Infrastructure 区域中设置。与传统的数据中心网络一样,VCN 允许您控制您的网络环境。VCN 可以具有多个不重叠的 CIDR 块,您可以在创建 VCN 后更改这些块。您可以将 VCN 划分为子网,子网可以限定为区域或可用性域。每个子网都包含一系列不与 VCN 中的其他子网重叠的连续地址。可以在创建后更改子网的大小。子网可以是公共子网,也可以是专用子网。
- 负载平衡器
Oracle Cloud Infrastructure Load Balancing 服务提供从单个入口点到后端多个服务器的自动流量分配。
- 堡垒主机
堡垒主机是一个计算实例,它为用户从云外部访问拓扑提供了安全受控的入口点。堡垒主机通常预配在隔离区 (DMZ)。利用它,您可以将敏感资源放在无法从云外部直接访问的专用网络中,从而保护这些资源。拓扑具有已知的单个入口点,您可以定期对其进行监视和审计。因此,您可以避免公开拓扑中较为敏感的组件,同时又不会影响对它们的访问。
- 数据库系统
对于小型部署,VM.Standard2.2 配置就足够了。此体系结构使用具有 Oracle Database Enterprise Edition - 极致性能的数据库系统,并使用 Oracle Real Application Clusters (RAC)。它还使用 Oracle Automatic Storage Management (Oracle ASM),至少为 256 GB。
- 块存储卷
通过块存储卷,您可以创建、附加、连接和移动存储卷,以及更改卷性能,从而满足您的存储、性能和应用要求。将卷附加到实例并将卷连接到实例后,您可以像常规硬盘驱动器那样使用该卷。还可以断开卷连接并将其连接到其他实例,而不会丢失数据。
- 对象存储
通过对象存储,可以快速访问任意内容类型的大量结构化和非结构化数据,包括数据库备份、分析数据以及图像和视频等丰富内容。您可以安全地存储数据,然后直接从互联网或云平台检索数据。您可以在不降低性能或服务可靠性的情况下扩展存储。将标准存储用于需要快速、立即和频繁访问的“热”存储。将归档存储用于长期保留、很少访问或很少访问的“冷”存储。
- 网络地址转换 (NAT) 网关
通过 NAT 网关,VCN 中的专用资源可以访问 Internet 上的主机,而不会向传入的 Internet 连接公开这些资源。
- 服务网关
通过服务网关,您可以从 VCN 访问其他服务,例如 Oracle Cloud Infrastructure Object Storage 。从 VCN 到 Oracle 服务的流量通过 Oracle 网络结构传输,不会通过互联网传输。