自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 soul源码学习(十七)-限流插件之Sentinel(上)

文章目录sentinel简介sentinel对主流框架的适配与其他框架异同sentinel的配置参数soul中开启sentinel插件总结sentinel简介Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性,sentinel在2018年的时候由alibaba开源。sentinel的主要特性如下:sentinel 的优势有以下方面:多样化的流量控制熔断降级系统负载保护实时监控和控制台sentinel对主流框架的适配Sentinel 分为两

2021-02-06 05:42:48 368

原创 soul源码学习(十六)-限流插件之rate_limiter(下)

文章目录常用限流算法梳理令牌桶算法原理令牌桶算法优势令牌桶算法实现常用限流算法梳理计数器(固定窗口)算法计数器算法是使用计数器在周期内累加访问次数,当达到设定的限流值时,触发限流策略。下一个周期开始时,进行清零,重新计数。计数器算法方式限流对于周期比较长的限流,存在很大的弊端,会出现临界问题(前一个周期最后的小时间段内和下一个周期的最开始时间段内相加的并发量远远大于服务器可承载并发数)。滑动窗口算法滑动窗口算法是将时间周期分为N个小周期,分别记录每个小周期内访问次数,并且根据时间滑动删除

2021-02-05 03:34:11 295

原创 soul源码学习(十六)-限流插件之rate_limiter(上)

文章目录开启配置测试总结开启配置打开rate_limter开关,并配置redis地址这里使用单机redis模式即可配置rate_limiter插件的选择器和路由这里我们只针对一个具体的url进行限流,其中令牌桶的容量设置成100,速率设置成1测试测试前,启动soul-examples-http,我们针对该客户端进行测试,使用工具为jmeter先进行单个请求的发送,观察redis的变化可以看到rate_limiter插件会往redis中存入两个key,一个是时间戳,一个是

2021-02-04 02:29:03 204

原创 soul源码学习(十五)-熔断插件之hystrix(下)

