第 9 章 微服务 微服务
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
在主流软件架构风格和意大利风味的全球流行美食之间,很少能看到紧密的联系。然而,微服务和披萨就是这种情况。微服务的起源可以追溯到 2008 年左右,当时我们所熟知的互联网巨头们率先大规模采用了。在亚马逊,"两个披萨规则 "作为单个系统组件(后来被称为微服务)团队规模的指导原则应运而生。什么是 "两个比萨饼规则"?很简单,每个内部团队都应该小到两个披萨就能喂饱。
然而,认为微服务在某种意义上比服务更小是一种误解。微服务的决定性特征是其范围,围绕业务能力展开。简单地说,微服务是一种设计和部署细粒度、高度内聚和松散耦合服务的方法,这些服务的组成是为了满足系统的要求。这些细粒度服务或微服务是独立部署的,必须在必要时进行通信和协调,以处理个别系统请求。因此,就其本质而言,微服务架构是分布式系统,必须处理我在前几章中描述的各种可扩展性、性能和可用性问题。
微服务是一种流行的现代架构风格,在正确的环境下具有大量的工程优势。例如,由单一微服务负责的小型 Agile 团队可以快速迭代和发展功能,并独立部署更新版本。对于系统的其他部分来说,每个微服务都是一个黑盒子,可以在内部选择最适合团队和应用需求的架构和技术堆栈。主要的新系统功能可以作为微服务构建,并组成应用架构,对系统其他部分的影响最小。
在本章中,我将简要介绍微服务并解释其主要特点。我将介绍微服务方法背后的主要工程和架构原则,并提供一般设计知识的优秀来源。鉴于本书的主题,本章的主要重点是微服务固有的分布式特性以及它们在规模上的行为方式。我将介绍当耦合的微服务处于负载状态时出现的一些问题,以及你需要在架构中设计的解决方案,以构建可扩展的弹性应用程序。
微服务运动
在许多方面,基于微服务的架构都得益于过去十年中出现的软件工程和技术创新的融合。小型 Agile 团队、持续开发和集成实践以及部署技术共同为微服务所体现的细粒度架构方法提供了肥沃的土壤。基于微服务的架构是利用这些进步部署灵活、可扩展系统的催化剂。让我们来看看它们的起源和一些特点。
单片式应用
自 IT 系统诞生以来,单体架构风格一直主导着企业应用。从本质上讲,这种风格将应用程序分解为多个逻辑模块或服务,并将其作为单个应用程序进行构建和部署。这些服务提供可被外部客户端调用的端点。端点提供安全性和输入验证,然后将请求委托给共享业务逻辑,业务逻辑则通过数据访问对象(DAO)层访问持久存储。图 9-1是一个大学管理系统的设计示例,该系统具有处理学生课程分配和时间表、房间安排、缴费以及教师和顾问互动的功能。
这种架构鼓励在上创建可重复使用的业务逻辑和 DAO,这些逻辑和 DAO 可在不同的服务实现中共享。DAO 被映射到数据库实体,所有服务实现共享一个数据库。
IBM WebSphere 和 Microsoft .NET 等流行平台可将所有服务作为一个可执行包进行构建和部署。这就是 "单体 "一词的由来--完整的应用程序。应用程序接口(API)、业务逻辑、数据访问等都封装在一个单一的部署工件中。
图 9-1. 单体应用程序示例
单片式应用程序具有许多优势,这一点并不奇怪,因为这种方法历久弥新。这种架构方法广为人知,为新的应用程序奠定了坚实的基础。它可以在多种语言的开发框架中实现广泛的自动化。测试和部署都很简单,因为只需管理一个应用程序软件包。由于应用程序在一个(可能相当强大的)服务器上运行,系统和错误监控也得到了简化。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access