微服务是什么

56 阅读3分钟

要理解微服务,首先要理解软件架构的演变

单体架构

早期的服务将所有功能都写在一起,这称为单体架构,随着功能的增加,程序将变得极为复杂和难以维护:

  1. 所有功能都耦合在一起,相互影响最终难以管理。
  2. 每次程序有改变,即便很小的改变,必须重新编译部署,成本较高。
  3. 因为软件做成了一个整体,不能每个功能单独开发和测试,只能整体开发和测试,所以必须采用瀑布流开发模式。

单体架构开发的大型软件,不仅开发效率慢,而且会生成难以维护和升级的复杂代码。

面向服务架构

为了解决单体架构问题,必须打破代码耦合,拆分单体架构。把软件拆分成一个个独立的功能单元,功能单元通过远程”服务“的形式提供,这就是面向服务架构(service-oriented-architecture,简称SOA。

服务就是一个在后台不间断运行,提供某种功能的一个程序。”面向服务架构“就是把一个大型的单体架构拆分成多个独立服务,每个独立服务都是一个独立的功能单元,承担不同的功能,服务之间通过通信协议连在一起。

这个架构有很多优点:

  1. 每个服务功能单一,方便开发和测试
  2. 各服务运行相互独立,简化架构,提高可靠性
  3. 鼓励和支持代码复用,同一个服务可以用于多种目的
  4. 不同服务间可以单独开发部署,便于升级
  5. 扩展性好,可以容易的加机器、加功能,承受高负载
  6. 不容易出现单点故障,一个服务发生故障不影响其他服务

面向服务架构对语言不敏感,不同服务可使用不同语言和工具开发,可能需要部署在不同的系统和环境上,所以面向服务架构默认运行在不同服务器上。

微服务

docker使程序运行在容器中,每个容器分别设定运行环境且占用较少的系统资源。这让多个不同服务运行在同一台服务器上变得简单且方便,这种实现方式叫做微服务架构。

简单说微服务就是采用容器技术的面向服务架构。它依然使用服务作为功能单元,但变成了轻量级实现,不需要新增服务器,只需要新建容器(一个进程),所以才叫微服务。

一个微服务就是一个独立的进程,它可以运行在本地,也可以运行在启发服务器或云端。它的特点与面向服务架构是一样的,但因为更轻量级所以功能的解耦和服务化可以做的更彻底。而且它可以标准化,同样的容器不管在哪里运行,运行结果都是一样的。