Java常见技术分享-分布式篇-SpringCloud-01-基础组件

SpringCloud 的基础概念

SpringCloud 是基于SpringBoot开发的微服务框架, 专注于让开发者更方便的搭建分布式服务。

微服务框架核心元素

  • 服务注册发现
    • 简单的说 其实就是服务通讯录, 当你作为其中一个服务要给其他只知道名称的服务通信的时候, 去通讯录里边查询一下这个名称服务对应的具体通信所需的信息,比如内部网络IP,不用记死地址。
    • SpringCloud 里负责这一块的组件 如 Nacos
  • 配置中心
    • 统一管理所有服务的配置 一般来说 服务部署时读取配置的 优先级 配置中心的配置 优先于 本地的配置。
    • SpringCloud 里负责这一块的组件 同样是Nacos
  • 服务调用
    • 虽然说已经有了通讯录, 但是 每次调用的时候 假如没有服务调用的组件, 那么你就得 自己根据服务的名称去nacos获取 服务通信信息, 根据调用的方法构造对应的Https 调用。 但是有了服务调用组件, 你直接调用对应的服务的方法就行了, 加个注解 , 就能像调用本地方法一样 调用其他服务的方法。
    • SpringCloud 里负责这一块的组件 OpenFeign
  • 网关
    • 内部服务互相调用解决了, 但是 外部服务 怎么调用系统的功能呢? 不可能单独调用一个微服务用一个新的域名 顶多 path不同, 所以根据path 把请求分发给对应的微服务处理 ,变成了至关重要的事, 而网关就是解决这个问题的, 所有来自外部的请求都会先经过网关处理,不仅是分发请求, 同时要进行安全检查,日志记录,对请求进行筛选等。
    • SpringCloud 里负责这块的组件是 Gateway
  • 服务容错
    • 现在服务之间的调用算是打通了, 此时 假如某个微服务挂了, 或者 处理比较慢, 其他微服务由于链式调用都在等待这个微服务, 对应的资源一直得不到释放, 全都卡死, 或者 调用某个接口太频繁导致服务器 负载过高, 整体性能降低, 此时需要给 这个微服务调用 进行 限流 或者熔断。 监控服务状态。
    • SpringCloud 里负责这块的组件是 Sentinel
  • 链路追踪
    • 主要是为了排查问题, 毕竟一个请求涉及到多个微服务, 出问题了, 得排查看是哪一块出现了问题。 或者是耗时记录。
    • 一般这块用的是Skywalking, 是独立的开源的链路追踪工具,能够集成到SpringCloud里头。
  • 分布式事务
    • 多个微服务都在操作数据库, 如果服务部署在k8s上,属于不同的容器, Spring的事务管理只能保证单个进程的事务ACID, 但是多个微服务 一个链式的调用, 确保一起整体分布式事务的ACID 就成了问题。
    • SpringCloud里负责这块的是Seata.
相关推荐
雨中飘荡的记忆15 小时前
ElasticJob分布式调度从入门到实战
java·后端
考虑考虑1 天前
JDK25模块导入声明
java·后端·java ee
_小马快跑_1 天前
Java 的 8 大基本数据类型:为何是不可或缺的设计?
java
Re_zero1 天前
线上日志被清空?这段仅10行的 IO 代码里竟然藏着3个毒瘤
java·后端
洋洋技术笔记1 天前
Spring Boot条件注解详解
java·spring boot
程序员清风2 天前
程序员兼职必看:靠谱软件外包平台挑选指南与避坑清单!
java·后端·面试
皮皮林5512 天前
利用闲置 Mac 从零部署 OpenClaw 教程 !
java
华仔啊2 天前
挖到了 1 个 Java 小特性:var,用完就回不去了
java·后端
SimonKing2 天前
SpringBoot整合秘笈:让Mybatis用上Calcite,实现统一SQL查询
java·后端·程序员
日月云棠3 天前
各版本JDK对比:JDK 25 特性详解
java