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 分钟前
Cursor配置Java环境、创建Spring Boot项目的步骤
java·开发语言·spring boot
摇滚侠19 分钟前
Java 零基础全套教程,类的加载过程与类加载器的理解,笔记 189
java·后端·intellij-idea
洛水水28 分钟前
消息队列与Kafka详解
分布式·kafka
kong@react40 分钟前
Rocky Linux 10.2 全面解析:企业级 CentOS 替代方案及保姆级docker安装
java·linux·运维·docker
未若君雅裁1 小时前
JVM 运行时数据区:程序计数器、堆、虚拟机栈与栈帧
java·jvm
凡人叶枫1 小时前
Effective C++ 条款10:令 operator= 返回一个 reference to *this
java·linux·服务器·开发语言·c++·effective c++
摇滚侠1 小时前
JavaSE 和 JavaEE 是什么意思
java·java-ee
想带你从多云到转晴1 小时前
03、JAVAEE---多线程(三)
java
满怀冰雪2 小时前
第04篇-双指针算法-从有序数组到回文判断的高频解法
java·算法
matlabgoodboy2 小时前
计算机java程序代写python代码编写c/c++代做qt设计php开发matlab
java·c语言·python