一、微服务架构概述

1. 什么是微服务

In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies. ——James Lewis and Martin Fowler (2014) 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值!每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择适合的语言、工具对其进行构建

  • 微服务是一种架构风格
  • 一个应用拆分为一组小型服务
  • 每个服务运行在自己的进程内,也就是可独立部署和升级
  • 服务之间使用轻量级HTTP交互
  • 服务围绕业务功能拆分
  • 可以由全自动部署机制独立部署
  • 去中心化,服务自治。服务可以使用不同的语言、不同的存储技术

2. 主题词

现代数字化生活-落地维度

image.png
如果能有一个东西出现将我们数字化生活中的落地维度串联起来,那是不是就能更加高效便捷呢(小米)

分布式微服务架构-落地维度

满足哪些维度?支撑起这些维度的具体技术?
一、微服务架构概述 - 图2
image.png

二、SpringCloud概述

1. SringCloud简介

SpringCloud:分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的集合体,俗称微服务全家桶
它利用 Spring Boot 的开发便利性简化了分布式系统的开发,比如服务发现、服务网关、服务路由、链路追踪等。Spring Cloud 并不重复造轮子,而是将市面上开发得比较好的模块集成进去,进行封装,从而减少了各模块的开发成本

在这个全家桶包含了大量的技术框架
一、微服务架构概述 - 图4

SpringCloud俨然已成为微服务开发的主流技术栈,在国内开发者社区非常火爆,“微”力十足

2. SpringCloud优缺点

其主要优点有:

  • 集大成者,Spring Cloud 包含了微服务架构的方方面面。
  • 约定优于配置,基于注解,没有配置文件。
  • 轻量级组件,Spring Cloud 整合的组件大多比较轻量级,且都是各自领域的佼佼者。
  • 开发简便,Spring Cloud 对各个组件进行了大量的封装,从而简化了开发。
  • 开发灵活,Spring Cloud 的组件都是解耦的,开发人员可以灵活按需选择组件。

接下来,我们看下它的缺点

  • 项目结构复杂,每一个组件或者每一个服务都需要创建一个项目。
  • 部署门槛高,项目部署需要配合 Docker 等容器技术进行集群部署,而要想深入了解 Docker,学习成本高。

Spring Cloud 的优势是显而易见的。因此对于想研究微服务架构的同学来说,学习 Spring Cloud 是一个不错的选择

3. 与Dubbo对比

Dubbo 只是实现了服务治理,而 Spring Cloud 实现了微服务架构的方方面面,服务治理只是其中的一个方面。下面通过一张图对其进行比较:
一、微服务架构概述 - 图5

4. 互联网大厂微服务架构案例

京东:

一、微服务架构概述 - 图6

阿里

一、微服务架构概述 - 图7

京东物流

一、微服务架构概述 - 图8

5. Spring Cloud技术栈

一、微服务架构概述 - 图9
一、微服务架构概述 - 图10
一、微服务架构概述 - 图11

6. SpringBoot和SpringCloud版本选型

Spring官方对于Boot和Cloud的版本选型有者严格要求,主要还是依据Cloud的版本来选择Boot、

SpringBoot:

SpringCloud:

查看SpringCloud官网发现:在2020版本之前都是以A-H伦敦地铁站命名,当SpringCloud的发布内容积累到临界点或者一个重大BUG被解决后,会发布一个”service releases”版本,简称SRX版本,比如Greenwich.SR2就是SpringCloud发布的Greenwich版本的第2个SRX版本
image.png
官方文档告知了我们版本选型的兼容性
image.png
也可以通过访问官方提供的 JSON接口 查看具体版本兼容信息
image.png
还可以点击版本文档查看最佳适配的Boot版本
image.png
image.png

接下来开发用到的组件版本

  • Cloud - Hoxton.SR1
  • Boot - 2.2.2.RELEASE
  • Cloud Alibaba - 2.1.0.RELEASE
  • Java - Java 8
  • Maven - 3.5及以上
  • MySQL - 5.7及以上

7. Cloud组件的停更/升级/替换

image.png
Spring Cloud中文文档
Spring Cloud中文文档