# SpringCloudStudy **Repository Path**: MiddleZqz/spring-cloud-study ## Basic Information - **Project Name**: SpringCloudStudy - **Description**: 跟着b站学习SpringCloud的,记录一些代码和笔记 视频链接是:https://www.bilibili.com/video/BV1jJ411S7xr?spm_id_from=333.337.search-card.all.click - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-06-10 - **Last Updated**: 2022-06-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SpringCloudStudy #### 介绍 跟着b站学习SpringCloud的,记录一些代码和笔记 视频链接是:https://www.bilibili.com/video/BV1jJ411S7xr?spm_id_from=333.337.search-card.all.click #### 个人学习的笔记和一些理解 #### SpringCloud的理解 SpringCloud是建立在SpringBoot之上的,就是很多个SpringBoot服务构建成一个分布式系统模式,SpringCloud为我们提供很多可以一站式解决的服务,在构建微服务的过程中,会需要做到 服务的注册、配置、负载均衡、熔断降级、数据监控等的操作,SpringCloud则可以通过简单的配置来使得轻松实现项目的构建 #### Eureka 服务注册中心 1.总的来说,Eureka就是一个服务发现框架,在学习上,一般会把Eureka称作为注册中心来理解的,注册中心则也是可以看作一个“中介”,在消费者和提供者之间如果直接对话的话那势必效率会变低(资源消耗问题)。 2.服务注册:Register,Eureka客户端向Eureka Server注册时,会提供比如IP地址、端口、运行情况等元数据 3.服务续约:Renew,客户会每隔30秒(默认)来发送一次心跳来续约,如果server 90秒内没有收到客户的续约那就会从其注册表中删除 4.获取注册列表的信息:Fetch Registries,客户端从服务端获取注册表信息,并将其缓存在本地(定期向服务器获取并更新本地列表) 5.服务下线:Cancel 客户端在程序关闭时向服务器发送取消请求,服务器就会将客户端实例信息在实例注册表中删除 6.服务剔除:Eviction 客户端没有向服务器发送服务续约,即心跳 服务器就会将服务实例从服务注册列表删除 #### Ribbon 负载均衡 1.Ribbon是一个运行在消费者端的客户端/进程内负载均衡器,在设计一个系统的时候,为了整个的系统的高可用,系统就要做一个集群,Ribbon的工作原理就是Consumer端获得所有的服务列表之后在其内部使用负载均衡算法,进行对多个系统的调用 2.对比一个我们比较常用的nginx来说,都是负载均衡,但是nginx是一种集中式的负载均衡,它是将所有的请求集中起来,然后再进行负载均衡 3.负载均衡的几种算法 RoundRobinRule:轮询策略(默认) 经过一轮轮询没有找到可用的provider 最多轮询10轮 最终没找到就会返回null RandomRule: 随机策略 RetryRule: 重试策略 上面知识官方提供的算法 如果自定义的话就需要实现IRule接口,然后修改配置文件或者自定义Java Config类 #### Hystrix熔断和降级 Hystrix是一个能进行熔断和降级的库,使用Hystrix能提高整个系统的弹性,在面对服务雪崩的时候能有效的解决方案 熔断:在解决服务雪崩的时候,当指定时间请求的失败率达到设置的值的时候,系统的断路器就会直接将请求的链路断开,熔断指的是Hystrix中的断路器模式,使用@HystrixCommand注解来标注某个方法,每当调用的时间超过指定的时间的时候断路器就会中断对这个方法的调用 降级:降级的意义是当一个方法调用异常的时候,通过执行另一种代码逻辑来个用户友好的回复,这是面向用户层面解决的一种方案,通过设置一个fallbackMethod来个方法设置一个备用的代码逻辑,面对大量的服务导致的系统崩溃,就可以进行服务降级了,将一些请求服务设置为访问太多请稍后再查看等等 #### Zuul网关 Eureka Server 是 服务提供者 的统一入口,消费者需要用户进行调用,Zuul 就是这样的一个对于 消费者 的统一入口。 网关是系统唯一对外的入口,介于客户端与服务器端之间,用于对请求进行鉴权、限流、 路由、监控等功能。 #### Spring Cloud 配置管理——Config