了解我们在中国开展业务的承诺。 阅读全文

什么是微服务?

什么是微服务?

微服务是一种软件开发方法,在这种方法中,应用程序被划分为通过 API 相互通信的独立服务。每个微服务都负责特定的业务功能,并且可以独立开发、部署和扩展。与传统的单体式应用程序相比,这种架构可以提供更高的敏捷性、可扩展性和恢复能力。

“微服务”这个术语是指一种软件应用程序的交付模式,它将应用程序划分为更小的独立组件。这有助于提升应用程序的功能性和可靠性,也让开发人员能够更轻松地创建和维护软件应用程序。

微服务运作方式示意图。

微服务是现代应用程序交付的关键部分。从社交网络应用程序、在线零售直至流媒体视频,当今几乎所有主要软件应用程序都使用微服务构建。它们是什么?它们具体会如何改进软件?我们来探究一下微服务的实际优势,并探讨使用微服务的潜在弊端。

面向服务的架构 (SOA) 是什么?

面向服务的架构 (SOA) 是应用程序开发中单体架构的演进形态。SOA 先于微服务架构出现,将应用程序分解为更小、更易管理的部分。这些部分称为服务,设计为通过消息彼此通信。服务还设计为彼此独立,因此可以在不影响应用程序其余部分的情况下予以替换或升级。

SOA 通常用在基于 Web 的应用程序中,提供了一种将业务逻辑与表示逻辑、数据访问和数据存储分离的方法。

面向服务的架构可用于构建更易于维护和扩展的应用程序。它还有助于创建更模块化、更灵活的应用程序。

使用面向服务的架构的主要优势包括:

  • 更轻松的维护和扩展

  • 更模块化、更灵活的应用程序

  • 更短的开发时间

企业服务总线 (ESB) 是什么?

企业服务总线 (ESB) 是一种为进程间通信提供中心节点的软件应用程序。在 SOA 的上下文中,它通常用于向其他应用程序提供服务。

ESB 让企业能够轻松构建、部署和管理 SOA 解决方案。它管理、监控和协调企业 IT 基础架构中的所有服务。

这种类型的技术可以用于内部和外部通信,因此日渐普及。部分应用场景示例包括:

  • 数据集成
  • 服务发现和注册
  • 服务编排
  • 事件通知和日志记录

微服务架构与 SOA 的对比

在应用程序开发领域,微服务架构是一种新兴模式。微服务架构与 SOA 高度相似,但微服务架构的诞生是为了弥补其前身留下的缺口。这并不代表孰优孰劣,归根结底要取决于具体应用场景。SOA 的设计初衷是满足企业的需求,这意味着,尽管各项服务彼此独立,但系统在设计上是相互依存的。其核心理念是能够为企业的其他部分重复使用服务。

另一方面,微服务是真正独立的。微服务架构追求数据复制而非数据共享,因此不会影响性能。微服务还消除了对 ESB 的需求。

使用微服务的好处

软件即服务 (SaaS) 应用程序的兴起和容器的广泛采用,使得人们对更高效开发方法的需求与日俱增。作为回应,应用程序本身也在发生变化——从擅长处理多项任务的单体架构,演变为针对具体功能设计的分布式独立服务集合。

微服务的一些主要优势包括:

1.更高的可靠性

每项微服务都在更大的应用程序中执行单一逻辑功能。因此,开发人员提供的更新仅隔离在需要变更的服务中。应用程序内的微服务之间通常有一个定义明确的接口。只要接口保持不变,即使实时进行更改,应用程序也能保持正常运行。

2.更短的开发时间

各服务为每个组件提供定义完善的功能集,可围绕特定需求构建。这支持轻松跨多支团队横向扩展开发工作,也支持更加轻松地快速更新或添加新功能。

3.增强的应用程序功能

开发团队能够创建单个组件,可在多种上下文中重复使用。他们可以创建新应用程序,以适应更广泛的用户,并提供更深入的功能,而无需重复劳动。

4.松散耦合的资源

每个微服务都可以为多个应用程序和接口提供服务,从而减少了开发人员需要定制的实现数量。独立设计还意味着,对一项微服务的更改不会影响另一项微服务。但这也意味着,在客户端和服务器端管理请求时,需要进行负载均衡。

微服务使开发人员能够专注于其应用程序的特定功能,避免因将多个应用程序结合在一起而引发的开发问题。通过将应用程序分解为易于管理的部分,开发人员即可利用新的软件开发技术(例如自动测试),比以往更快地交付高质量的结果。

微服务也更易于维护,因为关联的服务都是独立的。所有依赖服务都在各自的平台上运行,具有单独的管理工具,从而提供更高的一致性。相较于将相关组件嵌入到更大的单体应用程序中,它还使管理相关组件的整个集合更轻松。

微服务的缺点

开发企业应用程序时,采用微服务架构显然优于单体架构。但这并非没有潜在问题。使用微服务存在一些明显的缺点。

1.微服务边界未定义的可能性

如果文档和要求定义不够明确,将很难管理服务依赖关系和整体应用程序功能。然而,设计模式(也称为架构模式)是可重复使用的解决方案,可用于规避常见问题。

2.安全漏洞

网络安全也可能是微服务的一个潜在缺点。每项服务均为独立部署,通常都有自己的一套安全控制措施。因此,并不总是清楚谁有权访问哪个组件,从而导致恶意活动的潜在风险增加。

