自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringIOC生命周期

初始化Bean前: bean-xml 的 init-method。终点#postProcessBeforeInitialization。终点#postProcessAfterInitialization。终点#postProcessAfterInstantiation。终点#postProcessPropertyValues。终点#afterProertiesSet。终点#setBeanFactory。终点#setBeanName。终点#initMethod。

2023-03-19 20:30:39 140

原创 Python Selenium 自动化学习

python自动化学习

2023-02-01 17:59:42 142

原创 ShardingSphere源码分析(三) ShardingSphere-UI使用

文章目录环境准备ShardingSphere-Proxy 配置server.yaml 服务配置config-replica-query.yaml 读写分离config-sharding.yaml 数据分片启动 ShardingSphere-Proxy启动 ShardingSphere-UI小结 环境准备 准备 ShardingSphere-Proxy 与 ShardingSphere-UI , 这次使用 5.0.0-alpha 版本. ShardingSphere-Proxy 下载地址: https://

2021-08-25 23:52:52 646

原创 ShardingSphere源码分析(二) ShardingSphere-Proxy使用

文章目录环境准备读写分离分库分表加密小结 环境准备 根据官方文档的描述, 需要先下载 ShardingSphere-Proxy 的发行版, 配置代理并运行, 然后由我们的 idea 直连 ShardingSphere-Proxy 这个代理数据库. 我采用下载发行版的方式 (比较推荐, 参数错误可以在日志中检查), 部署步骤如下: 下载发行版 解压并配置各个配置项: conf 文件夹下的 service.yaml 与各种 config-xxx.yaml 启动 bin/start.sh (自定义端口只需紧跟

2021-08-25 23:49:28 653

原创 ShardingSphere源码分析(一) ShardingJDBC使用

文章目录环境准备读写分离分库分表加密小结 环境准备 这次的分享偏使用, 不探索 ShardingSphere 的代码过程 ( 实际是我还没编译通过… ) 主要准备是 MySQL 主从环境, 我这里直接在 windows 上安装 mysql 5.7, 并拷贝了一份当做从库, 链接如下: https://blog.csdn.net/a345203172/article/details/106911270 更加方便的方式是启动 docker 来做一主多从的环境. 读写分离 在 ShardingSphere-5

2021-08-25 23:44:40 999

原创 学习领域模型-上下文过载

文章目录富知识类 User角色对象 (Role Object)上下文对象 (Context Object) (学习极客时间-如何落地业务建模 的笔记, 展示代码皆使用文中例子, 仅做学习记录) 富知识类 User 我们有三个功能模块, 落地在领域建模时, 分为三个上下文. 接着对它们的交集点 User 建模, 得到的代码如下: public class User { private long id; // 社交上下文 private List<Friendsh

2021-07-18 17:08:56 299

原创 学习领域模型-数据库的断舍离

文章目录Repository 仓储模式关联对象总结 (学习极客时间-如何落地业务建模 的笔记, 展示代码皆使用文中例子, 仅做学习记录) Repository 仓储模式 我们知道, 聚合根实体的实例化是需要借助数据库, 但这种逻辑放在实体内, 会混杂领域模型的含义. 于是 Eric 的一书中, 采用 Repository 仓储模式单独做数据相关工作. 具体方式是定义聚合根实体的 Repository 接口, 以及 DB 实现, 将保存与查询等操作置于其中. 借用文中的例子: class User {

2021-07-17 23:51:43 218

原创 Soul网关源码分析-21期

文章目录熔断插件 - Hystrix 使用配置Jmeter 测试 熔断插件 - Hystrix 使用 接下来的章节, 会研究 SOUL 的预置插件模块, 比如这次的熔断插件, 看看 SOUL 是如何集成熔断插件做过载保护的 配置 后台插件管理中, 将 Hystrix 插件开启 在 hystrix 处配置选择器, 条件用 match 匹配所有 http 服务 接着设置规则, 可以针对全部 http 服务, 也可以自由拦截特定路径, 这里我用 match 模式拦截前缀是 /http/order 的请

2021-02-05 16:50:27 162

原创 Soul网关源码分析-20期

文章目录集群模式下 HTTP 长轮询疑问 集群模式下 HTTP 长轮询疑问 在上一章中我们分析了集群模式下各个同步方式是如何避免旧数据相互覆盖的. 但上次我还留有一个疑问点: HTTP 长轮询下, A、B先后发生变动, 此时B的缓存数据为最新, A中没有B的变动信息. 而网关此时通过 /config/fetch? 拉取数据, 先拉取B, 后拉取A, 是否会出现拉取到过时数据呢? 我们在 HttpSyncDataService 中做一个延迟, 如果是 A节点则延迟10秒请求 /config/fet

2021-02-02 21:14:38 181

原创 Soul网关源码分析-19期

文章目录集群下数据同步探究Websocket 表现Websocket 增量更新实现Http 长轮询表现Http 长轮询更新实现Zookeeper 表现Nacos 表现总结 集群下数据同步探究 昨天配置集群时有个问题我一直惦记着, 集群间同步网关的数据会不会 相互覆盖 ? 在我看来, 后台集群间没有数据交互, 它们的桥梁仅仅是同一个数据库. 所以当后台为集群 A、B , 此时 A 做了信息变更, B 也做了信息变更, 两者的变更数据位置不同, 且后台如果使用缓存来更新数据并传导出去, 存在相互覆盖的可

2021-02-02 21:13:14 336

原创 Soul网关源码分析-18期

文章目录集群配置后台配置网关配置启动验证操作验证附录Http 长轮询配置Zookeeper 配置Nacos 配置 集群配置 今天测试 SOUL 后台集群部署下同步数据到网关的情况. 后台配置 启动两个后台, 端口分别是 9095 和 9096 server: # port: 9095 port: 9096 仍使用默认的 websocket 数据同步方式 soul: sync: websocket: enabled: true 网关配置 网关处的 websocke

2021-02-01 22:31:14 157

原创 Soul网关源码分析-17期

文章目录后台与网关数据同步 (Nacos篇)配置 Nacos配置后台配置网关Nacos 后台无数据?启动网关验证同步 后台与网关数据同步 (Nacos篇) 配置 Nacos 研究 Soul 后台与网关同步前, 需要先做好本地环境准备, 重点是启动 Nacos 服务. 通用 docker 使用 Nacos 的网址: https://nacos.io/zh-cn/docs/quick-start-docker.html 首先将 nacos-docker 项目 clone 到本地 > git cl

2021-01-29 22:22:29 244

原创 Soul网关源码分析-16期

文章目录SOUL 中 SPI 的使用Java SPI SOUL 中 SPI 的使用 在之前分析 divide 插件的负载均衡策略时, 有看到过一行代码: DivideUpstream divideUpstream = LoadBalanceUtils.selector(upstreamList, ruleHandle.getLoadBalance(), ip); 当时很简单的略过了它的实现, 它的作用很容易分析, 调用一个看似工具类的方法, 传入多个节点组成的集群, 返回一个节点. 这是一个负载均

2021-01-29 00:52:05 653 4

原创 Soul网关源码分析-15期

文章目录后台与网关数据同步 (Http长轮询篇 <三>)网关启动时拉取数据网关轮询监听变化 后台与网关数据同步 (Http长轮询篇 <三>) 长轮询分析的最后一篇, 总结网关端的长轮询的实现, 以及数据流动方式. 网关端长轮询的流程总体也分两个模块: 一是启动时拉取, 二是轮询监听变化 网关启动时拉取数据 网关启动后, 会调用后台提供的接口拉取数据, 并将数据发送到各个插件的数据处理类中 下面展示下网关启动拉取数据的处理流程: #mermaid-svg-tKte8SXpax

2021-01-28 00:14:20 175

原创 Soul网关源码分析-14期

文章目录后台与网关数据同步 (Http长轮询篇 <二>)后台请求接入后台变更通知后台细节更新数据如何鉴别网关得到变化数据类型后还要做什么CACHE 缓存数据的来源 后台与网关数据同步 (Http长轮询篇 <二>) 总结下后台与网关的长轮询同步流程, 会将重点放在后台的处理上. 长轮询的流程总体分两个模块: 一是请求接入, 二是变更通知 后台请求接入 网关启动后, 会与后台建立连接来获得数据的同步, 而长轮询下网关建立连接的方式就是通过 http 请求后台. 下面展示下网关发

2021-01-27 00:11:51 192

原创 Soul网关源码分析-13期

文章目录后台与网关数据同步 (Http长轮询篇 <一>)配置DataChangedListener 体系其他同步策略此时在干什么?长轮询实现方式思考HttpLongPollingDataChangedListener 长轮询实现总结 后台与网关数据同步 (Http长轮询篇 <一>) 配置 后台信息模式切换 在上篇分析 Zookeeper 同步的文章 (Soul网关源码分析-11期) 中, 我们通过 DataSyncConfiguration 这个配置类做的切换, 这次有了经验,

2021-01-26 00:18:01 330 3

原创 Soul网关源码分析-12期(周总结)

文章目录HTTP 服务探活服务注册后台缓存信息新增后台缓存信息新增 通知网关网关缓存信息新增服务下线后台缓存信息变动后台缓存信息变动 通知网关网关缓存信息更新TIPS HTTP 服务探活 目的 最终目的是搞清楚网关中服务节点缓存在各种情况下的变动, 这样在请求网关转发 HTTP 服务时, 才能做到心中有数. 拆分任务 看到最终目的, 我会有几个想法: 网关的缓存节点信息应该在何时变动 ? 后台数据会同步网关, 那后台数据如何变动, 如何通知网关 ? 根据这些问题, 就得到了要进行的任务

2021-01-24 12:46:47 228

原创 Soul网关源码分析-11期

文章目录后台与网关数据同步 (Zookeeper篇)后台信息模式切换网关信息模式切换后台数据初始化时传输后台数据变动时传输网关数据变动时接收 后台与网关数据同步 (Zookeeper篇) 后台与网关的数据同步, 在 V2.2.1 中默认是 Websocket 方式, 如何切换到 Zookeeper 呢? 这里肯定是后台与网关都切换到 Zookeeper, 先分析第一个如何切换后台的信息同步模式. 后台信息模式切换 没有什么思路的情况下, 可以先从旧有模式入手, 知道旧有模式 (Websocket)

2021-01-24 00:40:53 298

原创 Soul网关源码分析-10期(周总结)

文章目录后台与网关数据同步 (Websocket篇)后台如何建立Websocket?网关如何建立Websocket?网关数据变动调用链TIPS 后台与网关数据同步 (Websocket篇) 后台如何建立Websocket? #mermaid-svg-m2wOiPVP6teGH1Rd .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}

2021-01-22 18:10:27 269

原创 Soul网关源码分析-9期

文章目录Soul 后台 HTTP 服务探活机制准备工作HTTP服务启动时探活HTTP服务关闭时探活 Soul 后台 HTTP 服务探活机制 准备工作 在之前的研究中得知, 在网关侧通过维护 UpstreamCacheManager 来管理更新服务节点, 重点的地方在接收 soul-admin 传来的 selectorData 数据. 我们在 submit() 方法上断点, 做个实验: 开启HTTP服务, 看断点处何时进入, 检查传入的 selectorData 中 handler 对应的数据 关闭H

2021-01-21 18:52:45 327

原创 Soul网关源码分析-8期

文章目录Soul 网关 HTTP 服务探活机制准备工作从一个知道会失败的请求开始UpstreamCacheManager 节点更新UpstreamCacheManager 节点新增一切仍未结束 Soul 网关 HTTP 服务探活机制 准备工作 仅启动 soul-admin 与 soul-bootstrap, soul-admin 中有之前测试 Http 转发时注册的服务路径及服务元数据. 在这种情况下, 看看如果没启动相应服务节点的情况会发生什么. [外链图片转存失败,源站可能有防盗链机制,建议将图片

2021-01-20 21:25:04 705

原创 Soul网关源码分析-7期(番外)

开个小差, 追下网关的接收请求并转发中, soul借助 spring-web 的实现. 追下网关监听请求的开启, 找到配置类 SoulConfiguration: @Configuration public class SoulNettyWebServerFactory { private static final int DEFAULT_IO_WORKER_COUNT = Integer.parseInt(System.getProperty( ReactorNetty

2021-01-20 00:25:14 196

原创 Soul网关源码分析-6期

文章目录今日任务AlibabaDubboPluginApacheDubboPlugin启动时报错 Duplicate key正题 今日任务 AlibabaDubboPlugin 研究 ApacheDubboPlugin 研究 AlibabaDubboPlugin 将该启动的都开启, Mysql、Zookeeper、AlibabaDubbo服务、Soul-admin、Soul-bootstrap. 值得注意的是, 启动网关时打印了这几行日志: 2021-01-19 19:56:44.680 INF

2021-01-20 00:24:05 322

原创 Soul网关源码分析-5期(番外)

文章目录分析请求时 RPCType 如何产生TIPS1 如何主动触发元数据的更新?TIPS2 如果访问请求时出现404等情况如何排查? 分析请求时 RPCType 如何产生 调用网关转发服务的过程中, 具体是走入 Dubbo 转发, Http 转发, 亦或者 SpringCloud 转发, 都是由上下文中请求对象的 RpcType 属性来确定的, 这次分析下它的由来. 直接找到被 GlobalPlugin (插件链的第一个插件) 调用的 DefaultSoulContextBuilder 类: publi

2021-01-18 14:07:01 243

原创 Soul网关源码分析-4期(周总结)

文章目录插件链总结AbstractSoulPluginSoulPluginChain插件项目结构DividePlugin负载均衡HashRandomLoadBalanceRoundRobinLoadBalanceWebClientPluginWebClientResponseClient 插件链总结 从一个类关系图说起: #mermaid-svg-rfFm5KqOF5xWodc6 .label{font-family:'trebuchet ms', verdana, arial;font-family:

2021-01-18 11:35:50 787

原创 Soul网关源码分析-3期(吐血分析)

分析选择器 - 一个让人感动的算法 首先分别启动 soul-admin 、soul-bootstrap , 再启动两个相同的test服务组建集群 soul-test-http. 转到后台管理页的 Divide 插件页, 已经注册了的选择器 http 中, 可以看到两个服务路径的配置: 前置工作准备就绪, 在 DividePlugin 插件这打个断点, 看看 selector 的此时内容: SelectorData(id=1349650852775989248, pluginId=5, pluginNam

2021-01-17 02:53:32 1608 2

原创 Soul网关源码分析-2期

目录今日任务开始一个请求调用总结 今日任务 沿着 DividePlugin 下去, 分析 WebClientPlugin 转发请求的环节, 以及 WebClientResponsePlugin 响应外发. 分析 Selector 的用处, 选择器如何工作. (明日任务) 简单分析下插件链上的其他内置插件. (明日任务, 结合Dubbo服务分析) 开始一个请求调用 在 WebClientPlugin 的 execute() 处拦截并分析: public Mono<Void> execu

2021-01-15 22:03:54 332

原创 Soul网关源码分析-1期

目录今日任务分析项目启动分析网关调用服务总结欠缺处 今日任务 将一个http服务跑起来, 看看有什么关键类在作用, 以及最重要的网关server和client如何工作. 重点可以关注 DividePlugin 的 doExecute() 分析项目启动 今天切到了tag2.2.1 , 启动 soul-admin 和 soul-bootstrap , 看到 soul-admin 的一行信息很有意思 2021-01-14 16:38:23.704 INFO 4600 --- [0.0-9095-exec

2021-01-15 00:15:55 562

原创 Soul网关源码分析-0期(预热)

启动 soul-admin成功后, 启动soul-bootstrap soul-admin下打印几行信息 2021-01-13 23:00:42.047 INFO 16544 --- [0.0-9095-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2021-01-13 23:00:42.047 INFO 16544 --- [0.0

2021-01-13 23:45:09 1784 4

空空如也

空空如也

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

TA关注的人

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