微服务入门

微服务是一种用于开发现代软件的架构方法。每个核心功能或服务都是一个相关的业务情境,可以独立构建和部署。微服务在构建和维护应用方面具有敏捷性,与以往的软件开发中所采用的整体方法形成了对比。如今所说的应用现代化指的便是微服务。

在了解有关微服务的更多信息时,您将看到单体架构的区别、采用微服务架构的注意事项、通信机制、12 因素部署方法、Kubernetes 中的部署、数据持久性、服务网络以及设计微服务的最佳实践。

微服务的优势

  • 简化部署

    通过持续集成和持续部署为服务支持蓝绿部署模式,加快新功能的上市速度。

  • 按需扩展性能

    按服务独立扩展服务容器或数据平台,以满足该功能的需求。

  • 为高可用性而设计

    在不影响整个应用的情况下替换或停用独立服务,个别服务故障将通过降级服务优雅地进行处理,而不会导致整个应用崩溃。

了解如何在 Oracle Cloud Infrastructure (OCI) 上构建微服务。

Oracle 融合数据库的优势

数据驱动微服务的一个重要方面是部署数据管理平台。这可以部署多种数据类型,在一个容器中支持多个数据库,并提供自主管理能力。借助 OCI 中的 Oracle Autonomous Database,您可以轻松构建数据驱动的智能微服务。

跨基于微服务的应用实现事务一致性

Oracle Transaction Manager for Microservices (MicroTx) 可通过启用分布式事务来确保在 Kubernetes 和/或其他环境中部署的多语言微服务的一致性,从而简化应用开发和运行。

全面、开放的微服务平台

要实现应用现代化,需要集成多种技术来构建正确的多云微服务基础。Oracle LiveLabs 支持您访问各种 Oracle 工具和技术和一系列的实验室和研讨会。这些研讨会将为您展示如何与 Oracle 一起使用开放技术,以建立更简单、部署更灵活的架构。在 Oracle LiveLabs 中使用 OCI 中提供的云和混合组件(包括 Autonomous Database、Helidon、Micronaut、MicroTx、WebLogic Server、Java、Docker、Kubernetes 和 Istio Service Mesh)构建微服务。为了帮助您开始微服务之旅,有多个实验室可以帮助您对单体企业应用进行现代化改造,或者简化它们(如果您已经沿着这条道路开始)。

开放平台表

利用 Oracle 融合数据库实现数据驱动的微服务

Oracle LiveLab 构建了一个名为 GrabDish 的移动外送应用,突出了数据体系结构的简单性以及现代化的开发堆栈。传统上在行业中用作 Lambda 和 Kappa 体系结构的专用数据库很复杂(使用单独的关系、文本、空间、图形和消息传递系统),而使用 Oracle 融合数据库构建数据驱动的微服务则很简单,两者有很大的区别。该实验室面向开发人员和架构师,可以满足他们设计新微服务的需求。它还可帮助 DBA 了解 Oracle Database 在应用现代化项目中的作用。Autonomous Database、包含 docker 容器的 Kubernetes 集群、Oracle Advanced Queuing 和 Transactional Event Queues 以及 Helidon 可用于显示 Java、Node.js 以及使用关系数据、JSON、空间和图形数据的 Python 微服务,以及使用 Kiali、Jaeger、Prometheus 和 Grafana 设置跟踪和监视。下面举例说明了微服务模式,如事件寻源、CQRS 和 SAGA。

利用 Oracle 融合数据库实现数据驱动的微服务

使用 Oracle Transaction Manager for Microservices 跨微服务实现事务一致

随着微服务架构的普及,开发人员经常遇到与数据一致性相关的问题,因为每个微服务通常都有自己的数据库或其他资源。MicroTx 提供事务协调微服务,以保持参与事务的各种数据库的状态的一致性。MicroTx 支持多种分布式事务处理协议,例如 XA、长时间运行的操作 (LRA) 和 try-confirm/cancel (TCC)。它支持跨多语言微服务的分布式事务,例如 Java、node.js、C/C++ 和 PL/SQL。在此 LiveLab 中,开发人员可以了解如何在示例应用程序中使用的各种微服务之间实现数据一致性。

使用 Oracle Transaction Manager for Microservices 跨微服务实现事务一致

构建块

全面的开放式微服务平台

要实现应用现代化,需要集成多种技术来构建正确的多云微服务基础。Oracle LiveLabs 支持您访问各种 Oracle 工具和技术和一系列的实验室和研讨会。这些研讨会将为您展示如何与 Oracle 一起使用开放技术,以建立更简单、部署更灵活的架构。在应有尽有的微服务平台堆栈中,使用 Oracle LiveLabs 自带的云和混合组件,包括 OCI、Autonomous Database、Helidon、Micronaut、Weblogic、Java、Docker、Kubernetes 和 Istio Service Mesh 等构建微服务。Oracle Livelabs 中有多个实验室,可帮助您对单体企业应用进行现代化改造,从而开始您的微服务之旅;如果您已经开始构建微服务,这些实验室也可以助您简化单体企业应用。

微服务词汇

无服务器 —数据存储不需要持久状态,可以随时随地执行任务—轻松、遗忘。例如,lambda 函数和 API 网关。

API 驱动 —微服务之间使用 REST API(例如 API 网关)进行通信。每个微服务都有一个 API 定义。

异步微服务 - 通过队列或流式软件(例如,与 Oracle Advanced Queuing 或 Apache Kafka)的异步消息传递来实现宽松耦合。

工作流操作 - 业务流(在循环中涉及人员)也表示长时间运行的事务处理,例如 BPMN 框架(例如 Camunda、Zeebe 或 temporal.io 流)。

自动化工作流 - 作为简单工作流以自动化方式运行的任务(在循环中不涉及人工),例如,与 Apache Airflow 和 Argo (CNCF)。

数据驱动 - 数据架构可推动应用中的数据消耗,以实现运营和决策;通常使用持久性存储(例如 Oracle 融合数据库)或特殊用途数据库。

云原生 - 专为云开发的应用程序,例如,使用 CNCF 组件和 OCI 服务。

混合云微服务 - 在客户的数据中心(私有云)和公共云中工作的微服务,例如,搭配 Kubernetes/服务网格对私有云和公共云进行编排(云爆发用例)。

多云微服务 —微服务在至少两个公有云和私有云之间工作。例如,通过 Kubernetes/服务网格在多个云中进行编排(以提供风险缓解和防止锁定在一种公有云)。

微服务挑战

微服务与应用现代化具有相同意义,是所有应用开发的前进之路。以下注意事项可帮助微服务架构师更高效地完成迁移任务。

  • 为应用程序选择独立微服务的数量。当必须部署数千个微服务时,微服务部署将变得复杂,并且当每项服务的上下文非常小时,预计将以和谐的方式执行部署。经验表明,当使用正确的受限环境识别 20 到 50 微服务时,过渡到微服务将更好地发挥预期优势。
  • 跨微服务边界实施事务对于 XA 事务来说是一个挑战(在某些情况下,同步和性能会受到限制)。同步 SAGA 的性能更高,功能强大,在融合 Oracle Database 的支持下进一步简化。
  • 微服务之间的松散耦合对使用同步 REST API 服务构成的挑战。在混合云环境中部署应用时,消息/排队系统则使这种通信异步且更具可扩展性。
  • 跟踪和可观察性不仅在应用层、中间层以及数据层很重要,对于微服务架构的整体端到端部署和支持。工具和分析集成刚刚开始关注混合部署中十分重要的跟踪和观察性。

Microservices 客户成功案例

注:为免疑义,本网页所用以下术语专指以下含义:

  1. 除Oracle隐私政策外,本网站中提及的“Oracle”专指Oracle境外公司而非甲骨文中国。
  2. 相关Cloud或云术语均指代Oracle境外公司提供的云技术或其解决方案。

此页面内容为机器翻译。