微服务之间的调用通常基于 API,因此需要通过网络传输实现。这些服务的通信方式可能成为网络犯罪分子的攻击媒介。在选择部署微服务所用的平台和框架时,开发人员必须保持谨慎。这也包括将用于保障其安全的配置。

3.维护代码的复杂度和难度

最主要的缺点在于其难以扩展和维护。原因在于,每项服务都需要与系统中的其他服务分开管理。

4.难以修复的错误

鉴于微服务的细粒度、分布式的性质,修复错误可能非常困难。不同于面向服务或单体架构,对微服务架构中的某个区域进行调整不会影响其余部分。这意味着,您的员工最终可能要花费更多时间来识别和解决问题。

微服务的工具和部署选项

微服务有许多不同的部署选项。开发人员通常会选择将其微服务作为基于容器的服务部署在专用主机上。他们也可能选择使用平台即服务 (PaaS) 提供商,例如 Akamai Cloud。

使用 PaaS 提供商能提供许多云原生优势,包括轻松扩展服务的能力,以及无需维护主机的便利性。然而,开发人员需要考虑依赖外部云服务提供商造成的风险。与部署自己的基础架构相比,这种方案带来的风险更大。

如何保护微服务

为了确保微服务的安全性,开发人员应该:

  • 使用 HTTPS 进行加密数据传输
  • 利用防火墙来保护服务
  • 实施日志记录机制以监控可疑活动
  • 保护 API 通信,因为 API 通常处理微服务与后端服务之间的通信

微服务在分布式系统与自动化中的角色

分布式系统:微服务本质上是为分布式系统设计的,其中每个服务可以独立托管病在不同的服务器甚至不同的数据中心之间扩展。这种去中心化可确保即便某个组件发生故障,单个服务也能继续正常运行,从而增强恢复能力。

微服务自动化:自动化在基于微服务的架构中至关重要。部署、扩展和监控等任务通常会自动化,以确保持续集成和交付 (CI/CD)。Kubernetes 和 Docker 等工具可自动编排和扩展微服务,支持更轻松地管理分布式系统。

微服务还支持基础架构即代码 (IAC),其中的配置和基础架构管理通过代码实现自动化。这能确保部署的一致性和可重复性,从而降低人为失误的概率。

常见问题

微服务与单体架构存在多方面的差异,包括:

  • 部署:微服务可以独立部署。每项独立服务均可单独优化、调整和改进,而不会影响其他任何服务。单体架构必须作为一个单元进行部署。如需更新或更改一个组件,则必须重新部署整个架构。

  • 可扩展性:单体架构的应用程序扩展通常包括对整个应用程序进行扩展,这可能会导致效率低下和资源浪费。微服务可以提供精细的可扩展性,这意味着它们可以根据具体要求进行独立调整。

  • 维护:团队可以通过微服务来管理系统中较小的部分,而不必像使用单体架构那样对整个应用程序进行返工。微服务能够带来更高效的维护和开发,无论是针对 API 安全的调整、常规安全测试还是应用程序功能的改进。

微服务架构主要使用 API(应用程序编程接口)进行通信。此类架构中的一些常见通信模式包括 REST API、消息队列和事件驱动架构。其区别如下:

  • REST API:这是微服务架构最常见的通信模式之一,原因在于其实现和通信都较为简单。REST API 通常在 API 网关演进过程中使用。

  • 消息:这种通信形式可用于微服务架构中的异步通信。

  • 事件驱动型架构:在事件驱动型架构中,微服务通过生成和使用事件进行通信。一项服务可以对另一项服务发出的事件做出响应,依此类推。这有助于实现更松散的可扩展性和耦合性。

微服务可以使用多种技术进行开发。这完全取决于应用程序的具体需求以及开发架构团队的偏好。微服务开发中常用的技术包括 Docker、Kubernetes、服务网格(如 Istio)、API 网关以及消息系统(例如 Kafka)。

微服务会影响持续集成、持续交付、自动化测试、基础架构即代码和监控实践。微服务对 DevOps 实践有着重大影响。微服务可以提高可扩展性、敏捷性、恢复能力等,因此微服务与 DevOps 是相辅相成的实践。

客户为什么选择 Akamai

Akamai 是一家致力于支持并保护在线商业活动的网络安全和云计算公司。我们卓越的安全解决方案、出色的威胁情报和全球运营团队可提供深度防御,保护各地的企业数据和应用程序。

相关博文

DDoS 靠边站:分布式拒绝防御 (DDoD) 的时代已经到来
即使流量规模不大,AI 赋能的复杂 DDoS 攻击也足以攻破您的防御系统。如今已是拒绝防御的时代。
数据泄露让软件供应链中的 AI 和 API 漏洞浮出水面
软件供应链中会存在漏洞,而您在选择主要供应商时可能没有察觉到。分层安全保护方法可以助您防范漏洞。
API 安全已纳入联邦审查范围:CIO 们的警钟已然敲响
学习如何采用审慎的结构化方法做好 API 安全防护工作,以应对日益严格的合规法规,并减少风险暴露。

探索 Akamai 的所有安全解决方案

开始免费试用,了解全球规模超大且值得信赖的云交付平台带来的改变。