自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Soul网关源码学习系列之【sentinel插件】

sentinel简介Sentinel 是面向云原生微服务的流量控制,熔断降级组件,监控保护你的微服务。其前身是 Hystrix,是Alibaba的开源项目。更多关于Sentinel的介绍插件启用在 soul-admin –> 插件管理 –> sentinel,设置为开启。在网关的 pom.xml 文件中添加 sentinel的支持。 <!-- soul sentinel plugin start--> <dependency> <gro

2021-02-05 23:38:54 830

原创 Soul网关源码学习系列之【resilience4j插件】

resilience4j简介Resilience4j是一款轻量级,易于使用的容错库,其灵感来自于Netflix Hystrix,但是专为Java 8和函数式编程而设计。轻量级,因为库只使用了Vavr,它没有任何其他外部依赖下。相比之下,Netflix Hystrix对Archaius具有编译依赖性,Archaius具有更多的外部库依赖性,例如Guava和Apache Commons Configuration。要使用Resilience4j,不需要引入所有依赖,只需要选择你需要的。更多关于Resili

2021-02-04 23:15:14 188

原创 Soul网关源码学习系列之【admin后台管理Ⅰ-login】

soul-admin模块源码分析用户登录在登录页面点击登录,通过浏览器控制台可以看到请求的地址是http://localhost:9095/platform/login?userName={username}&password={pwd}然后找到方法入口:这里通过dashboardUserService.login拿到一个返回的VO。 @GetMapping("/login") public SoulAdminResult loginDashboardUser(final S

2021-02-03 23:47:52 841

原创 Soul网关源码学习系列之【Hystrix插件】

Hystrix简介Hystrix的设计目标对来自依赖的延迟和故障进行防护和控制——这些依赖通常都是通过网络访问的阻止故障的连锁反应快速失败并迅速恢复回退并优雅降级提供近实时的监控与告警Hystrix遵循的设计原则防止任何单独的依赖耗尽资源(线程)过载立即切断并快速失败,防止排队尽可能提供回退以保护用户免受故障使用隔离技术(例如隔板,泳道和断路器模式)来限制任何一个依赖的影响通过近实时的指标,监控和告警,确保故障被及时发现通过动态修改配置属性,确保故障及时恢复防止整个依赖

2021-02-01 23:13:03 118

原创 响应式编程简介

对于响应式编程的解释个人理解:Java中传统的线程接口有两种,一种是Runable,一种是Callable;一个没有返回值,一个有返回值;Callable的返回值用Future来接收。无论是Runable还是Callable,都要等线程执行完才能继续操作下去,这个过程中就造成了阻塞。如果想我把任务分配下去,并且告诉他任务执行完成就怎么怎么样,然后我就不用管了,这样一种思想可以理解成是响应式编程,就像是“好莱坞原则”(演员不用主动联系导演,导演会去联系演员,也就是你不要来找我,我会去找你)。响

2021-01-29 00:48:54 4392

原创 Soul网关源码学习系列之【Sofa插件】

Sofa插件的作用sofa插件是将http协议 转换成sofa协议 的插件,也是网关实现sofa泛化调用的关键。和Dubbo插件一样,sofa插件需要配合元数据才能实现sofa的调用。想更详细了解,可以参考官方文档。我这里还是主要看一下其代码实现。代码实现Sofa的Selector,rule以及metaData的格式和Dubbo是一样的。至于两个插件的区别在哪,后面看了Sofa的代码就知道了。看一下sofa插件的doExecute方法,通过和Dubbo插件的doExecute方法对比,它们

2021-01-29 00:12:17 176

原创 Soul网关源码学习系列之【Dubbo插件】

Dubbo插件简介dubbo插件是将http协议 转换成dubbo协议 的插件,也是网关实现dubbo泛化调用的关键。dubbo插件需要配合元数据才能实现dubbo的调用。apache dubbo 和 alibaba dubbo用户,都是使用该同一插件。想更详细了解,可以参考官方文档。我这里还是主要看一下其代码实现。Dubbo插件代码实现在看代码之前,我们先了解一下Dubbo插件的数据格式是什么样的,同样Dubbo也是分了Selector和Rule,并且Dubbo还多了元数据的概念。下面

2021-01-28 00:49:58 227

原创 Soul网关源码学习系列之【divide插件】

Soul的插件设计插件采用数据库设计,来存储插件,选择器,规则配置数据,以及对应关系。数据库表UML类图:设计详解:一个插件对应多个选择器,一个选择器对应多个规则。一个选择器对应多个匹配条件,一个规则对应多个匹配条件。每个规则在对应插件下,不同的处理表现为handle字段,handle字段就是一个json字符串。具体的可以在admin使用过程中进行查看。Divide插件简介divide插件是网关处理 http协议请求的核心处理插件。divide插件是进行http正向代理的插件

2021-01-27 01:14:38 145

原创 Soul网关源码学习【第九篇】-数据同步(nacos)

什么是nacos?nacos是一款发现、配置和管理微服务的开源框架,详细介绍可以参考Nacos 文档。代码跟踪程序从入口PluginController.syncPluginData方法开始调用SyncDataServiceImpl.syncPluginData,找到插件,使用ApplicationEventPublisher.publishEvent将事件发送出去。在DataChangedEventDispatcher.onApplicationEvent进行监听,实现插件分选因为启用的是n

