![](https://i-blog.csdnimg.cn/direct/2ba227f3aeca4cc5bb1b6c5f6d4c438c.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spring Cloud Alibaba
Spring Cloud Alibaba
morris131
这个作者很懒,什么都没留下…
展开
-
【Nacos】Nacos配置中心的使用与SpringCloud整合
官方文档: https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-configNacos提供用于存储配置和其他元数据的key/value存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用Spring Cloud Alibaba Nacos Config组件,您可以在Nacos Server集中管理你Spring Cloud应用的外部属性配置。用于进行租户粒度的配置隔离。原创 2023-01-13 14:17:53 · 33837 阅读 · 2 评论 -
【Nacos】源码之服务端服务注册
Nacos客户端在启动时以及定时任务会发送Http请求,调用Nacos服务端接口/nacos/v1/ns/instance进行服务注册。我们根据url找到Nacos服务端服务注册的源码入口:InstanceController#register将请求封装为Instance,注意serviceName使用@@分隔组名和服务名,如DEFAULT_GROUP@@user,存入注册表中的serviceName也是包含组名的。com.alibaba.nacos.naming.controllers.Instanc原创 2022-12-05 15:16:49 · 11425 阅读 · 0 评论 -
【Nacos】@RefreshScope注解的使用与原理
Value注解可以在项目启动时获取到配置中心的值,但是如果在Nacos配置中心后台修改了值,此时项目是无法动态感知修改后的值,需要利用@RefreshScope注解来实现动态感知。原创 2023-01-30 21:30:00 · 14520 阅读 · 1 评论 -
【Nacos】Nacos注册中心的使用
版本说明:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E由于Spring Boot 2.4+和以下版本之间变化较大,目前企业级客户老项目相关Spring Boot版本仍停留在Spring Boot 2.4以下,为了同时满足存量用户和新用户不同需求,社区以Spring Boot 2.4为分界线,同时维护2.2.x和2021.x两个分支迭代。原创 2022-10-24 11:57:09 · 32645 阅读 · 0 评论 -
【Nacos】Nacos配置中心客户端配置更新源码分析
上文我们说了服务启动的时候从远程Nacos服务端拉取配置,这节我们来说下Nacos服务端配置的变动怎么实时通知到客户端,首先需要注册监听器。原创 2023-02-10 21:13:24 · 2038 阅读 · 0 评论 -
【Nacos】源码之服务端AP架构集群节点数据的同步
当Nacos集群部署时,临时实例数据在集群之间是如何进行同步的?Nacos针对临时实例数据在集群之间的同步开发了Distro一致性协议,Distro一致性协议是弱一致性协议,用来保证Nacos注册中心的可用性,当临时实例注册到Nacos注册中心时,集群的实例数据并不是一致的,当通过Distro协议同步之后才最终达到一致性,所以Distro协议保证了Nacos注册中心的AP(可用性)。原创 2023-01-09 15:15:01 · 32302 阅读 · 1 评论 -
【Nacos】源码之客户端注册服务
接下来阅读SpringBoot项目启动时Nacos客户端将自己这个实例注册到Nacos服务端的流程。原创 2022-10-25 14:28:26 · 37628 阅读 · 2 评论 -
【Nacos】源码之服务端AP架构集群节点的心跳检测
当Nacos服务端启动时怎么知道集群中有哪些节点?当新的节点加入集群或者集群中有节点下线了,集群之间可以通过健康检查发现。健康检查的频率是怎么样的?节点的状态又是如何变动的?状态的变动又会触发什么动作。在配置集群时,会在配置文件cluster.conf中指定集群中各个节点的IP和端口,Nacos服务端启动时会读取这个配置文件并解析,下面来看看这个解析过程。com.alibaba.nacos.core.cluster.ServerMemberManager#ServerMemberManagerServer原创 2022-12-20 15:56:42 · 31591 阅读 · 0 评论 -
【Nacos】源码之客户端服务发现
所谓服务发现就是指客户端从注册中心获取记录在注册中心中的服务信息。接下来阅读SpringBoot项目启动时Nacos客户端如何实现服务发现。原创 2022-11-09 16:28:44 · 1814 阅读 · 0 评论 -
【Nacos】Nacos配置中心服务端源码分析
上文说了Nacos配置中心客户端的源码流程,这篇介绍下Nacos配置中心服务端的源码。原创 2023-02-10 21:15:18 · 17340 阅读 · 0 评论 -
【Nacos】@NacosValue的使用与原理
在SpringCloud工程中,可以使用@RefreshScope+@Value实现配置文件内容变更后的动态刷新。在SpringBoot工程中,可以使用@NacosValue来实现配置文件内容变更后的动态刷新。原创 2023-02-28 20:00:00 · 24148 阅读 · 0 评论 -
【nacos】源码之服务端服务健康检查与服务查询
Nacos服务端在实例进行注册时,会在服务初始化的时候开启一个客户端心跳检测任务ClientBeatCheckTask。原创 2022-12-09 09:57:39 · 12923 阅读 · 0 评论 -
【Nacos】Nacos配置中心客户端启动源码分析
SpringCloud项目启动过程中会解析bootstrop.properties、bootstrap.yaml配置文件,启动父容器,在子容器启动过程中会加入PropertySourceBootstrapConfiguration来读取配置中心的配置。原创 2023-02-10 21:11:50 · 1685 阅读 · 0 评论 -
【sentinel】系统规则详解及源码分析
Sentinel系统自适应保护从整体维度对应用入口流量进行控制,结合应用的Load、总体平均RT、入口QPS和线程数等几个维度的监控指标,让系统的入口流量和系统的负载达到一个平衡,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。原创 2023-03-25 11:16:11 · 12246 阅读 · 0 评论 -
【sentinel】授权规则详解及源码分析
之前我们在配置流控规则时,可以根据origin参数来对调用方进行限流。很多时候,我们需要根据调用方来限制资源是否通过,这时候可以使用Sentinel的黑白名单控制的功能,这就是。黑白名单也是根据资源的请求来源(origin)限制资源是否通过,若配置白名单则只有请求来源位于白名单内时才可通过;若配置黑名单则请求来源位于黑名单时不通过,其余的请求通过。调用方信息通过方法中的origin参数传入。原创 2023-05-13 18:20:55 · 1070 阅读 · 0 评论 -
【sentinel】Sentinel工作主流程及流控规则源码分析
在Sentinel里面,所有的资源都对应一个资源名称(resourceName),每次资源调用都会创建一个Entry对象。Entry可以通过对主流框架的适配自动创建,也可以通过注解的方式或调用SphU API显式创建。Sentinel将ProcessorSlot作为SPI接口进行扩展,使得SlotChain具备了扩展的能力。您可以自行加入自定义的slot并编排 slot间的顺序,从而可以给Sentinel添加自定义的功能。原创 2023-05-20 09:50:27 · 3809 阅读 · 1 评论 -
【sentinel】Sentinel规则的持久化
SentinelProperties内部提供了TreeMap类型的datasource属性用于配置数据源信息。break;break;break;break;break;break;break;} }原创 2023-06-14 14:18:17 · 14896 阅读 · 0 评论 -
【sentinel】sentinel客户端与dashboard通讯源码分析
Sentinel客户端的规则大部分都是在Dashboard上完成配置,那么Sentinel客户端与Dashboard之间是如何进行通讯的呢?原创 2023-06-14 14:18:26 · 11650 阅读 · 0 评论 -
【sentinel】热点规则详解及源码分析
何为热点?热点即经常访问的数据。很多时候我们希望统计某些热点数据中访问频次最高的Top K数据,并对其访问进行限制。热点参数限流会统计传入参数中的热点参数,并根据配置的限流阈值与模式,对包含热点参数的资源调用进行限流。热点参数限流可以看做是一种特殊的流量控制,仅对包含热点参数的资源调用生效。Sentinel利用LRU策略统计最近最常访问的热点参数,结合令牌桶算法来进行参数级别的流控。原创 2023-05-13 18:12:30 · 1229 阅读 · 0 评论 -
【sentinel】流控规则详解
流量控制规则,简称流控规则,会对资源的流量进行限制。同一个资源可以对应多条限流规则。Sentinel会对该资源的所有限流规则依次遍历,直到有规则触发限流或者所有规则遍历完毕。限流的直接表现是抛出FlowException异常。FlowException是BlockException的子类,您可以捕捉BlockException来自定义被限流之后的处理逻辑。原创 2023-03-25 10:09:08 · 13567 阅读 · 0 评论 -
【sentinel】Sentinel与其他框架的适配
Sentinel提供Apache HttpClient的适配模块sentinel-apache-httpclient-adapter,可以针对HTTP client请求进行流控和熔断。使用时需引入以下模块(以Maven为例):原创 2023-06-28 14:07:15 · 23487 阅读 · 0 评论 -
【sentinel】漏桶算法在Sentinel中的应用
漏桶算法,又称leaky bucket。从图中我们可以看到,整个算法其实十分简单。首先,我们有一个固定容量的桶,有水流进来,也有水流出去。对于流进来的水来说,我们无法预计一共有多少水会流进来,也无法预计水流的速度。但是对于流出去的水来说,这个桶可以固定水流出的速率。而且,当桶满了之后,多余的水将会溢出。我们将算法中的水换成实际应用中的请求,我们可以看到漏桶算法天生就限制了请求的速度。当使用了漏桶算法,我们可以保证接口会以一个常速速率来处理请求。所以漏桶算法天生不会出现临界问题。原创 2023-06-04 21:04:38 · 1109 阅读 · 0 评论 -
【sentinel】滑动时间窗口算法在Sentinel中的应用
上面会出现突刺的问题其实就在于固定窗口算法的窗口时间跨度太大,且是固定不变的,为了解决突刺的问题,我们就有了滑动窗口计数器限流算法。划分多个小的时间段,各时间段各自进行计数。根据当前时间,动态往前滑动来计算时间窗口范围,合并计算总数。可以看到,每次时间往后,窗口也会动态往后滑动,从而丢弃一些更早期的计数数据,从而实现总体计数的平稳过度。当滑动窗口划分的格子越多,那么滑动窗口的滑动就越平滑,限流的统计就会越精确。事实上,固定窗口算法就是只划分成一个格子的滑动窗口算法。原创 2023-06-04 21:03:07 · 956 阅读 · 0 评论 -
【sentinel】熔断降级规则详解及源码分析
entry()方法实际上调用了AbstractCircuitBreaker.tryPass()方法,这里只做了一个处理,如果断路器开启,但是上一个请求距离现在已经过了重试间隔时间就开启半启动状态。// 关闭状态,返回true,让请求通过 return true;原创 2023-03-25 11:11:03 · 12324 阅读 · 0 评论 -
【sentinel】Sentinel的介绍与使用
这是分布式、微服务开发不可避免的问题。原创 2023-03-01 20:00:00 · 17437 阅读 · 0 评论 -
【sentinel】令牌桶算法在Sentinel中的应用
令牌桶算法,又称token bucket。从图中我们可以看到,令牌桶算法比漏桶算法稍显复杂。首先,我们有一个固定容量的桶,桶里存放着令牌(token)。桶一开始是空的,token以一个固定的速率r往桶里填充,直到达到桶的容量,多余的令牌将会被丢弃。每当一个请求过来时,就会尝试从桶里移除一个令牌,如果没有令牌的话,请求无法通过。原创 2023-06-14 14:16:15 · 11433 阅读 · 0 评论