微服务:从设计到部署
Primary version
Primary version
  • Introduction
  • 0、前言
  • 1、微服务简介
    • 1.1、构建单体应用
    • 1.2、走向单体地狱
    • 1.3、微服务-解决复杂问题
    • 1.4、微服务的优点
    • 1.5、微服务的缺点
    • 1.6、总结
    • 微服务实战:NGINX Plus 作为反向代理服务器
  • 2、使用 API 网关
    • 2.1、简介
    • 2.2、客户端与微服务直接通信
    • 2.3、使用 API 网关
    • 2.4、API 网关的优点与缺点
    • 2.5、实施 API 网关
      • 2.5.1、性能与扩展
      • 2.5.2、使用响应式编程模型
      • 2.5.3、服务调用
      • 2.5.4、服务发现
      • 2.5.5、处理局部故障
    • 2.6、总结
    • 微服务实战:NGINX Plus 作为 API 网关
  • 3、进程间通信
    • 3.1、简介
    • 3.2、交互方式
    • 3.3、定义 API
    • 3.4、演化 API
    • 3.5、处理局部故障
    • 3.6、IPC 技术
    • 3.7、异步、基于消息的通信
    • 3.8、同步的请求/响应 IPC
      • 3.8.1、REST
      • 3.8.2、Thrift
    • 3.9、消息格式
    • 3.10、总结
    • 微服务实战:NGINX 与应用程序架构
  • 4、服务发现
    • 4.1、为何使用服务发现
    • 4.2、客户端发现模式
    • 4.3、服务端发现模式
    • 4.4、服务注册中心
    • 4.5、服务注册方式
    • 4.6、自注册模式
    • 4.7、第三方注册模式
    • 4.8、总结
    • 微服务实战:灵活的 NGINX
  • 5、事件驱动数据管理
    • 5.1、微服务与分布式数据管理问题
    • 5.2、事件驱动架构
    • 5.3、实现原子性
    • 5.4、使用本地事务发布事件
    • 5.5、挖掘数据库事务日志
    • 5.6、使用事件溯源
    • 5.7、总结
    • 微服务实战:NGINX 与存储优化
  • 6、选择部署策略
    • 6.1、动机
    • 6.2、单主机多服务实例模式
    • 6.3、每个主机一个服务实例模式
      • 6.3.1、每个虚拟机一个服务实例模式
      • 6.3.2、每个容器一个服务实例模式
    • 6.4、Serverless 部署
    • 6.5、总结
    • 微服务实战:使用 NGINX 在不同主机上部署微服务
  • 7、重构单体应用为微服务
    • 7.1、微服务重构概述
    • 7.2、策略一:停止挖掘
    • 7.3、策略二:前后端分离
    • 7.4、策略三:提取服务
      • 7.4.1、优先将哪些模块转换为微服务
      • 7.4.2、如何提取模块
    • 7.5、总结
    • 微服务实战:使用 NGINX 征服单体
Powered by GitBook
On this page

0、前言

PreviousIntroductionNext1、微服务简介

Last updated 5 years ago

Floyd Smith

近年来,微服务在应用开发和部署方面取得了显著的进步。将应用开发或重构成微服务以分离服务,通过 API 以明确的方式相互调用。比如,每个微服务都是自包含(self-contained),各自维护自己的数据存储,可以独立更新其他服务。

微服务使得应用程序开发变得更快更容易管理,它只需要较少的人力就能实现更多的功能,可以更快更容易地部署。将应用程序设计成一套微服务,它更加容易在多台有负载均衡的服务器上运行,而且能轻松应对需求高峰、由于时间推移而平稳增长的需求和由于硬件或者软件问题导致的宕机事故。

微服务的最大进步在于改变了我们的工作方式。敏捷软件开发技术、应用迁移云端、DevOps 文化、持续集成与持续部署(CI/CD)和容器应用都使用了微服务来革新应用开发与交付。

无论是作为反向代理还是高性能的 web 服务器,NGINX 软件都与微服务和上述列出的所有技术有着紧密联系。NGINX 使得基于微服务的应用更加易于开发,确保了微服务解决方案能顺利实施。

随着 NGINX 与微服务之间的关系日渐紧密,我们已经在 NGINX 网站上运行了一个由 Chris Richardson 所编写的七部分系列微服务。他很早就参与了设计与实现,他的博文主要涵盖了微服务应用设计与开发方面的内容,包括了如何从单体应用迁移至微服务,而且提供了关于微服务问题的全面概述,非常受欢迎。

在本书中,我们已经将全篇博文转换成章节,并在每一章节添加了尾栏以展示 NGINX 实现微服务的相关内容。如果你认真听取建议,你将解决许多潜在的开发时甚至是在编写代码之前可能会遇到的问题。此书在关于 方面也是一本非常不错的书籍,它实现了以下大部分理论。

本书章节:

  1. 微服务简介

    从被夸大的微服务概念到如何在创建和维护应用时部署微服务进行简单介绍。

  2. 使用 API 网关

    API 网关是整个微服务应用的单入口,它为每一个微服务提供了 API。NGINX Plus 可以很好地应用在 API 网关层,它提供了负载均衡和静态文件缓存等功能。

  3. 微服务架构中的进程间通信

    当把一个单体应用分解成几部分,它们就需要相互通信。事实上有许多进程间通信的方案可以选择,包括表述性状态转义(REST)。本章将详细介绍。

  4. 微服务架构中的服务发现

    当服务运行在一个动态环境中,想要找到它们并不是一件容易的事情。

  5. 微服务事件驱动数据管理

    每个微服务仅维护自己特有的数据展示与存储,而不是共享一个统一、跨越一个或多个单体应用的数据存储。这种方式很灵活,但也可能导致变得复杂。本章可以帮助你理清这些问题。

  6. 选择微服务部署策略

    DevOps 中的每一步都很重要。Chris 讲解了微服务部署的主要模式,以便你可以为应用部署作出合理的选择,

  7. 重构单体应用为微服务

    理想环境下,我们不会缺少时间与金钱,因此可以将核心软件转化为最新最好的技术、工具和方法。然而你可能会发现自己正在将一个单体应用重构为微服务,而且进展非常缓慢。Chris 在本章中为你讲解明智的做法。

我们认为你会发现本书的每一章节都是值得阅读的,希望当你在开发自己的微服务应用时,能应用到本书的内容。

Floyd Smith,NGINX 公司

NGINX 微服务参考架构