站在办公室桌前的商务人士,一只手在笔记本电脑上打字,同时查看另一只手里的手机

微服务和微服务架构

微服务用于构建基于云的应用,这些应用在分布式模型中部署。它们是高度可扩展的,相比单晶架构,构建和维护所需时间与精力通常更少。

微服务可快速在云中部署

  • 微服务架构是一种设计方法,用于快速部署和更新基于云的应用。

  • 微服务通常独立运行,经常在以标准接口松散耦合的容器中进行。

  • 微服务的优点包括快速部署、轻松升级和对扩展规模与复杂性的支持。

author-image

作者

什么是微服务?

微服务是轻型、松散耦合的模块,是基于云的复杂应用的构建模块。个别微服务可以独立运行,但它们都在同一个接口下松散耦合。

微服务架构被认为是传统单晶架构开发模式的现代、灵活替代版。

单晶架构中,每一个应用通常分配一个物理或虚拟服务器,而这些服务器总是在运行。应用规模扩展和可用性完全依赖于基本硬件,而它们都是固定的实体。

相比而言,微服务则可以随着资源动态扩展在单个服务器或多个服务器上运行多个实例,支持工作负载的需求。单个微服务通常会进行容器化,以此提高便携性和扩展性。

微服务的不同特点

作为开发流程,微服务框架有一些常见但不普遍的特点。

这些特点包括:

  • 组件。微服务通常由独立的软件组件组成,它们可单独替换、升级。这一架构会对云管理技术产生影响,因为每一项微服务都必须单独提供、监测和升级。
  • 服务。这些组件包括可用于按需通信的服务,但可能无法在请求或调用之间持续保持活跃。
  • 独立部署。大多数情况下,独立服务组件在微服务框架内独立运行。如果一个组件更换或更新,对于其他服务或组件的影响很小,特别是相比于更传统的单晶架构而言。
  • 安全性。微服务之间的通信通常使用相互传输层安全 (mTLS) 加密保护数据传输不受恶意软影响和入侵。
  • 容器化。微服务通常部署在容器中,进一步提高可移动性和可扩展性。

微服务架构使得应用扩展更轻松、开发更快,助力创新并加速新功能上市。

- Amazon Web Services (AWS)

微服务和云应用的优势

微服务持续流行,是因为架构本身在云中具有灵活性。确实,最近一项英特尔的研究显示,83% 的所有新型云原生应用和 SaaS 解决方案使用了微服务。1

微服务的一大优势之一是部署速度与灵活性。云应用和工作负载的规模和范围都不断扩大,要调整单晶架构来适应新的需求变得越来越困难、耗时。微服务是分散的,所以其开发、部署和维护都可以用分布式模型管理。

比如,几个独立开发团队可以负责一个或多个微服务。责任的分散有助于根据不同部门的业务能力重新组织开发运维功能。这样可以推进整个开发流程的现代化,并消除孤岛现象。

微服务也构成了一些部署方面的挑战。单个模块可能在不同系统运行以满足请求,可能导致不同模块的性能不一致。

同样的,有些微服务会有延迟问题,如需求激增的时候。通常可以通过超额配置资源满足高峰需求来解决这些问题。

因为微服务是分散的,一项服务的中断会影响一个模块,但对其他模块的影响可能很少或没有。这是一个优势,但是服务中断也可能带来其他挑战。

比如,很难在服务停止后调试已中断的服务。一个解决方案是协调基础设施并预先监测所有流程和数据流。基于英特尔® 技术的云平台内置了硬件增强遥测技术收集器和性能监测单元 (PMU),可用于这些监测协议中。

微服务架构如何运作

在一个微服务架构中,一个复杂应用分散为多个独立功能,可以独立开发和运行。微服务可以相互通信,通常是经由 API 进行,连接松散,但是每个微服务可以单独开发、部署和更新。

微服务部署通常遵循以下三种模式之一:

  1. 云原生。一些已建立的、大容量应用和服务,以微服务的形式开始,然后留在云中。根据国际数据公司 (IDC) 的数据,有 56% 的微服务是云原生的,剩下的 44% 由旧版应用衍生。2
  2. 重构和转换。这些部署始于本地或边缘数据中心,并进行重构以适应基于云的微服务架构。重构可能包括重塑数据库和其他与单晶架构相关的资源,让它们与相应的微服务匹配。
  3. 提取和转换。一些组织将他们的应用在未重构的情况下、以简单的“提取和转换”方式迁移至微服务架构。

