05 2022 档案

摘要:1.网关介绍 什么是网关 在微服务架构中,一个系统会被拆分为多个微服务。那么作为客户端要如何去调用这么多的微服务呢?如果没有网关的存在,我们只能在客户端记录每个微服务的地址,然后分别去调用。这样的话会产生很多问题,例如: 客户端多次请求不同的微服务,增加客户端代码或配置编写的复杂性 认证复杂,每个微 阅读全文
posted @ 2022-05-21 12:14 ZT丶 阅读(253) 评论(0) 推荐(0) 编辑
摘要:1.基本介绍 Apache Skywalking是一款APM工具( Application Performance Management,应用性能管理) 2.安装部署 官网地址:http://skywalking.apache.org/ 下载:http://skywalking.apache.org 阅读全文
posted @ 2022-05-21 12:11 ZT丶 阅读(826) 评论(0) 推荐(0) 编辑
摘要:服务端表解释 我们的Seata服务端在应用的时候需要准备三张表,那么这三张表分别代表的意思就是 branch_table 分支事务表 global_table 全局事务表 lock_table 全局锁表 客户端请求服务端以后,我们就需要把对应的全局事务包括分支事务和全局锁全部存放到这里。 TC服务端 阅读全文
posted @ 2022-05-21 11:06 ZT丶 阅读(320) 评论(0) 推荐(0) 编辑
摘要:AT模式的核心点 获取全局锁、开启全局事务 解析SQL并写入undolog 那么上节课其实我们已经把第一步分析清楚了,那么这节课我们就要分析的是AT模式如何解析SQL并写入undolog,首先我们要先明确实际上Seata其中采用了数据源代理的模式。 那么这个就需要我们在回顾一下GlobalTrans 阅读全文
posted @ 2022-05-21 11:05 ZT丶 阅读(1021) 评论(0) 推荐(0) 编辑
摘要:2PC提交源码流程 GlobalTransactionalInterceptor全局事务拦截器,一旦执行拦截器,我们就会进入到其中的invoke方法,在这其中会做一些@GlobalTransactional注解的判断,如果有注解以后,会执行全局事务和全局锁,那么在执行全局事务的时候会调用handle 阅读全文
posted @ 2022-05-21 11:03 ZT丶 阅读(153) 评论(0) 推荐(0) 编辑
摘要:1.源码下载 官方地址:https://seata.io/zh-cn/blog/download.html 2.AT模式回顾 官方文档:https://seata.io/zh-cn/docs/dev/mode/at-mode.html 写隔离 一阶段本地事务提交前,需要确保先拿到全局锁 。 拿不到全 阅读全文
posted @ 2022-05-21 11:02 ZT丶 阅读(200) 评论(0) 推荐(0) 编辑
摘要:1.基本概念 Saga模式是Seata提供的长事务解决方案,在Saga模式中,业务流程中每个参与者都提交本地事务,当出现某一个参与者失败则补偿前面已经成功的参与者,一阶段正向服务和二阶段补偿服务(执行处理时候出错了,给一个修复的机会)都由业务开发实现。 Saga 模式下分布式事务通常是由事件驱动的, 阅读全文
posted @ 2022-05-21 10:44 ZT丶 阅读(427) 评论(0) 推荐(0) 编辑
摘要:1.什么是TCC TCC是分布式事务中的二阶段提交协议,它的全称为Try-Confirm-Cancel,即资源预留(Try)、确认操作(Confirm)、取消操作(Cancel),他们的具体含义如下: Try:对业务资源的检查并预留 Confirm:对业务处理进行提交,即commit操作,只要Try 阅读全文
posted @ 2022-05-21 10:42 ZT丶 阅读(272) 评论(0) 推荐(0) 编辑
摘要:1.XA模式是什么 XA规范在上世纪 90 年代初就被提出,用以解决分布式事务处理这个领域的问题 注意:不存在某一种分布式事务机制可以完美适应所有场景,满足所有需求 现在无论AT模式、TCC 模式、Saga 模式,这些模式的提出本质上都源自 XA 规范对某些场景需求的无法满足 XA规范是X/Open 阅读全文
posted @ 2022-05-21 10:41 ZT丶 阅读(317) 评论(0) 推荐(0) 编辑
摘要:1.简介 概念:AT模式是一种无侵入的分布式事务解决方案,在 AT 模式下用户只需关注自己的“业务 SQL”,用户的 “业务 SQL” 作为一阶段,Seata 框架会自动生成事务的二阶段提交和回滚操作。 整体机制: 两阶段提交协议的演变: 一阶段:业务数据和回滚日志记录在同一个本地事务中提交,释放本 阅读全文
posted @ 2022-05-21 10:40 ZT丶 阅读(163) 评论(0) 推荐(0) 编辑
摘要:1.Seata Server简单部署 官方下载地址:https://github.com/seata/seata/releases 修改conf/registry.conf文件,seata的注册中心为nacos: 注意:确保client与server的注册处于同一个namespace和group,不 阅读全文
posted @ 2022-05-21 10:39 ZT丶 阅读(493) 评论(0) 推荐(0) 编辑
摘要:1.分布式事务解决方案 2PC即两阶段提交协议,是将整个事务流程分为两个阶段,P是指准备阶段,C是指提交阶段。 准备阶段(Prepare phase) 提交阶段(commit phase) 举例:比如相亲对象两个人去吃饭,店老板要求先付钱再吃饭,这时男女双方提出了AA,也就是说只有男女双方都付钱才能 阅读全文
posted @ 2022-05-21 10:32 ZT丶 阅读(523) 评论(0) 推荐(0) 编辑
摘要:1.概念 基础概念:事务ACID A(Atomic):原子性,构成事务的所有操作要么都执行完成要么全部不执行,不可能出现部分成功部分失败的情况。 C(Consistency):一致性,在事务执行前后,数据库的一致性约束没有被破坏。比如:张三向李四转100元,转账前和转账后的数据是正确状态,这叫一致性 阅读全文
posted @ 2022-05-21 10:30 ZT丶 阅读(85) 评论(0) 推荐(0) 编辑
摘要:1.固定时间窗算法 概念:固定时间窗口计数器算法思想,在固定的时间窗口内,可以允许固定数量的请求进入。超过数量就拒绝或者排队,等下一个时间段进入。 具体分析一下: 将当前的时间分为10t大小的几个时间窗 规则是阈值为100个请求数,每个时间窗里面的请求数量不能超过阈值100 10t到16t进入请求1 阅读全文
posted @ 2022-05-21 10:29 ZT丶 阅读(1014) 评论(0) 推荐(0) 编辑
摘要:DegradeSlot解析 //DegradeSlot.entry @Override public void entry(Context context, ResourceWrapper resourceWrapper, DefaultNode node, int count, boolean p 阅读全文
posted @ 2022-05-21 10:26 ZT丶 阅读(201) 评论(0) 推荐(0) 编辑
摘要:StatisticSlot StatisticSlot 是 Sentinel 最为重要的类之一,用于根据规则判断结果进行相应的统计操作。 entry 的时候:依次执行后面的判断 slot。每个 slot 触发流控的话会抛出异常(BlockException的子类)。若有 BlockException 阅读全文
posted @ 2022-05-21 10:24 ZT丶 阅读(236) 评论(0) 推荐(0) 编辑
摘要:ClusterBuilderSlot解析 ClusterBuilderSlot:则用于存储资源的统计信息以及调用者信息,例如该资源的 RT, QPS, thread count 等等,这些信息将用作为多维度限流,降级的依据; //NodeSelectorSlot.entry() @Override 阅读全文
posted @ 2022-05-21 10:23 ZT丶 阅读(123) 评论(0) 推荐(0) 编辑
摘要:SlotChain入口解析 默认Chain解析 我们从这里继续分析,这个位置的chain.entry方法,但是此时这个chain是谁? //CtSph中 try { // 针对资源操作 chain.entry(context, resourceWrapper, null, count, priori 阅读全文
posted @ 2022-05-21 10:22 ZT丶 阅读(195) 评论(0) 推荐(0) 编辑
摘要:1.源码下载 下载地址:https://github.com/alibaba/Sentinel/tree/release-1.8 官网版本说明:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF% 阅读全文
posted @ 2022-05-21 10:20 ZT丶 阅读(153) 评论(0) 推荐(0) 编辑
摘要:1.分析源码入口 在微服务使用Sentinel实际工作场景中,我们只需要引入对应依赖:spring-cloud-starter-alibaba-sentinel就会进行自动装配,所以我们直接看META-INF/spring.factories,然后这里从SentinelAutoConfigurati 阅读全文
posted @ 2022-05-21 10:20 ZT丶 阅读(130) 评论(0) 推荐(0) 编辑
摘要:1.概念 OpenFeign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用OpenFeign,可以做到使用HTTP访问远程服务时就像调用本地方法一样的,开发者完全感知不到这是在调用远程方法,更感知不到在访问HTTP请求,用法其实就是编写一个接口,在接口上添加注解即可。 2.基 阅读全文
posted @ 2022-05-21 10:04 ZT丶 阅读(47) 评论(0) 推荐(0) 编辑
摘要:1.Sentinel规则持久化到Nacos 在Sentinel Dashboard中配置规则后如果应用重启那么之前配置好的规则就会丢失,所以实际生产环境中需要将配置规则的持久化,Sentinel提供多种不同的数据源来持久化规则配置,包括file,redis、nacos、zk。 将限流规则持久化到Na 阅读全文
posted @ 2022-05-21 10:03 ZT丶 阅读(250) 评论(0) 推荐(0) 编辑
摘要:1.环境准备 服务熔断:应对微服务雪崩效应的一种链路保护机制,类似保险丝。 需要完成Sentinel整合Ribbon+openFeign,所以我们先要搭建环境,那么先从整合Ribbon开始 新建nacos-provider-9001/9002 父pom: <?xml version="1.0" en 阅读全文
posted @ 2022-05-21 10:01 ZT丶 阅读(311) 评论(0) 推荐(0) 编辑
摘要:SentinelResource除了blockHandler可以设置自定义限流处理逻辑方法以外,还提供另外一个属性来设置限流处理逻辑类型blockHandlerClass属性,此属性中设置的方法必需为 static 函数,否则无法解析。 第一步: /** * 此类型用来处理限流自定义逻辑 */ pu 阅读全文
posted @ 2022-05-21 10:00 ZT丶 阅读(90) 评论(0) 推荐(0) 编辑
摘要:1.系统规则 Sentinel 系统自适应限流从整体维度对应用入口流量进行控制,结合应用的 Load、CPU 使用率、总体平均 RT、入口 QPS 和并发线程数等几个维度的监控指标,通过自适应的流控策略,让系统的入口流量和系统的负载达到一个平衡,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。 阅读全文
posted @ 2022-05-21 09:54 ZT丶 阅读(118) 评论(0) 推荐(0) 编辑
摘要:1.概念 何为热点?热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据,并对其访问进行限制。比如: ​ 商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制 ​ 用户 ID 为参数,针对一段时间内频繁访问的用户 ID 进行限制 热点参数限流会统计传 阅读全文
posted @ 2022-05-21 09:53 ZT丶 阅读(440) 评论(0) 推荐(0) 编辑
摘要:1.基本介绍 除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。一个服务常常会调用别的模块,可能是另外的一个远程服务、数据库,或者第三方 API 等。例如,支付的时候,可能需要远程调用银联提供的 API;查询某个商品的价格,可能需要进行数据库查询。然而,这个被依赖服 阅读全文
posted @ 2022-05-21 09:51 ZT丶 阅读(156) 评论(0) 推荐(0) 编辑
摘要:1.名词解释 资源名:唯一名称,默认请求路径 针对来源:Sentinel可以针对调用者进行限流,填写微服务名,默认default(不区分来源) 阈值类型/单机阈值: QPS(每秒钟的请求数量):当调用该API的QPS达到阈值的时候,进行限流 线程数:当调用该API的线程数量达到阈值的时候,进行限流 阅读全文
posted @ 2022-05-21 09:48 ZT丶 阅读(306) 评论(0) 推荐(0) 编辑
摘要:1.搭建Sentinel项目 Sentinel的官方文档网址:https://sentinelguard.io/zh-cn/docs/quick-start.html 创建项目sentinel-service-8401 导入依赖 <?xml version="1.0" encoding="UTF-8 阅读全文
posted @ 2022-05-21 09:43 ZT丶 阅读(96) 评论(0) 推荐(0) 编辑
摘要:1.什么是sentinel 分布式系统的流量防卫兵:随着微服务的普及,服务调用的稳定性变得越来越重要。Sentinel以“流量”为切入点,在流量控制、断路、负载保护等多个领域开展工作,保障服务可靠性。 特点: 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例 阅读全文
posted @ 2022-05-21 09:42 ZT丶 阅读(713) 评论(0) 推荐(0) 编辑
摘要:Nacos客户端本地缓存及故障转移 在Nacos本地缓存的时候有可能会出现一些故障,这些故障就需要进行处理,涉及到的核心类为ServiceInfoHolder和FailoverReactor。 本地缓存有两方面,第一方面是从注册中心获得实例信息缓存在内存当中,也就是通过Map的形式承载,这样查询操作 阅读全文
posted @ 2022-05-21 00:31 ZT丶 阅读(2066) 评论(0) 推荐(0) 编辑
摘要:Nacos集群数据同步 当有服务进行注册以后,会写入注册信息同时会触发ClientChangedEvent事件,通过这个事件开始进行Nacos的集群数据同步,当然这其中只有一个Nacos节点来处理对应的客户端请求,这其中还涉及到一个负责节点和非负责节点 负责节点 首先要查看的是DistroClien 阅读全文
posted @ 2022-05-21 00:31 ZT丶 阅读(859) 评论(0) 推荐(0) 编辑
摘要:Nacos客户端服务订阅的事件机制剖析 Nacos客户端订阅的核心流程:Nacos客户端通过一个定时任务每6秒从注册中心获取实例列表,当发现实例发生变化时发布变更事件,订阅者进行业务处理,然后更新内存和本地缓存中的实例。 在第一步调用subscribe方法时,会订阅一个EventListener事件 阅读全文
posted @ 2022-05-21 00:29 ZT丶 阅读(617) 评论(0) 推荐(0) 编辑
摘要:1.Nacos订阅概述 Nacos的订阅机制如果用一句话来描述就是:Nacos客户端通过一个定时任务每6秒从注册中心获取实例列表,当发现实例发生变化时发布变更事件,订阅者进行业务处理(更新实例,更改本地缓存) 订阅方法整体流程: 2.定时任务开启 其实订阅本质上就是服务发现的一种方式,也就是在服务发 阅读全文
posted @ 2022-05-21 00:27 ZT丶 阅读(569) 评论(0) 推荐(0) 编辑
摘要:总体流程 Nacos客户端的服务发现,其实就是封装参数、调用服务接口、获得返回实例列表 从NamingTest开始来分析服务发现 public class NamingTest { @Test public void testServiceList() throws Exception { .... 阅读全文
posted @ 2022-05-21 00:25 ZT丶 阅读(181) 评论(0) 推荐(0) 编辑
摘要:1.长连接 概念:长连接是指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包 nacos注册中心客户端2.0之后使用gRPC代替http,会与服务端建立长连接,但仍然保留了对旧http客户端的支持 NamingClientProxy接口负责底层通讯调用服务 阅读全文
posted @ 2022-05-21 00:24 ZT丶 阅读(465) 评论(0) 推荐(0) 编辑
摘要:客户端服务注册入口 流程图: 实际上我们在真实的生产环境中,我们要让某一个服务注册到Nacos中,我们首先要引入一个: <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba 阅读全文
posted @ 2022-05-21 00:23 ZT丶 阅读(164) 评论(0) 推荐(0) 编辑
摘要:服务端服务注册接口 客户端进行服务注册的时候,本质上其实就是调用服务端提供的服务注册接口(nacos/v1/ns/instance),这个接口所在位置为上图标记中,InstanceController和InstanceControllerV2这2个类都包含服务注册功能,内部实现其实都是调用了Inst 阅读全文
posted @ 2022-05-21 00:23 ZT丶 阅读(219) 评论(0) 推荐(0) 编辑
摘要:服务注册信息 我们从Nacos-Client开始说起,那么说到客户端就涉及到服务注册,我们先了解一下Nacos客户端都会将什么信息传递给服务器,我们直接从Nacos Client项目的NamingTest说起 public class NamingTest { @Test public void t 阅读全文
posted @ 2022-05-21 00:19 ZT丶 阅读(259) 评论(0) 推荐(0) 编辑
摘要:1.Nacos核心功能点 服务注册:Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如ip地址、端口等信息。Nacos Server接收到注册请求后,就会把这些元数据信息存储在一个双层的内存Map中。 服务心跳:在服务注册后,Naco 阅读全文
posted @ 2022-05-21 00:18 ZT丶 阅读(120) 评论(0) 推荐(0) 编辑
摘要:1.nacos部署说明 nacos支持三种部署方式: 单机模式 - 用于测试和单机试用 集群模式 - 用于生产环境,确保高可用 多集群模式 - 用于多数据中心场景 集群部署架构:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html 架构图 阅读全文
posted @ 2022-05-21 00:15 ZT丶 阅读(543) 评论(0) 推荐(0) 编辑
摘要:1.名词解释 命名空间(Namespace):用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。 个人倾向把namespace当做 阅读全文
posted @ 2022-05-21 00:12 ZT丶 阅读(759) 评论(0) 推荐(0) 编辑
摘要:1.基础代码 pom <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-insta 阅读全文
posted @ 2022-05-21 00:11 ZT丶 阅读(80) 评论(0) 推荐(0) 编辑
摘要:1.服务消费者注册 pom <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-in 阅读全文
posted @ 2022-05-21 00:09 ZT丶 阅读(197) 评论(0) 推荐(0) 编辑
摘要:1.各种服务注册中心对比 服务注册与发现框架 CAP模型 控制台管理 社区活跃度 Eureka AP 支持 低(2.x版本闭源) Zookeeper CP 不支持 中 Consul CP 支持 高 Nacos AP/CP 支持 高 2.CAP模型 计算机专家 埃里克·布鲁尔(Eric Brewer) 阅读全文
posted @ 2022-05-21 00:09 ZT丶 阅读(99) 评论(0) 推荐(0) 编辑
摘要:1.Nacos服务注册中心 服务发现是微服务架构中的关键组件之一。在这样的架构中,手动为每个客户端配置服务列表可能是一项艰巨的任务,并且使得动态扩展极其困难。Nacos Discovery 帮助您自动将您的服务注册到 Nacos 服务器,Nacos 服务器会跟踪服务并动态刷新服务列表。此外,Naco 阅读全文
posted @ 2022-05-21 00:08 ZT丶 阅读(78) 评论(0) 推荐(0) 编辑
摘要:1.Nacos介绍 Nacos(Naming Configuration Service) 是一个易于使用的动态服务发现、配置和服务管理平台,用于构建云原生应用程序 服务发现是微服务架构中的关键组件之一。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快 阅读全文
posted @ 2022-05-21 00:06 ZT丶 阅读(106) 评论(0) 推荐(0) 编辑
摘要:1.Spring Cloud netflix → Spring Cloud Alibaba 2020-12-22日Spring 官方博客宣布,Spring Cloud 2020.0.正式发布。2020.0.0是第一个使用新的版本号命名方案的Spring Cloud 发行版本。在此之前Spring C 阅读全文
posted @ 2022-05-21 00:05 ZT丶 阅读(1452) 评论(0) 推荐(0) 编辑
摘要:1.什么是微服务 2014年,Martin Fowler(马丁·福勒 ) 提出了微服务的概念,定义了微服务是由以单一应用程序构成的小服务,自己拥有自己的进程与轻量化处理,服务依业务功能设计,以全自动的方式部署,与其他服务使用 HTTP API 通信。同时服务会使用最小的规模的集中管理能力,服务可以用 阅读全文
posted @ 2022-05-20 23:57 ZT丶 阅读(705) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示
主题色彩