尽管构建单个微服务的概念很易于理解,但运行和支持健壮的微服务应用程序(尤其是在云中运行)不只是涉及为服务编写代码。图1-10展示了在编写或构建微服务时需要考虑的一些准则。
图1-10 微服务不只是业务逻辑,还需要考虑服务的运行环境以及服务的伸缩性和弹性
编写一个健壮的服务需要考虑几个主题。让我们更详细地了解图1-10中提及的要点。
● 大小适当 ——如何确保微服务的大小适当,这样才不会让微服务承担太多的职责。请记住,服务大小适当,就能快速更改应用程序,降低整个应用程序中断的总体风险。
● 位置透明 ——如何管理服务调用的物理细节。在一个微服务应用程序中,多个服务实例可以快速启动和关闭。
● 有弹性 ——如何通过绕过失败的服务,确保采取“快速失败”的方法来保护微服务消费者和应用程序的整体完整性。
● 可重复 ——如何确保提供的每个新服务实例与生产环境中的所有其他服务实例具有相同的配置和代码库。
● 可伸缩 ——如何建立一种通信,使服务之间的直接依赖关系最小化,并确保可以优雅地扩展微服务。
当我们更详细地研究这些要点时,本书采用了一种基于模式的方法。通过基于模式的方法,我们将看到可以跨不同技术实现来使用的通用设计。虽然本书选择了使用Spring Boot和Spring Cloud来实现本书中所使用的模式,但你完全可以把这里的概念和其他技术平台一起使用。具体来说,本书涵盖以下微服务模式:
● 核心开发模式;
● 路由模式;
● 客户端弹性模式;
● 安全模式;
● 日志记录和跟踪模式;
● 应用程序度量模式;
● 构建/部署模式。
如何创建一个微服务并没有一个正式的定义,了解这一点是很重要的。在下一节中,你将看到构建微服务时必须考虑的一些常见方面。