什么是微服务

微服务是一种软件架构模式,用于将大型整体应用程序分解为更小的可管理独立服务,这些独立服务通过跨语言的协议进行通信,每个服务都专注于做好一件事情。

微服务的概念并不新鲜,这是对面向服务的体系结构的重新构想,而是采用了一种更加全面的方式与unix进程和管道对齐的方法。

微服务架构的理念:

  • 这些服务是小的 - 作为一个单一的商业目的的细粒度,类似unix哲学的“做一件事,做得好”
  • 组织文化应该包含部署和测试的自动化。这减轻了管理和运营的负担。
  • 文化和设计原则应该包含失败和错误,类似于抗脆弱的系统。

为什么需要微服务

随着组织规模技术和人数的增长,管理单一代码库变得更加困难。我们都已经习惯了在一段时间内整个Twitter失败,因为他们试图用一个单一的系统来扩展他们的用户群和产品功能集。微服务使Twitter可以将他们的应用程序分解成更小的服务,这些服务可以由许多不同的团队分别管理。每个团队负责由许多可独立于其他团队部署的微服务组成的业务功能。

microservice

我们已经看到了第一手的经验,微服务系统可以缩短开发周期,提高生产力和优越的可扩展系统。

我们来谈谈一些好处:

  1. 更容易扩展开发 - 团队围绕不同的业务需求组织管理自己的服务。
  2. 更容易理解 - 微服务要小得多,通常为1000 LOC或更少。
  3. 更容易频繁地部署新版本的服务 - 可以部署,缩放和独立管理服务。
  4. 改进的容错和隔离 - 关注分离可以最大限度地减少一个服务中的问题对另一个服务的影响。
  5. 提高执行速度 - 团队通过独立开发,部署和管理微服务来更快地实现业务需求。
  6. 可重复使用的服务和快速原型 - 微服务中的unix理念使您能够重用现有服务,并更快地构建全新的功能。

微服务和微服务框架

微服务和微服务架构师两个不同的概念,微服务架构师一种设计方法,而微服务是指使用这个方法而设计的一个应用。

微服务框架是将复杂的系统使用组件化的方式进行拆分,并使用轻量级的通讯方式进行整合的一种设计方法。

微服务是通过这种架构设计方法拆分出来的一个独立的组件化的小应用。

微服务架构定义的精髓,用一句话来说,那就是“分而治之,合而用之”。

将复杂的系统进行拆分的方法,就是“分而治之”。分而治之,可以让复杂的事情变得简单,这很符合我们平时处理问题的方法。

使用轻量级通讯等方式进行整合的设计,就是“合而用之”的方法,合而用之可以让微小的服务变得强大。

单体应用的不足之处

  • 复杂性逐渐变高
  • 技术债务逐渐上升
  • 维护成本大
  • 持续交付周期长
  • 可扩展性差

微服务架构的特性

  • 单一职责
  • 轻量级通信
  • 独立性
  • 进程隔离

微服务架构的缺点

  • 运维要求较高
  • 分布式的复杂性
  • 接口调整成本高
  • 重复劳动
传统单体架构 分布式微服务架构
新功能开发 需要时间 容易开发和实现
部署 不经常而且容易部署 经常发布,部署复杂
隔离性 故障影响范围大 故障影响范围小
架构设计 初期设计选型难度大 设计逻辑难度大
系统性能 响应时间快,吞吐量小 响应时间慢,吞吐量大
系统运维 运维简单 运维复杂
新人上手 学习曲线大(应用逻辑) 学习曲线大(架构逻辑)
技术 技术单一而且封闭 技术多样而且开放
测试和差错 简单 复杂(每个服务都要进行单独测试,还需要集群测试)
测试和差错 扩展性差 扩展性好
测试和差错 重点在于开发成本 重点在于服务治理和调度

为什么使用微服务架构

  • 开发简单

  • 快速响应需求变化

  • 随时随地更新

  • 系统更加稳定可靠