2021-01-25 22:37:53 106

原创 Soul网关源码学习【第八篇】-数据同步(http长轮询)

http长轮询Soul 借鉴了 Apollo、Nacos 的设计思想,取其精华,自己实现了 http 长轮询数据同步功能。注意,这里并非传统的 ajax长轮询!http 长轮询机制如下所示,soul-web 网关请求 admin 的配置服务,读取超时时间90s,意味着网关层请求配置服务最多会等待 90s,这样便于 admin 配置服务及时响应变更数据,从而实现准实时推送。http 请求到达 sou-admin 之后,并非立马响应数据,而是利用 Servlet3.0的异步机制,异步响应数据。首先,将长

2021-01-23 23:53:19 204

原创 Soul网关源码学习【第七篇】-数据同步(zookeeper)

关于zookeeper可能有些同学跟我一样,没有用过zookeeper,不过这并没有多大影响来阅读本篇文章。关于zookeeper我们只需要知道它可以存储数据,并且可以广播数据就可以了。如果对zookeeper不是很了解并且感兴趣的话,推荐菜鸟教程的zookeeper教程适合初学者快速了解zookeeper。Soul网关使用Zookeeper实现数据同步前面一篇介绍WebSocket数据同步的时候已经大致说过了Soul的数据同步原理,今天就直接来演示了。启动soul-admin启动soul

2021-01-23 00:16:32 114

原创 Soul网关源码学习【第六篇】-数据同步(websocket)

Soul网关数据同步为什么需要数据同步?Soul作为独立的网关系统,有自己的管理后台soul-admin,通过页面操作就可以控制插件数据,选择器,规则数据,元数据,签名数据等等,并且所有插件的选择器,规则都是动态配置,立即生效,不需要重启服务。这样便捷的操作当然需要一套完善的数据同步机制。又考虑到性能问题,不可能每次更改了设置都要通过数据库来获取,所以soul设计了一套数据同步机制,保证了数据始终在JVM的内存中,且是最新的数据,这样也就大大提高了性能。Soul的数据同步原理是什么?详细的介

2021-01-20 22:01:48 150

原创 Soul网关源码学习【第五篇】-springCloud示例

SpringCloud简介SpringCloud是微服务架构的集大成者,将一系列优秀的组件进行了整合。基于springboot构建,对我们熟悉spring的程序员来说,上手比较容易。通过一些简单的注解,我们就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。SpringCloud常用的有以下五个组件:服务发现——Netflix Eureka客服端负载均衡——Netflix Ribbon断路器——Netflix Hystrix服务网关——Netflix Zuul分布式配置——Spri

2021-01-19 21:36:40 259

原创 Soul网关源码学习【第四篇】-sofa示例

sofa示例演示什么是sofasofa是一个高可扩展性、高性能、生产级的 Java RPC 框架。在蚂蚁金服 SOFARPC 已经经历了十多年及五代版本的发展。SOFARPC 致力于简化应用之间的 RPC 调用,为应用提供方便透明、稳定高效的点对点远程服务调用方案。为了用户和开发者方便的进行功能扩展,SOFARPC 提供了丰富的模型抽象和可扩展接口,包括过滤器、路由、负载均衡等等。同时围绕 SOFARPC 框架及其周边组件提供丰富的微服务治理方案。功能特性透明化、高性能的远程服务调用支持多种

2021-01-18 21:32:19 280

原创 Soul网关源码学习【第三篇】-dubbo示例

Dubbo服务示例演示官方说明文档:https://dromara.org/zh-cn/docs/soul/user-dubbo.html启动示例项目dubbo以Zookeeper作为注册中心,所以需要本地先启动zookeeper。启动了zookeeper之后,接着还要在我们的后台管理启动dubbo的插件。以上两步完成之后,则可以启动我们的示例代码,直接run我们的TestAlibabaDubboApplication即可启动。启动完成之后,和Http协议同样,我们的Soul会主动发现我们的规

2021-01-17 01:56:08 193

原创 Soul网关源码学习【第二篇】-http示例

Http服务示例演示启动示例项目Soul网关源码中提供了各种服务协议的示例项目,放在soul-examples模块下。示例项目也是SpringBoot项目,我们直接启动SoulTestHttpApplication下的main方法即可。示例项目启动后,我们登录到Soul网关的后台管理系统,可以看到在divide插件下多了一个http的选择器,也多了一些规则。这些东西怎么来的?带着这个问题我们看一下它的源码。首先可以找到的是在示例项目的Controller中有如下两个注解,这两个注解中的接口名刚好

2021-01-16 01:45:33 176

原创 Soul网关源码学习【第一篇】-环境搭建

系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创

2021-01-15 01:35:45 260

原创 双指针算法

双指针算法总结双指针算法主要针对于一维数组,其核心思想就是把for的两重循环,即复杂度为O(n^2)优化成O(n)。下面以成水最多的容器这个题为例,详细理解双指针题目: 给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明: 你不能倾斜容器,且 n 的值至少为 2。题目来源LeetCode: http

2020-09-13 21:33:22 279

原创 HashCode与Equals的关系

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2020-08-01 10:26:54 309

空空如也

空空如也

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

TA关注的人

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