微服务入门

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

在了解有关微服务的更多信息时,您将看到单体架构的区别、采用微服务架构的注意事项、通信机制、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 中提供的云和混合组件,其中包括 OCI、Autonomous Database、Helidon、Micronaut、MicroTx、WebLogic Server、Java、Docker、Kubernetes 和 Istio Service Mesh。为了帮助您开始微服务之旅,有多个实验室可帮助您对单体企业应用进行现代化改造,或者简化这些应用。

开放平台表

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

Oracle LiveLab 构建了一个名为 GrabDish 的移动外卖应用,突出了数据体系结构的简单性,并且具备现代化开发堆栈。它将传统上用作 Lambda 和 Kappa 架构的专用数据库很复杂(即用于关系、文本、空间、图形和消息传递系统的单独系统),与使用 Oracle Converged Database 构建数据驱动的微服务相比,两者有很大的区别。该实验室面向开发人员和架构师,可以满足他们设计新微服务的需求,此外,该实验室还可以帮助 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) 和尝试确认/取消 (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 的支持下进一步简化了同步 SAGA。
  • 微服务之间的松散耦合对使用同步 REST API 服务构成的挑战。在混合云环境中部署应用时,消息/排队系统则使这种通信异步且更具可扩展性。
  • 跟踪和可观察性不仅在应用层、中间层和数据层很重要,对于微服务的架构的整体端到端部署和支持也同样也是如此。工具和分析集成刚刚开始关注混合部署中十分重要的跟踪和观察性。

Microservices 客户成功案例

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

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