当前位置:首页 > 服务端 > SpringCloud微服务架构学习笔记

SpringCloud微服务架构学习笔记

01.什么是微服务架构

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

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

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

业界最流行的软件开发架构:微服务架构
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记

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

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

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

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

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

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

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

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

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

DDD 经典分层架构图
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记

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

电商工程业务解读及微服务模块拆分
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记

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

Alibaba Nacos 的基本架构与概念
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记

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

SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记

部署 Alibaba Nacos 单机版本
默认用户名/密码均为 nacos
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记

集群化部署 Alibaba Nacos
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记

Alibaba Nacos Client 服务注册与发现
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记

04.SpringBoot Admin 微服务应用监控

回顾 SpringBoot Actuator
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记

搭建 SpringBoot Admin 监控服务器
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记

应用注册到 SpringBoot Admin Server
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记
监控中心添加安全访问控制

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

授权、鉴权中心微服务功能设计
什么是 JWT
JWT、会话、少量信息交换
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记

JWT 的结构(组成部分)
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记

授权、鉴权功能设计
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记

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

SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记
SpringCloud微服务架构学习笔记 _ JavaClub全栈架构师技术笔记

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

作者:Redamancy_C
来源链接:https://blog.csdn.net/weixin_44181671/article/details/122490552


版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/server/69291.html

分享给朋友: