本文篇幅较长,建议合理利用右上角目录进行查看(如果没有目录请刷新)。

本文基于《Spring Cloud与Docker高并发微服务架构设计实施》一书进行总结和扩展,大家也可以自行研读此书。

前言

微服务:一种使用轻量级架构设计的组件化小应用,这种小应用只关注一定范围的业务功能。

微服务架构:通过高效灵活的管理机制(服务注册发现、服务路由、负载均衡、服务通信等),组合这些微服务,组成一个功能全面、业务丰富的大型平台。

出现背景:互联网环境竞争激烈,产品需要快速迭代,快速扩张,以抢占市场;传统SOA架构过于重量级并不符合这种需求,而微服务架构则很适用于这种场景。

一、微服务架构与Spring Cloud

1.1、微服务概念的由来

2011年5月:据说,在威尼斯附近一个软件架构师研讨会上有人提出这个概念

2014年3月:詹姆斯·刘易斯和马丁·福勒发表了一篇博客,总结了微服务架构的共同特点。https://martinfowler.com/articles/microservices.html

1.2、微服务的定义

要注意微服务和微服务架构是2个不同的东西。

微服务的定义:种使用轻量级架构设计的组件化小应用,这种小应用只关注一定范围的业务功能。

  • 组件化:组件通常是以代码库的形式,提供函数式调用;而微服务的组件化是以应用的形式,通过HTTP通信提供接口服务。
  • 分而治之:微服务是完全独立的。
  • 合而用之:微服务架构将微服务通过轻量级通信的方式进行整合;这种整合不只是多服务,还是一种多实例、多副本的整合,这样可以通过分布式环境资源和低廉的机器组合成强大的服务系统。
  • 轻量级:不同于实现设定IP和端口访问的传统做法,而是通过服务注册和发现,使用服务实例名进行调用。所以微服务可以发布在任意主机中,随时修改主机IP和端口,发布任意多的副本。

综上,可以总结出

微服务架构的特点:

  • 小型化:组件化的方式构建应用程序,每一个组件(微服务)只完成一定范围内的业务,开发变得简单。
  • 自治化:每个服务独立自治,实现对复杂功能的解耦。微服务使用对了数据库,独立部署,独立运行,符合高内聚松耦合原则;微服务的更新迭代不依赖其它服务,所以将对其它服务的影响减到最小。
  • 扁平化:使用扁平化治理,让微服务独立自治以挥其优势和长处的同时,使他们处于杂而不乱的有序可控的状态中。
  • 轻量级:微服务的组件化是一种轻量级体现;使用简单的REST协议和轻量的消息总线来实现通信,没有使用SOA中的ESB重量级设计。

1.3、微服务架构与整体架构的区别