文章目录hystrix在soul中的集成总结hystrix在soul中的集成hystri在soul中的插件类为HystrixPlugin,继承了AbstractSoulPlugin,与其他插件一样,我们来看看最终的执行方法,doExecute,如下:代码比较简短,主要做的事情如下:将配置的熔断规则转换为HystrixHandle类,该类的主要属性就是我们在soul-admin中配置的熔断规则属性构造命令模板,具体的构造过程如下:这里边根据配置的不同(信号量和线程),来构造不同的命令模板(H

2021-02-02 04:08:09 202

原创 soul源码学习(十五)-熔断插件之hystrix(上)

文章目录基本概念Hystrix原理hystrix插件配置基本概念服务熔断:一般是指软件系统中,由于某些原因使得服务出现了过载现象,为防止造成整个系统故障,从而采用的一种保护措施,所以很多地方把熔断亦称为过载保护。很多时候刚开始可能只是系统出现了局部的、小规模的故障,然而由于种种原因,故障影响的范围越来越大,最终导致了全局性的后果。适用场景:防止应用程序直接调用那些很可能会调用失败的远程服务或共享资源服务降级:当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放

2021-01-31 04:40:28 209

原创 soul源码学习(十四)-dubbo以及sofa插件分析

文章目录概述dubbo调用过程sofa调用过程总结概述由于dubbo及sofa都属于rpc框架,都有自己的注册服务中心以及自己进行远程调用时的相关协议规定,因此放到一块进行对比分析dubbo调用过程本调用过程主要以apache-dubbo进行讲解。请求过来之后,首先会调用dubbo独有的BodyParamPlugin该插件,主要作用为组装dubbo调用时所需要的参数(普通url参数或者json或者表单格式),将该数据存储到ServerWebExchange中,并进行下一调用链调用紧接着会进入A

2021-01-30 03:46:46 1188

原创 soul源码学习(十三)-divide插件之均衡负载算法分析

文章目录随机算法轮询算法hash算法总结随机算法所在类:RandomLoadBalance原理:核心是根据设置的权重来计算分配频次,权重一样,分配概率一样,权重大,分配的比例就会大一些,默认权重为50@Overridepublic DivideUpstream doSelect(final List<DivideUpstream> upstreamList, final String ip) { int totalWeight = calculateTotalWeight(up

2021-01-29 03:16:40 95

原创 soul源码学习(十二)-SPI机制在soul中的应用

文章目录SPI介绍SPI定义SPI使用SPI实现SPI在soul网关中的应用与JDK版本的SPI比较SPI介绍SPI定义SPI ,全称为 Service Provider Interface,是一种服务发现机制,是Java提供的一套用来被第三方实现或者扩展的接口,它可以用来启用框架扩展和替换组件。 SPI的作用就是为这些被扩展的API寻找服务实现。SPI使用SPI 是调用方来制定接口规范,提供给外部来实现,调用方在调用时则选择自己需要的外部实现。 从使用人员上来说,SPI 被框架扩展人员使用。

2021-01-28 02:23:28 239

原创 soul源码学习(十一)-divide插件分析

文章目录探活机制分析调用链分析负载均衡算法与springcloud调用对比探活机制分析探活即用来和后端代理的相关服务进行心跳检测,以确定其是否能够进行正常服务,由于该部分功能不在整个调用链上,因此首先进行分析探活服务默认在soul-admin开启,相关类为UpstreamCheckService,在该类被spring自动装配后,会进行启动线程对后端服务进行检查,默认每隔10s检查一次检查时,如果发现服务不可用时,则会从数据库将该服务剔除,并且发布相关事件,通过数据同步至网关,网关收到后,会同步缓

2021-01-27 03:50:12 224

原创 soul源码学习(十)-集群搭建

文章目录环境准备测试访问源码简要分析结论环境准备搭建三个soul-admin实例(本机端口分别为9095/9096/9097), 启动命令如下:java -jar soul-admin.jar --server.port=9095java -jar soul-admin.jar --server.port=9096java -jar soul-admin.jar --server.port=9097搭建三个soul-bootstrap实例(本机端口分别为9195/9196/9197)同

2021-01-26 01:52:47 205

原创 soul源码学习(九)-nacos数据同步

文章目录分析前准备环境配置nacos启动单实例数据同步过程源码分析分析前准备环境配置soul-admin配置soul: database: dialect: mysql init_script: "META-INF/schema.sql" init_enable: true sync: nacos: url: localhost:8848 namespace: 1c10d748-af86-43b9-8265-75f487d20c6c

2021-01-24 01:04:34 393

原创 soul源码学习(八)-http长连接数据同步

文章目录分析前准备环境准备数据同步过程源码分析分析前准备环境准备soul-admin开启http同步配置soul: database: dialect: mysql init_script: "META-INF/schema.sql" init_enable: true sync:# websocket:# enabled: true# zookeeper:# url: localhost:2181#

2021-01-23 04:35:19 97

原创 soul源码学习(七)-zookeeper数据同步

文章目录分析前准备环境配置数据同步过程源码分析分析前准备环境配置soul-admin中配置文件将默认websocket同步配置切换成zookeeper,soul-bootstrap中配置文件也要将默认的同步配置切换成zookeeper依次启动soul-admin,soul-bootstrap,soul-examples-http即可访问数据同步过程数据通同步过程与上一篇websocket大致类似,不同的是客户端将路由等信息发送给soul-admin时,soul-admin将

2021-01-22 03:19:33 128

原创 soul源码学习(六)-websocket数据同步

文章目录分析前准备spring事件机制websocket原理数据同步过程源码分析首次启动全量同步运行中变更同步分析前准备spring事件机制spring框架提供了事件发布订阅机制,由发布者、订阅者、事件三个关键要素组成,发布者发布事件后,由该事件的订阅者进行事件处理。事件(所有事件均继承该类)public abstract class ApplicationEvent extends EventObject { private static final long serialVersi

2021-01-21 01:54:29 234

原创 soul源码学习(五)-springcloud示例

文章目录配置启动访问注意事项springcloud客户端注册源码分析配置soul-admin需要开启springcloud插件soul-bootstrap引入springcloud相关依赖 <dependency> <groupId>org.dromara</groupId> <artifactId>soul-spring-boot-starter-plugin-springcloud</arti

2021-01-20 01:29:06 120

原创 soul源码学习(四)-sofa示例

文章目录配置启动访问注册访问过程sofa客户端注册源码分析博客地址配置soul集成sofa时,需要进行以下步骤配置soul-admin开启sofa插件由于sofa与dubbo类似,都需要注册中心,因此也需要在soul-admin配置sofa的注册中心地址,使用默认的zookepper地址即可:配置soul-bootstrap网关引入sofa插件依赖<dependency> <groupId>org.dromara</groupId&g

2021-01-19 01:43:40 205

原创 soul源码学习(三)-dubbo示例

文章目录目标环境准备访问测试soul-admin手动同步异常总结目标通过官方示例了解dubbo集成方式环境准备启动soul-admin和soul-bootstrap下载zookeeper,并以默认端口启动启动官方示例soul-examples-dubbo(TestApacheDubboApplication),控制栏输出如下2021-01-17 01:27:52.211 INFO 75035 --- [pool-2-thread-1] o.d.s.client.common.utils.

2021-01-17 02:35:55 165

原创 soul源码学习(二)-http示例

文章目录目标运行soul-examples-http示例配置运行访问测试总结目标运行官方示例soul-examples-http了解http方式访问网关大致流程运行soul-examples-http示例配置该示例工程是以常见的springmvc方式访问,其中要想被soul网关代理访问,只需要在普通的controller上加入soul相关注解,如图所示:类方式方法上加soul注解pom文件引入soul客户端的依赖包运行首先启动soul-admin和soul-bootst

2021-01-16 01:06:37 185

原创 soul源码学习(一)-项目搭建

文章目录简介soul设计目标soul特性安装前准备项目启动启动soul-admin启动网关soul-bootstrap小结参考简介soul设计目标异步的,高性能的,跨语言的,响应式的API网关。soul特性支持各种语言(http协议),支持 dubbo,springcloud协议。插件化设计思想,插件热插拔,易扩展。灵活的流量筛选,能满足各种流量控制。内置丰富的插件支持,鉴权,限流,熔断,防火墙等等。流量配置动态化,性能极高,网关消耗在 1~2ms。支持集群部署,支持 A/B Test

2021-01-15 01:13:10 438 1

转载 组合算法

算法1: 高效算法:对n个数进行全组合,共有2^n-1种算法,即求每个数的二进制表示方式。//此方法判断1所在二进制位置采用与判断 public static void main(String args[]){ String[] str={"A","B","C","D","E"};//共有31种全组合方式 int ncount=str.length; int nBit

2016-12-01 18:22:58 298

原创 XPATH学习笔记

有命名空间的xml文档 张三 20 吃 喝 ns1:BACKUPCFG/ns1:syndata/ns2:class/ns2:RlcPdcpParaGroup/ns2:attributes[ns2:RlcPdcpParaGroupId=0]/ns2:PdcpSnSizeObjItf/M[@n=’ServiceDRXTDD’]/P[@n=’qCI’

2016-12-01 18:10:47 279

原创 rownum,rowid,row_number() over等区分

1.rownum 1.1为伪劣,按读取顺序加的序号,序号从1开始,数据读取顺序指的是·实际查询结果, 不含排序操作。如果对某字段记进行排序,则先查询(查询结果一般是数据插入顺序),然后对rownum进行编号,从1开始,最后再按指定字段排序,则排序后的结果,rownum可能不是顺序排列。 例如: select rownum,name from students;(读取顺序,

2016-06-16 16:20:41 748

转载 WebService之WSDL文档元素详解 (转)

WSDL的主要文档元素 WSDL文档可以分为两部分。顶部分由抽象定义组成,而底部分则由具体描述组成。抽象部分以独立于平台和语言的方式定义SOAP消息,它们并不包含任何随机器或语言而变的元素。这就定义了一系列服务,截然不同的应用都可以实现。具体部分,如数据的序列化则归入底部分,因为它包含具体的定义。在上述的文档元素中,、、属于抽象定义层,、属于具体定义层。所有的抽象可以是单独存在于别的文件中,也可以

2016-06-03 15:42:11 576

原创 linux常用命令export

直接用export命令:export PATH=$PATH:/XX/bin$PATH 代表PATH之前设置的变量 只对当前shell有效 查看当前环境变量 [root@localhost bin]# export 2、修改profile文件:vi /etc/profile在里面加入: export PATH=”$PATH:/XX/bin” 3. 修改.bashrc文件:vi /ro

2016-05-10 18:13:02 332

转载 欢迎使用CSDN-markdown编辑器

maven surefire plugin介绍

2016-04-06 14:40:03 330

转载 oracle中常用函数ROW_NUMBER() OVER()(分析函数)

ROW_NUMBER() OVER()函数

2016-02-16 10:36:23 383

转载 oracle中常用函数WM_CONCAT(行转列)

WM_CONCAT-列转行函数

2016-02-16 10:17:56 904

转载 ORACLE中的自治事务 PRAGMA AUTONOMOUS_TRANSACTION

这是一个非常实用的功能,特别用在记录错误日志同时要回滚主事务的时候,我们在实际开发中就是这么用的,感觉还是很方便的。转载一篇详细的介绍,感谢原作者。在基于低版本的ORACLE做一些项目的过程中,有时会遇到一些头疼的问题.,比如想在执行当前一个由多个DML组成的transaction(事务)时,为每一步DML记录一些信息到跟踪表中,由于事务的原子性,这些跟踪信息的提交将决定于主事务的commit或ro

2016-02-16 09:32:57 852

原创 Activiti工作流学习总结数据结构(二)

Activiti数据表共有24张(5.16版本),Activiti使用到的表都是ACT_开头的。 ACT_RE_*: ’RE’表示repository(存储),RepositoryService接口所操作的表。带此前缀的表包含的是静态信息,如,流程定义,流程的资源(图片,规则等)。 ACT_RU_*: ‘RU’表示runtime,运行时表-RuntimeService。这是运行时的表存储着流

2015-12-31 11:03:09 2600

转载 Activiti工作流学习总结(一)

Activiti工作流背景介绍: 1.Activiti 其核心是 BPMN 2.0 的流程引擎。BPMN 是目前被各 BPM 厂商广泛接受的 BPM 标准,全称为 Business Process Model and Notation,由 OMG 组织进行维护,2011 年 1 月份发布了其 2.0 的正式版。BPMN 2.0 对比于第一个版本,其最重要的变化在于其定义了流程的元模型和执行语义,即

2015-12-30 11:16:47 711

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除