SpringCloud微服务架构学习笔记

SpringCloud微服务架构学习笔记(待更新)

  • 01.什么是微服务架构
  • 02.如何把握全局视角去设计微服务工程
  • 03.Alibaba Nacos: 服务注册与配置中心
  • 04.SpringBoot Admin 微服务应用监控
  • 05.授权、鉴权中心微服务
  • 06.SpringCloud GateWay 微服务网关(待补)
  • 07.SpringCloud Sleuth + Zipkin: 分布式日志追踪(待续)

01.什么是微服务架构

什么是微服务架构
微服务架构的演进过程
最早的系统架构设计:单体架构
● 优点:开发、部署、上线非常简单。
● 缺点:代码耦合严重,牵一发而动全身。
SpringCloud微服务架构学习笔记_第1张图片
SpringCloud微服务架构学习笔记_第2张图片

单体架构的升级改进:垂直应用架构
● 优点:服务、部署独立,水平扩展容易。
● 缺点:搭建复杂,服务之间关系错综复杂,维护困难。
SpringCloud微服务架构学习笔记_第3张图片

垂直应用架构的升级改进:SOA 架构(面向服务架构)
● 优点:提供了底层服务的统一入口(ESB),简化了客户端的去调用。
● 缺点:实现难度较高、开发周期较长、业务逻辑划分太大、相对来说存在一定的耦合。
SpringCloud微服务架构学习笔记_第4张图片

业界最流行的软件开发架构:微服务架构
SpringCloud微服务架构学习笔记_第5张图片

微服务架构需要遵循的原则
微服务架构能够带来的收益
合理、正确的将单体应用迁移到微服务
● 单个的微服务,可以选择一门擅长的语言去开发,扩展性强。
● 对于整个应用而言,代码不再耦合,不会出现大量的冲突。
● 微服务可以重用,应用发布时间可控性更强。
● 通过故障隔离,让错误在微服务中降级,不会影响到整个应用(或其他服务)。

不遵循微服务架构原则会出现巨大的问题
● 微服务之间的依赖错综复杂,难以维护。
● 开发过程互相纠缠,开发、上线时间严重影响。
SpringCloud微服务架构学习笔记_第6张图片

需要遵循的原则
● 职责独立:每个微服务只做自己功能范围内的事,微服务之间的依赖链不要过长,否则排除问题会异常复杂。
SpringCloud微服务架构学习笔记_第7张图片

● 使用熔断器实现快速的故障容错和线程隔离,例如 Hystrix、Sentinel。
● 通过网关代理微服务请求,网关是微服务架构对外暴露的唯一入口。
SpringCloud微服务架构学习笔记_第8张图片

● 确保微服务 API 变更后能够向后兼容。

02.如何把握全局视角去设计微服务工程

领域驱动设计 DDD
DDD 相关概念

● DDD 是一种软件架构设计方法,它并不定义软件开发过程(DevOps)。
● DDD 利用面向对象的特性,以业务为核心驱动,而不是传统的数据库(表)驱动开发。
什么是领域
● 领域是对功能需求的划分;大的领域下面还有许多小的子领域。
SpringCloud微服务架构学习笔记_第9张图片

领域建模
● 理解了领域概念,学习了领域知识,对领域建模。
○ 分析领域模型(搞清楚领域内包含的业务场景),推演实体(需要的数据表)、值对象(服务之间传递数据的对象)、领域服务(具体功能实现,Service)。
○ 找出聚合边界(降低服务耦合)。
■ 做合理的业务拆分、服务拆分。
■ 服务与服务之间不存在或者存在极少的耦合,便于将来的系统维护。
○ 为聚合配备存储仓库(数据持久化)。
■ 也就是要有数据库将数据持久化。
○ 实际 DDD,并不断推倒和重构、优化。

DDD 经典分层架构图
SpringCloud微服务架构学习笔记_第10张图片

