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.
相关推荐
智慧物业老杨6 小时前
物业日常巡查的数智化重构:从“打卡式巡检“到“闭环式风控“
android·java·人工智能·系统架构·rxjava
步行cgn12 小时前
Spring c 命名空间注入详解
java·后端·spring
明月_清风13 小时前
Maven 到底是什么?一篇文章搞懂 Java 项目构建与依赖管理
java·后端·maven
aramae13 小时前
MySQL复合查询(8)
java·c语言·开发语言·后端·算法
Rain的Java大神之路14 小时前
如何快速上传10G文件
java·spring boot·redis·后端·mysql·spring cloud·面试
Wang's Blog14 小时前
Java 接入Redis: 通用命令与键管理
java·服务器·redis
Wang's Blog14 小时前
Java 接入Redis: 列表集合与有序集合操作命令
java·服务器·redis
Ivanqhz15 小时前
SVD++算法
java·服务器·网络·深度学习·神经网络
qq_25183645715 小时前
springboot vue3 开发实现 拼豆管理系统
java·开发语言·ai编程
caoerzhong16 小时前
JeeWMS 开源仓库管理系统全景解读:一套 Java WMS 如何把 WMS/OMS/BMS/TMS 装进同一个系统
java·开源