![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SpingCloud
文章平均质量分 82
无奈的码农
坚持学习新技术
展开
-
Spring Cloud Sentinel实战(六)-Sentinel流控效果-预热
该方式主要用于系统长期处于低水位的情况下,当流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮。通过"冷启动",让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,给冷系统一个预热的时间,避免冷系统被压垮的情况。 默认coldFactor为3,当发起请求即请求QPS从(阈值/3)开始,经过多长预热时长才逐步升至设定的QPS阈值,当前阈值设置为10,预热时长设置为5秒。 最终的效果,系统初始化时阈值/3约等于3,即阈值在此时为3,经过5秒后阈值才慢慢升高到10。原创 2023-03-28 23:01:34 · 433 阅读 · 0 评论 -
Spring Cloud Sentinel实战(五)-Sentinel流控规则-链路
比如在一个微服务中,两个接口都调用了同一个Service中的方法,并且该方法用SentinelResource(用于定义资源)注解标注了,然后对该注解标注的资源(方法)进行配置,则可以选择链路模式。 链路流控模式指的是,当从某个接口过来的资源达到限流条件时,开启限流,它的功能有点类似于针对来源配置项,区别在于:针对来源是针对上级微服务,而链路流控是针对上级接口,也就是说它的粒度更细。不需要在设置web-context-unify。然后更改接口调用这个Service方法。原创 2023-03-28 23:01:01 · 256 阅读 · 0 评论 -
Spring Cloud Sentinel实战(三)- Sentinel流控规则
Sentinel流量控制规则原创 2023-03-28 22:51:50 · 241 阅读 · 0 评论 -
Spring Cloud Sentinel实战(二)- Sentinel初始化监控
Sentinel初始化监控,请求接口,页面进行查看请求数据原创 2023-02-28 08:00:00 · 309 阅读 · 1 评论 -
Spring Cloud Sentinel实战(一)- Sentinel介绍
随着微服务的普及,服务调用的稳定性变得越来越重要。以“流量”为切入点,在流量控制、断路、负载保护等多个领域开展工作,保障服务可靠性。特点:1.2.:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。3.:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。4.原创 2023-02-27 08:00:00 · 718 阅读 · 2 评论 -
Apollo(阿波罗)分布式配置安装详解
Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。application (应用)environment (环境)cluster (集群)namespace (命名空间)同时,Apollo基于开源模式开发,开源地址:https://github.com/ctripcorp/apollo【本节内容仅对应用需要对不同集群应用不同配置才需要,如没有相关需求,可以跳过本节】原创 2023-02-26 07:00:00 · 1713 阅读 · 5 评论 -
Spring Cloud Nacos源码讲解(十)- Nacos服务端服务发现处理
当我们有服务进行注册以后,会写入注册信息同时会触发事件,通过这个事件,就会开始进行Nacos的集群数据同步,当然这其中只有有一个Nacos节点来处理对应的客户端请求,其实这其中还涉及到一个和。原创 2023-02-25 19:34:56 · 789 阅读 · 0 评论 -
Spring Cloud Nacos源码讲解(九)- Nacos客户端本地缓存及故障转移
ServiceInfoHolder类,顾名思义,服务信息的持有者。每次客户端从注册中心获取新的服务信息时都会调用该类,其中processServiceInfo方法来进行本地化处理,包括更新缓存服务、发布事件、更新本地文件等。 除了这些核心功能以外,该类在实例化的时候,还做了本地缓存目录初始化、故障转移初始化等操作,下面我们来分析。原创 2023-02-25 19:34:47 · 1698 阅读 · 1 评论 -
Spring Cloud Nacos源码讲解(八)- Nacos客户端服务订阅的事件机制剖析
整体服务订阅的事件机制还是比较复杂的,因为用到了事件的形式,逻辑比较绕,并且其中还有守护线程,死循环,阻塞队列等。 需要重点理解NotifyCenter对事件发布者、事件订阅者和事件之间关系的维护,而这一关系的维护的入口就位于NacosNamingService的init方法当中。原创 2023-02-25 19:33:13 · 1167 阅读 · 0 评论 -
Spring Cloud Nacos源码讲解(七)- Nacos客户端服务订阅机制的核心流程
Nacos的订阅机制,如果用一句话来描述就是:Nacos客户端通过一个定时任务,每6秒从注册中心获取实例列表,当发现实例发生变化时,发布变更事件,订阅者进行业务处理(更新实例,更改本地缓存)。 以下是订阅方法的主线流程,涉及内容比较多,细节比较复杂,所以这里我们主要学习核心部分。订阅方法的调用,并进行EventListener的注册,后面UpdateTask要用来进行判断;通过委托代理类来处理订阅逻辑,此处与获取实例列表方法使用了同一个方法;原创 2023-02-25 19:32:55 · 986 阅读 · 0 评论 -
Spring Cloud Nacos源码讲解(六)- Nacos客户端服务发现
首先我们先通过一个图来直观的看一下,Nacos客户端的服务发现,其实就是封装参数、调用服务接口、获得返回实例列表。 但是如果我们要是细化这个流程,会发现不仅包括了通过NamingService获取服务列表,在获取服务列表的过程中还涉及到通信流程协议(Http or gPRC)、订阅流程、故障转移流程等。下面我们来详细的捋一捋。 在这里我们主要要关注getAllInstances方法,那我们就需要看一下这个方法的具体操作,当然这其中需要经过一系列的重载方法调用。原创 2023-02-24 08:16:18 · 436 阅读 · 0 评论 -
Spring Cloud Nacos源码讲解(五)- Nacos服务端健康检查
概念:长连接,指在一个连接上可以连续发送多个,在连接保持期间,如果没有数据包发送,需要双方发链路检测包注册中心客户端2.0之后使用gRPC代替http,会与服务端建立长连接,但仍然保留了对旧http客户端的支持。接口负责底层通讯,调用服务端接口。以客户端为例,代理了registerService方法。NamingClientProxyDelegate会。 临时instance:gRPC 持久instance:http。原创 2023-02-24 08:17:29 · 760 阅读 · 0 评论 -
Spring Cloud Nacos源码讲解(四)- Nacos服务端服务注册源码分析
负责存储当前客户端的服务注册表,即Service与Instance的关系。原创 2023-02-23 07:56:43 · 472 阅读 · 1 评论 -
Spring Cloud Nacos源码讲解(三)- Nacos客户端实例注册源码分析
流程图:在引入这个依赖以后,我们要找到SpringBoot自动装配文件META-INF/spring.factories文件。原创 2023-02-23 07:56:21 · 382 阅读 · 1 评论 -
Spring Cloud Nacos源码讲解(二)- Nacos客户端服务注册源码分析
我们从Nacos-Client开始说起,那么说到客户端就涉及到服务注册,我们先了解一下Nacos客户端都会将什么信息传递给服务器,我们直接从Nacos Client项目的NamingTest说起 其实这就是客户端注册的一个测试类,它模仿了一个真实的服务注册进Nacos的过程,包括NacosServer连接、实例的创建、实例属性的赋值、注册实例,所以在这个其中包含了服务注册的核心代码,仅从此处的代码分析,可以看出,Nacos注册服务实例时,包含了两大类信息:Nacos Server连接信息和实例信息。原创 2023-02-22 09:20:38 · 870 阅读 · 1 评论 -
Spring Cloud Nacos源码讲解(一)- Nacos源码分析开篇
Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如ip地址、端口等信息。Nacos Server接收到注册请求后,就会把这些元数据信息存储在一个双层的内存Map中。:在服务注册后,Nacos Client会维护一个定时心跳来持续通知Nacos Server,说明服务一直处于可用状态,防止被剔除。默认5s发送一次心跳。原创 2023-02-22 09:19:20 · 721 阅读 · 0 评论 -
Spring Cloud Alibaba从搭建到源码完整进阶教程
文章中包括了微服务中用到的组件使用,以及源码整理,包括Nacos注册中心配置中心, Seata 分布式事务,OpenFeign接口调用,Sentinel 流量控制,GateWay网关等一些组件原创 2023-02-19 16:15:23 · 2078 阅读 · 50 评论 -
Spring Cloud Nacos实战(八) - Nacos集群配置
我们现在知道,想要启动Naocs只需要启动startup.sh命令即可,但是如果启动3个Nacos那?所以如果我们需要启动多个Nacos,其实Nacos本身默认启动就是集群模式。注意点:如果是linux虚拟机,需要分配至少4g以上内存这里的修改和我们之间的在win上的修改是完全一样的,所以我们只要打开这个文件,加上对应的内容即可还要注意一点,这个文件中的两个服务的端口号也要对应修改Linux服务器上Nacos的集群配置cluter.conf这里开始正式配置集群,首先我们要更改clut原创 2023-02-19 16:08:08 · 704 阅读 · 1 评论 -
Spring Cloud Nacos实战(七)- Nacos之Linux版本安装
已经给大家讲解过了Nacos生产环境下需要搭建集群配置,那么这里我们预计需要:1个Nginx+3个Nacos注册中心+1个MySql。原创 2023-02-19 16:07:36 · 194 阅读 · 1 评论 -
Spring Cloud Nacos实战(六)- 集群架构说明与持久化配置切换
重启Nacos服务,此时之前所创建的Namespace+Group+DataID将全部消失,因为这些数据是保存在之前Nacos内嵌的derby数据库中,现在使用的是本地的MySql数据库,此时我们可以添加配置测试,在查看数据库nacos_config中的config_info表,此时就会有新添加的配置内容。 到目前为止,我们已经对Nacos的一些基本使用和配置已经掌握,但是这些还不够,我们还需要了解一个非常重要的点,就是Nacos的集群相关的操作,那我们就先从Nacos集群配置的概念说起。原创 2023-02-19 16:05:29 · 502 阅读 · 0 评论 -
Spring Cloud Nacos实战(五)- 命名空间分组和DataID三者关系
用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。(Group) Nacos 中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串(如 Buy 或 Trade )对配置集进行分组,从而区分 Data ID 相同的配置集。原创 2023-02-19 15:42:41 · 618 阅读 · 0 评论 -
Spring Cloud Nacos实战(四)- 服务配置中心
Nacos不仅仅可以作为注册中心来使用,同时它支持作为配置中心首先我们还是新建Model:cloudalibaba-config-3377。原创 2023-02-19 15:33:41 · 411 阅读 · 1 评论 -
Spring Cloud Nacos实战(三)- 服务消费者注册和负载均衡,服务注册中心对比
它是一个基于HTTP和TCP客户端负载均衡器。它虽然只是一个工具类库,它却是每一个微服务的基础设施。因为实际上,对于服务间调用、API网关请求转发都需要经过Ribbon负载均衡来实现。总体来说,Ribbon的主要作用是:从注册服务器端拿到对应服务列表后以负载均衡的方式访问对应服务。 要注意的是Nacos已经整合了Ribbon,所以我们想要使用只需要导入Spring Cloud Alibaba Nacos的依赖就可以直接使用了。。原创 2023-02-19 15:28:48 · 460 阅读 · 2 评论 -
Spring Cloud Nacos实战(二)- 服务提供者注册
Nacos可以直接提供注册中心(Eureka)+配置中心(Config),所以它的好处显而易见,我们在上节课成功安装和启动了Nacos以后就可以发现Nacos本身就是一个小平台,它要比之前的Eureka更加方便,不需要我们在自己做配置。原创 2023-02-19 15:23:18 · 457 阅读 · 0 评论 -
Spring Cloud Nacos实战(一)- 下载和安装
Nacos(Naming Configuration Service) 是一个易于使用的动态服务发现、配置和服务管理平台,用于构建云原生应用程序 服务发现是微服务架构中的关键组件之一。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。Nacos原创 2023-02-19 15:17:29 · 337 阅读 · 0 评论 -
Spring Cloud Alibaba 微服务简介
Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。原创 2023-02-19 15:10:52 · 493 阅读 · 0 评论 -
Seata源码学习(五)- Seata服务端(TC)源码解读
我们已经分析到了SQL语句最终的执行器,但是再往下分析之前,我们需要先来分析一下TM客户端与TC端通讯以后,TC端的具体操作。原创 2023-02-15 08:07:51 · 1253 阅读 · 2 评论 -
Seata源码学习(四)-数据源代理
在这个抽象连接对象中,定义了很多通用的逻辑,所以在这其中我们要关注的主要在于PreparedStatementProxy和StatementProxy,其实这里的通用逻辑就是数据源连接的步骤,获取连接,创建执行对象等等这些//调用真实连接对象获得Statement对象 Statement targetStatement = getTargetConnection() . createStatement();原创 2023-02-15 08:07:33 · 963 阅读 · 0 评论 -
Seata源码学习(三)-2PC核心源码解读
上节课我们分析到了GlobalTransactionalInterceptor全局事务拦截器,一旦执行拦截器,我们就会进入到其中的invoke方法,在这其中会做一些@GlobalTransactional注解的判断,如果有注解以后,会执行全局事务和全局锁,那么在执行全局事务的时候会调用handleGlobalTransaction全局事务处理器,这里主要是获取事务信息在这其中,我们要关注一个重点方法execute()这个位置是非常核心的一个位置,因为我们所有的业务进来以后都会走这个位置。原创 2023-02-15 08:07:14 · 374 阅读 · 0 评论 -
Seata源码学习(二)-源码入口
在这个其中,就会涉及到几个核心的类型,首先我们需要来看配置类型GlobalTransactionAutoConfiguration所以我们直接通过官方案例引入的Seata包,找到SpringBoot项目在启动的时候自动扫描加载类型的spring.factories,然后找到GlobalTransactionAutoConfiguration(Seata自动配置类)原创 2023-02-14 21:04:18 · 585 阅读 · 1 评论 -
Seata 源码学习 (一) - 下载源码
我们学习了Seata的应用以后,我们从这节课开始要开始分析Seata的源码相关内容。原创 2023-02-14 21:02:23 · 463 阅读 · 0 评论 -
Seata-Server分布式事务原理加源码 (九) - Seata中的Saga事务模式
Saga模式是SEATA提供的长事务解决方案,在Saga模式中,业务流程中每个参与者都提交本地事务,当出现某一个参与者失败则补偿前面已经成功的参与者,一阶段正向服务和二阶段补偿服务(执行处理时候出错了,给一个修复的机会)都由业务开发实现。Saga 模式下分布式事务通常是由事件驱动的,各个参与者之间是异步执行的,Saga 模式是一种长事务解决方案。原创 2023-02-14 18:59:08 · 253 阅读 · 0 评论 -
Seata-Server分布式事务原理加源码 (八) - Seata-XA模式
XA 规范 是 X/Open 组织定义的分布式事务处理(DTP,Distributed Transaction Processing)标准XA 规范 描述了全局的事务管理器与局部的资源管理器之间的接口。XA规范 的目的是允许的多个资源(如数据库,应用服务器,消息队列等)在同一事务中访问,这样可以使 ACID 属性跨越应用程序而保持有效。XA 规范 使用两阶段提交(2PC,Two-Phase Commit)来保证所有资源同时提交或回滚任何特定的事务。XA 规范 在上世纪 90 年代初就被提出。原创 2023-02-14 18:57:55 · 470 阅读 · 0 评论 -
Seata-Server分布式事务原理加源码 (七) - TCC事务模式
Try:对业务资源的检查并预留;Confirm:对业务处理进行提交,即 commit 操作,只要 Try 成功,那么该步骤一定成功;Cancel:对业务处理进行取消,即回滚操作,该步骤回对 Try 预留的资源进行释放。原创 2023-02-14 18:53:40 · 209 阅读 · 0 评论 -
Seata-Server分布式事务原理加源码 (六) - Seata的AT模式
概念:AT模式是一种无侵入的分布式事务解决方案,在 AT 模式下,用户只需关注自己的“业务 SQL”,用户的 “业务 SQL” 作为一阶段,Seata 框架会自动生成事务的二阶段提交和回滚操作。原创 2023-02-14 18:50:34 · 262 阅读 · 0 评论 -
Seata-Server分布式事务原理加源码 (五) - Seata配置Nacos注册中心和配置中心
Seata支持注册服务到Nacos,以及支持Seata所有配置放到Nacos配置中心,在Nacos中统一维护;高可用模式下就需要配合Nacos来完成[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5vFIJcTr-1676371405632)(image-20220118234555417.png)]原创 2023-02-14 18:44:27 · 332 阅读 · 0 评论 -
Seata-Server分布式事务原理加源码 (四)- Seata事务日志储存方式DB
找到以下对应的db配置,要修改其中的jdbc连接,以及要注意其中涉及到了三个表,分别是global_table,branch_table,lock_table分别是全局事务会话表,分支事务会话表,锁数据表;原创 2023-02-14 18:44:17 · 431 阅读 · 0 评论 -
Seata-Server分布式事务原理加源码 (三)- 下载/安装/配置
启动Seata-Server的方式非常简单,直接双击此文件即可:seata-server-1.4.2\bin\seata-server.bat。官方下载地址:https://github.com/seata/seata/releases。启动步骤为,先启动nacos然后在启动Seata-Server。然后在nacos控制台上就可以看到Seata-Server。下载完成之后需要解压。原创 2023-02-14 18:39:36 · 297 阅读 · 1 评论 -
Seata-Server分布式事务原理加源码(二) - 分布式事务解决方案
官网:https://seata.io/zh-cn/docs/overview/what-is-seata.html概念:Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。仓储服务:对给定的商品进行增删操作记录数量订单服务:根据采购者的需求创建订单账户服务:从用户账户中扣除余额、积分等。原创 2023-02-14 18:32:20 · 234 阅读 · 1 评论 -
Seata-Server分布式事务原理加源码(一) - 微服务之分布式事务原理
基础概念:事务ACID• A(Atomic):原子性,构成事务的所有操作,要么都执行完成,要么全部不执行,不可能出现部分成功部分失 败的情况。• C(Consistency):一致性,在事务执行前后,数据库的一致性约束没有被破坏。比如:张三向李四转100元, 转账前和转账后的数据是正确状态这叫一致性,如果出现张三转出100元,李四账户没有增加100元这就出现了数 据错误,就没有达到一致性。原创 2023-02-07 21:56:43 · 1292 阅读 · 36 评论