● User Interface:用户接口层
○ 主要是面向于用户去展示信息并接受用户的指令。
● Application:应用程序层
○ 相当于 Controller 的一层,它对外提供服务接口,对内调用领域层,不包含业务逻辑,是领域模型的门面。
● Domain:领域层
○ 核心层,领域模型所在之处,可以认为它就是数据库中的表。
● Infrastructure:基础设施层
○ 为其他层提供通用的基础能力,比如层之间的通信、持久化机制等等。
传统的软件开发习惯与 DDD
● 传统的软件开发习惯总是从设计数据表去开始的,存在的最大问题是一旦前期设定的数据表不合理,后期的改动就会非常大。
● DDD 的优势在于程序设计初期关注的是业务而不是数据表,数据持久化只是设计后期的一个考虑。

电商工程业务解读及微服务模块拆分
SpringCloud微服务架构学习笔记_第11张图片
SpringCloud微服务架构学习笔记_第12张图片
SpringCloud微服务架构学习笔记_第13张图片

03.Alibaba Nacos: 服务注册与配置中心

Alibaba Nacos 的基本架构与概念
SpringCloud微服务架构学习笔记_第14张图片

● 服务:指一个或一组软件功能,例如特定信息的检索或者是一组操作的执行。它的目的是不同的客户端可以为不同的目的去重用(例如通过跨进程的网络调用)。Nacos 支持主流的服务生态,如 Kubernetes Service、gRPC|Dubbo RPC Service 或者 Spring Cloud RESTful Service 等等。
● 配置服务:工程在运行的过程中可能需要一些动态的配置信息,例如服务的元数据,数据库地址等等。此时就可以通过 Nacos 存储并管理这些配置信息。Nacos 的配置服务对标 Spring Cloud Config, 且比他更加优秀。
● 名字服务:服务注册与服务发现是微服务架构下不可缺少的功能,服务注册是说服务把自己的信息(例如 IP 地址、端口号、服务名称)注册到 Nacos 上去绑定,服务发现则是其他的微服务提供一些信息通过 Nacos 去寻找已经注册的微服务。依此 能够实现微服务之间的互通互联。

SpringCloud微服务架构学习笔记_第15张图片

部署 Alibaba Nacos 单机版本
默认用户名/密码均为 nacos
SpringCloud微服务架构学习笔记_第16张图片
SpringCloud微服务架构学习笔记_第17张图片
SpringCloud微服务架构学习笔记_第18张图片
SpringCloud微服务架构学习笔记_第19张图片
SpringCloud微服务架构学习笔记_第20张图片
SpringCloud微服务架构学习笔记_第21张图片
SpringCloud微服务架构学习笔记_第22张图片
SpringCloud微服务架构学习笔记_第23张图片
SpringCloud微服务架构学习笔记_第24张图片

集群化部署 Alibaba Nacos
SpringCloud微服务架构学习笔记_第25张图片
SpringCloud微服务架构学习笔记_第26张图片
SpringCloud微服务架构学习笔记_第27张图片
SpringCloud微服务架构学习笔记_第28张图片
SpringCloud微服务架构学习笔记_第29张图片
SpringCloud微服务架构学习笔记_第30张图片

Alibaba Nacos Client 服务注册与发现
SpringCloud微服务架构学习笔记_第31张图片

04.SpringBoot Admin 微服务应用监控

回顾 SpringBoot Actuator
SpringCloud微服务架构学习笔记_第32张图片

搭建 SpringBoot Admin 监控服务器
SpringCloud微服务架构学习笔记_第33张图片
SpringCloud微服务架构学习笔记_第34张图片

应用注册到 SpringBoot Admin Server
SpringCloud微服务架构学习笔记_第35张图片
监控中心添加安全访问控制

05.授权、鉴权中心微服务

授权、鉴权中心微服务功能设计
什么是 JWT
JWT、会话、少量信息交换
SpringCloud微服务架构学习笔记_第36张图片

JWT 的结构(组成部分)
SpringCloud微服务架构学习笔记_第37张图片

授权、鉴权功能设计
SpringCloud微服务架构学习笔记_第38张图片

06.SpringCloud GateWay 微服务网关(待补)

SpringCloud微服务架构学习笔记_第39张图片
SpringCloud微服务架构学习笔记_第40张图片

07.SpringCloud Sleuth + Zipkin: 分布式日志追踪(待续)

你可能感兴趣的:(Java基础,微服务,spring,cloud,架构)