1

微服务简介

1.软件架构的演变
早期的软件,所有功能都集中在一起,这种软件集中、代码庞大、功能耦合的软件架构,称为单体架构(monolithic software)。整个软件就是单一的整体,仿佛一体化的机器。可以想到,软件的功能越多,单体架构就越复杂。很多缺点也随之暴露出来。

  • 所有功能耦合在一起,互相影响,最终难以管理。
  • 哪怕只修改一行代码,整个软件就要重新构建和部署,成本非常高。
  • 因为软件做成了一个整体,不可能每个功能单独开发和测试,只能整体开发和测试,导致必须采用瀑布式开发模型。
    单体架构的大型软件,不仅开发速度慢,而且会形成难以维护和升级的复杂代码,称为程序员的沉重负担。因此由单体架构衍生出了面向服务架构(service-oriented architecture)。

2.面向服务架构
为了解决单体架构的缺陷,很早就有人提出,要打破代码的耦合,拆分单体架构,将软件拆分成一个一个独立的功能单元。功能单元可以用远程“服务”的形式提供,就诞生了“面向服务架构”(service-oriented architecture,SOA)。
所谓的服务(service),就是在后台不间断运行、提供某种功能的一个程序。最常见的服务就是Web服务,通过80端口向外界提供网页服务。
“面向服务架构”就是把一个大型的单体程序,拆分成一个一个独立服务,也就是较小的程序。每个服务都是一个独立的功能单元,承担不同的功能,服务之间通过通信协议连在一起。
面向服务架构有很多优点:

  • 每种服务功能单一,相当于一个小型软件,便于开发和测试。
  • 各个服务独立运行,简化架构,提高可靠性。
  • 鼓励和支持代码重用,同一个服务可以用于多种目的。
  • 不同服务可以单独开发和部署,便于升级。
  • 扩展型好,可以容易地加机器、加功能,承受高负载。
  • 不容易出现单点故障。即使有个服务失败了,不会影响到其他服务。
    跟单体架构不一样,面向服务架构是语言不敏感的,不同服务可以使用不同的语言和工具开发,可能需要部署在不同的系统和环境。这就意味着,面向服务架构默认运行在不同的服务器上,每台服务器提供一种服务,多台服务器共同组成一个完整的网络应用。

3.微服务
2014年,Docker出现彻底改变了软件开发的面貌。程序可以运行在容器里,每个容器可以分别设定运行环境,并且只占用很少的系统资源。显而易见,可以用容器来实现“面向服务架构”,每个服务不再占用一台服务器,而是占用一个容器。这样就不需要多台服务器了,最简单的情况下,本机运行多个容器,只用一台服务器就实现了面向服务架构,这种实现方式就是微服务。
简单地说,微服务就是采用容器技术的面向服务架构,它依然使用“服务”作为功能单元,但是变成了轻量级实现,不需要新增服务器,只需要新建容器(一个进程),所以才叫“微服务”。
一个微服务就是一个独立的进程。这个进程可以运行在本机,也可以运行在别的服务器,或者云端(比如云服务和云函数FAAS)。
其特点与面向服务架构一样,因为轻量级,所以很多功能的解耦合服务化可以做得更彻底,而且,可以标准化,同样的容器不管在哪里运行,结果都一样,所以市场上有很多SaaS产品,提供标准化的微服务。
正是由于微服务这些突出的优点,这几年才会变得如此流行。它和容器技术、云服务一起,一定会在未来的软件开发中,扮演越来越重要的角色。

参考:
https://www.ruanyifeng.com/blog/2022/04/microservice.html

posted @ 2024-04-07 11:56  Bonne_chance  阅读(9)  评论(0)    收藏  举报
1