微服务与开发运维

微服务架构的分散属性通常会导致开发运维团队在应用开发时采用交叉功能的做法。

他们不再使用原来在堆栈中开发软件应用的做法,例如一个团队负责固件工作,另一个负责中间件,第三个负责用户界面;现在微服务的开发工作更有可能是围绕企业能力进行组织。

某种程度上,开发运维团队的开发流程和组织可以模仿微服务架构本身,其准独立、独立的单元相互之间松散互动,跨越了障碍和孤岛。

所有利益相关者应该明白,将单晶应用现代化为微服务架构是一项宏大的工程,可能需要多次迭代。对于架构师和开发人员来说,他们需要仔细评估单晶应用的多个方面并为每一个方面提出迁移方案。

保障微服务安全

因为微服务需要交互运作,使用时在交互的每个端点、传输时在两个端点之间,都需要重视数据保护。

使用相互传输层安全 (mTLS) 加密是常见的解决方案,有助于在每个端点和传输过程中减少入侵和恶意软件影响。mTLS 的目标是加密每一个由微服务提出的请求。这一全面的安全方案是零信任环境的基础,每个微服务、用户和连接必需独立进行验证和授权。

但并不总是需要在每个微服务中加入授权和加密。为避免重复,很多开发者会部署服务网格作为替代。网格是微服务架构里的基础设施层或代理实例,能够保护、控制和监测通信。

安全协议可能需要大量算力,可能会挤兑资源,延缓微服务交付。为加速加密算法并减少延迟,微服务开发者可以部署英特尔® Data Protection Technology(英特尔® DPT)。

英特尔® DPT 包含英特尔® Advanced Encryption Standard - 新指令(英特尔® AES-NI)和英特尔® 睿码技术指令,以及英特尔® Digital Random Number Generator(英特尔® DRNG)高速创建密匙。

这些高级的算法保护针对英特尔® 至强® 可扩展处理器的内置安全功能进行了优化。例如,英特尔® Advanced Vector Extensions 512(英特尔® AVX-512)和算法创新如对称加密、安全哈希和功能缝合等显著提升了加密性能。

大型云服务提供商在由英特尔® 至强® 可扩展处理器支持的实例中提供这些性能和其他硬件增强安全功能。

微服务架构示例和其不断演变的框架

随着云应用持续在规模和范围上扩展,开发者开始愈加依赖微服务来构建复杂的多功能应用,并快速进行扩展以适应不断变化的使用模式。

对于每一个基于微服务的部署而言,通常有单独运行的多个松散连接的组件服务。这些模块组件协作创建集成的用户体验或应用。

在一些基于微服务的应用中,用户体验可能因组别特征而不同,微服务的使用效益则体现在代码可以共享、重复使用。这一方式免去了构建和维护同一个服务的多个实例的需求。如果有些差异化体验需要进行定制,则可以加入额外的微服务。

例如,广受欢迎的拼车应用基于微服务,但是司机和乘客的使用体验不同。司机管理、定位追踪、乘客资料和付款流程这些各不相同的微服务一起为用户和司机各自移动设备的界面提供支持。所有的界面属于同一品牌,但某些功能对于不同组别来说可能会不一样。

微服务架构也是数字商店的常用环境。产品推荐和结账流程可能是作为单个微服务进行开发和部署的,但是购物者会在线上商店的品牌环境和界面中均体验到这两个流程。

何时使用微服务

微服务通过将复杂的解决方案分解为其组件,可以帮助迁移和扩展应用。每一个微服务都是独立开发和部署的,各种微服务作为松散集成的实体运行。

组织在开发新的云原生解决方案时最可能使用微服务。在现有单晶架构无法满足其不断变化的需求时,也可能部署微服务。

向微服务架构过渡可能会导致开发运维团队本身的组织和结构变化。随着时间推移,团队可以以新的、功能交叉的视角看待企业能力,而不是模仿技术堆栈功能层的孤岛。

常见问题解答

常见问题解答

微服务是轻型模块,可以作为基于云的复杂应用的构建模块。个别微服务可以独立运行,但它们都在同一个接口下松散耦合。

相较单晶架构而言,微服务可以快速、轻松地进行部署。微服务框架还可轻松扩展规模,以适应日益复杂的工作负载和不断扩展的使用模型。