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.
相关推荐
毕设源码-朱学姐1 天前
【开题答辩全过程】以 基于JavaWeb的网上家具商城设计与实现为例,包含答辩的问题和答案
java
C雨后彩虹1 天前
CAS与其他并发方案的对比及面试常见问题
java·面试·cas·同步·异步·
java1234_小锋1 天前
Java高频面试题:SpringBoot为什么要禁止循环依赖?
java·开发语言·面试
2501_944525541 天前
Flutter for OpenHarmony 个人理财管理App实战 - 账户详情页面
android·java·开发语言·前端·javascript·flutter
计算机学姐1 天前
基于SpringBoot的电影点评交流平台【协同过滤推荐算法+数据可视化统计】
java·vue.js·spring boot·spring·信息可视化·echarts·推荐算法
Filotimo_1 天前
Tomcat的概念
java·tomcat
踩坑小念1 天前
秒杀场景下如何处理redis扣除状态不一致问题
数据库·redis·分布式·缓存·秒杀
索荣荣1 天前
Java Session 全面指南:原理、应用与实践(含 Spring Boot 实战)
java·spring boot·后端
Amumu121381 天前
Vue Router(二)
java·前端