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

SpringCloud微服务架构学习笔记

2022年11月10日 09:52:32服务端8

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

分享给朋友:

“SpringCloud微服务架构学习笔记” 的相关文章

SpringBoot日志框架

SpringBoot日志框架

概述项目中日志系统是必不可少的的。 目前比较流行的日志框架有log4j、logback等 。可能大家还不知道,这两个框架的作者是同一个人,Logback旨在作为流行的log4j项目的后续版本,从而恢复log4j离开的位置。另外 slf4j(Simple Logging Facade for Java...

SpringCloud简单实例

SpringCloud简单实例

SpringCloud简单实例 SpringCloud是基于SpringBoot,需要先了解SpringBoot的相关知识。 这里只是一个非常简单的包含注册表、服务提供者、服务消费者三者的例子。 源码见: https://github....

Spring Cloud Alibaba与Spring Boot、Spring Cloud版本对应关系

Spring Cloud Alibaba与Spring Boot、Spring Cloud版本对应关系

一、前言 在搭建SpringCloud项目环境架构的时候,需要选择SpringBoot和SpringCloud进行兼容的版本号,因此对于选择SpringBoot版本与SpringCloud版本的对应关系很重要,如果版本关系不对应,常见的会遇见项目启...

Spring Boot 之 RESRful API 权限控制

Spring Boot 之 RESRful API 权限控制

摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “简单,踏实~ 读书写字放屁” 一、为何用RESTful API 1.1 RESTful是什么? RESTful(Representational...

SpringBoot整合 mybatisPlus

SpringBoot整合 mybatisPlus

引言 最近在准备一期SpringBoot整合大全系列文章,同时也会有视频放出(视频还在酝酿中),如果大家觉得有帮助,记得点赞加收藏哦。 话不多说,咱们直接进入正题。 ​ 代码已经上传到码云:https://gitee.com/lezaiclu...

SpringCloud实战|8.SpringCloud 整合 seata1.3

SpringCloud实战|8.SpringCloud 整合 seata1.3

手把手教你从0开始搭建spring cloud alibaba 脚手架,关注公众号“AI码师” 获取项目完整源码 前言 本篇文章介绍了如何在Spring Cloud项目中引入seata,以及seata的安装过程 开整...

SpringBoot 整合MybatisPlus 实现字段自动注入

SpringBoot 整合MybatisPlus 实现字段自动注入

最近在整合MybatisPlus,发现mybatisPlus有很多有趣并且有用的功能,今天给大家分享一个:如何使用MybatisPlus实现数据库字段自动填充的功能。 前言 在我们日常开发中,我们经常会为每个表设置一个创建时间、更新时间或者创...

springboot 日志框架

springboot 日志框架

  一:市面上的日志框架: JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j.... 左边是日志门面(抽象层)、右边是日志的实现: 日志门面(日志抽象层)...

SpringBoot(三) -- SpringBoot与日志

SpringBoot(三) -- SpringBoot与日志

一.日志的起源  现在假设一个开发人员在开发一个大型系统,由于这个系统过于庞大没在很多的地方将关键的数据使用System.out.println()打印,但是当我们在项目正式上线时又需要去除,在项目bug修复时又需要重新打印,那么我们是不是可以将这些实用的输出信息保存到一个文件中.我们...

Spring Boot 和 Spring Cloud 应用内存如何管理?

Spring Boot 和 Spring Cloud 应用内存如何管理?

在整体应用架构中,非生产环境情况下,一般 1GB 或者 2GB 的 RAM 就足够了。如果我们将这个应用程序划分为 20 或 30 个独立的微服务,那么很难期望 RAM 仍将保持在 1GB 或 2GB 左右。特别是如果我们使用 Spring Cl...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。