![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分布式微服务全家桶
文章平均质量分 97
分布式微服务全家桶
普通人zzz~
除了成功,别无选择
展开
-
Java知识体系个人总结
个人从事Java开发,平时会记录学习的知识点以及项目问题解决方案,个人整理了一些有关Java学习的知识内容(会面会慢慢增加哦(✿◡‿◡))。如有错误或者疏忽的地方,还望各位大佬评论指点,之后会及时更正,在此表示感激不尽。....................................原创 2021-01-19 18:17:02 · 1008 阅读 · 2 评论 -
DDD与微服务的千丝万缕
2004年埃里克·埃文斯发表了《领域驱动设计》这本书,DDD()由此诞生。DDD核心思想是通过领域驱动设计方法定义领域模型,从而确定业务和应用边界,保证业务模式和系统架构模式的一致性。DDD不是架构,而是一种架构设计方法论,它通过边界划分将复杂的业务领域简单化,从而设计出清晰的领域和应用边界,进而可以非常容易地实现架构演进。DDD主要包括战略设计和战术设计两大部分。战略设计主要从业务视角出发,建立业务领域模型,划分领域边界,建立通用语言的限界上下文,而限界上下文可以作为微服务划分的主要参考边界。原创 2023-10-21 10:39:36 · 1195 阅读 · 0 评论 -
dubbo源码解析之服务调用(通信)流程
@TOC在 dubbo源码解析之服务发布与注册 一文中,存在步骤 4.4.3 服务发布,通过 暴露一个本地端口,用于监听并处理客户端连接请求。如果采用Netty进行远程通信,最终会通创建一个 对象。在 中,主要是初始化并启动了一个 netty 服务器,然后构造了一个 Handler 处理链。在 构造函数中,存在代码 ,返回一个 ChannlHandler 处理链。最终,ChannelHandler 链路如下:其中 handler 为 中的成员变量。在 dubbo源码解析之服务发现 一文中原创 2022-09-03 23:03:19 · 485 阅读 · 0 评论 -
dubbo源码解析之服务发现
Spring 启动过程中,会扫描所有包目录 的 文件,将其对应的 装载到 Spring IoC 容器中,并调用调用其中的 方法,通过注册一个BeanDefinitionParser 解析器,完成Bean对象的注册,如下:DubboNamespaceHandlerdubbo 会向 Spring IoC 容器中,注入以上 Bean 对象,关于上面 Bean 对象的各种作用,请参照【Dubbo配置及属性详解】,这里不作过多阐述。本系列文章参照 dubbo-2.7.17 进行源码分析。其中 代码,会原创 2022-08-28 22:56:59 · 925 阅读 · 2 评论 -
dubbo源码解析之服务发布与注册
Spring 启动过程中,会扫描所有包目录 的 文件,将其对应的 装载到 Spring IoC 容器中,并调用调用其中的 方法,通过注册一个BeanDefinitionParser 解析器,完成Bean对象的注册,如下:DubboNamespaceHandlerdubbo 会向 Spring IoC 容器中,注入以上 Bean 对象,关于上面 Bean 对象的各种作用,请参照【Dubbo配置及属性详解】,这里不作过来阐述。本系列文章参照 dubbo-2.7.17 进行源码分析。其中 代码,会原创 2022-08-27 22:57:09 · 1532 阅读 · 0 评论 -
dubbo源码解析之dubbo配置解析
我们在 Spring 的 xml 配置文件里经常定义各种各样的配置(tx、bean、mvc、bean等等),以及集成第三方框架时,也会看到一些 Spring 之外的配置,例如 mybatis 的配置、dubbo 的配置、redis 的配置等等。看到这里,是否会引发我们思考,Spring 是如何解析这些 xml 配置文件呢???在 Spring 我们通过创建一个// 重启、刷新、重置 refresh();} } }在其构造方法中,会调用一个refresh()原创 2022-08-22 23:54:04 · 646 阅读 · 0 评论 -
dubbo源码解析之框架粗谈
本系列文件基于做源码参考,欢迎各位小伙伴一起探讨交流,有问题,欢迎评论区进行留言。好了,废话不多说,下面直接上硬货。下面我们根据 dubbo 官网提供的资料,进行 dubbo 框架的简单介绍。原创 2022-08-22 21:50:41 · 280 阅读 · 0 评论 -
Zookeeper原理解析-集群模式(Zab协议)
zookeeper是一个分布式协调中间件。通过 Zookeeper 可以实现分布式锁(节点唯一性、顺序节点)、注册中心(临时节点、持久化节点)、配置中心、Leader选举等等。zookeeper 采用文件目录树结构方式存储,一个目录代表一个节点(ZNode)。ZooKeeper 提供的命名空间与标准文件系统非常相似。名称是由斜杠(/)分隔的路径元素序列。ZooKeeper 命名空间中的每个节点都有一个路径标识。与标准文件系统不同的是,节点上除了存储数据内容外,还存储了数据节点本身的一些状态信息。原创 2022-08-20 21:59:15 · 245 阅读 · 0 评论 -
Zookeeper原理解析-单机模式
zookeeper是一个分布式协调中间件。通过 Zookeeper 可以实现分布式锁(节点唯一性、顺序节点)、注册中心(临时节点、持久化节点)、配置中心、Leader选举等等。zookeeper 采用文件目录树结构方式存储,一个目录代表一个节点(ZNode)。ZooKeeper 提供的命名空间与标准文件系统非常相似。名称是由斜杠(/)分隔的路径元素序列。ZooKeeper 命名空间中的每个节点都有一个路径标识。与标准文件系统不同的是,节点上除了存储数据内容外,还存储了数据节点本身的一些状态信息。......原创 2022-08-14 16:15:11 · 1820 阅读 · 0 评论 -
Alibaba Sentinel - 滑动窗口
为一个多线程并发统计的对象,核心原理就是:在多线程并发情况下,将线程竞争资源由一个,调整为多个(数组),以达到提高线程运行效率问题,最后统计整个数组值的总和。进行通过数量获取/添加、阻塞数量获取/添加、异常数量获取/添加、成功数量获取/添加、响应时间获取/添加等。接口,为 Sentinel 滑动窗口核心实现类,通过该类,可以获取到通过数量、阻塞数量、异常数量、成功数量、响应时间等。定义指标收集API,主要定义一个滑动窗口中成功的数量、异常数量、阻塞数量,TPS、响应时间等数据,代码如下:。...原创 2022-08-13 00:32:19 · 343 阅读 · 0 评论 -
Alibaba Sentinel - Slot chain解析
经过上面的分析,Sentinel通过各个 Slot 完成统计、限流、降级等逻辑,但Sentinel 是如何进行流量统计(线程数、RT、QPS等)的核心代码还未分析到,实际上,Sentinel 是通过。用于存储资源的统计信息,以及调用者信息,例如,该资源的RT、QPS、Thread count等,这些信息将用于作为多维度限流、降级的依据。负责收集资源的路径,并将这些资源的调用路径,以树状结构存储起来,用于根据调用路径来限流、降级。用于根据预设的限流规则已经前面的 slot 统计的状态,来进行流量控制。....原创 2022-08-10 21:33:02 · 716 阅读 · 0 评论 -
Alibaba Sentinel - 工作流程及原理解析
Sentinel的所有规则都可以在内存态中动态地查询及修改,修改之后立即生效。同时Sentinel也提供相关API,供您来定制自己的规则策略。流量控制规则、熔断降级规则、系统保护规则、来源访问控制规则和热点参数规则。下面以流量控制规则为例。//加载流量控制规则FlowRuleManager.loadRules(rules);}可以看到,在初始化规则的过程中,我们主要是创建了一个FlowRule对象,然后通过的方法加载规则。...原创 2022-07-28 21:54:43 · 600 阅读 · 0 评论 -
Alibaba Sentinel - 集群流量控制
集群流控可以解决流量不均匀导致总体限流效果不佳的问题。假设集群中有10台机器,我们给每台机器设置单机限流阈值为10QPS,理想情况下整个集群的限流阈值就为100QPS。不过实际情况下流量到每台机器可能会不均匀,会导致总量没有到的情况下某些机器就开始限流。因此仅靠单机维度去限制的话会无法精确地限制总体流量。而集群流控可以精确地控制整个集群的调用总量,结合单机限流兜底,可以更好地发挥流量控制的效果。集群流控客户端,用于向所属TokenServer通信请求token。...原创 2022-07-25 00:04:59 · 2277 阅读 · 0 评论 -
Alibaba Sentinel 基操
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。核心库(Java客户端)不依赖任何框架/库,能够运行于所有Java运行时环境,同时对Dubbo/SpringCloud等框架也有较好的支持。控制台方式一主流框架的默认适配主流框架的适配】。方式二抛出异常的方式定义资源SphU。......原创 2022-07-24 17:13:40 · 321 阅读 · 0 评论 -
Nacos注册中心集群数据一致性问题
也就是我们说的主从复制,主机的数据更新后根据配置和策略,自动同步到备机的master/slave机制,当主节点宕机后,集群会根据某种分布式一致性协议(Raft、gossip协议、ZAB协议等)选举出新的Master节点。Master负责读写,Slave只负责读。在很多组件中都有使用这种思想,比如Mysql主从架构、Redis主从架构、kafka里面的数据副本机制等等。常见的主从复制架构有:一主多从主主复制级联复制多主一从这也是比较常见的集群架构,各自职责如下:Leader:领导者,主要的工作任务有两原创 2022-07-17 22:35:43 · 4268 阅读 · 0 评论 -
Nacos-注册中心原理解析
服务注册与发现是微服务架构得以运转的核心功能,它不提供任何业务功能,仅仅用来进行服务的发现和注册,并对服务的健康状态进行监控和管理。其核心的工作原理:Nacos为服务注册与发现提供了一个SDK类 NamingService,通过该类,可以实现服务的注册与发现、订阅服务的动态变化、获取服务实例、获取注册中心的健康状态等等。其中,NamingService中的接口,可以分为以下几类:创建 NamingService:获取 NacosNamingService 中带Properties形参的构造函数,然后反射创原创 2022-07-12 22:38:03 · 5026 阅读 · 2 评论 -
Nacos-配置中心原理解析
如果你来实现一个配置中心,你觉得有哪些需求点?注意:本文档是基于 nacos 1.1.3 版本编写。基于Nacos SDK 调用2.1 NacosFactory.createConfigService(properties)通过代码分析,底层主要是获取带Properties参数的构造函数,通过反射创建 NacosConfigService 对象。NacosConfigService 构造函数。2.1.2 ClientWorkerClientWorker 是Nacos中长轮询机制的实现类。2.2原创 2022-07-10 17:21:12 · 6957 阅读 · 11 评论 -
Springboot之Jasypt配置文件加密/解密【源码分析】
Jasypt 是一个 java 库,可以使开发者不需要太多操作来给 Java 项目添加基本加密功能,而且不需要知道加密原理。Jasypt 为开发人员提供了一种简单易用加密功能,包括:密码认证、字符串加密等。那么Jasypt在 Springboot 项目中是如何运行的呢???在 Springboot 中,所以配置文件都是通过 Environment 来管理的,项目启动时,会先初始化 Environment 对象,然后通过 Springboot 自动装配机制,将 Environment 对象封装为 Proper原创 2022-06-22 14:32:43 · 3625 阅读 · 0 评论 -
Springboot之Jasypt配置文件加密/解密
前言在大多数项目中,配置文件中的 mysql 数据库密码、redis 密码等其他敏感性密码都是以明文形式存在,这种配置本身没有任何问题,但是,在某些情况下,可能会对公司造成不可挽救的损失,比如:某一天,小明因为加班过度,头脑发昏,不小心把公司项目上传到自己的 GitHub 仓库里面了,导致的后果就是,公司数据库用户名密码泄露,被某些大佬加以利用…所以,基于上面这种情况,加入配置文件中数据库用户密码等其他敏感信息都是经过加密处理过的呢???是不是可以大概率避免这种情况。Jasypt 因此应运而生。什么是Jas原创 2022-06-21 11:46:35 · 9432 阅读 · 4 评论 -
SpringBoot之SpringSecurity
Spring Security 是一个基于 Spring 的企业应用系统提供声明式的安全访问控制接口方案的安全框架。它提供了一组可以在 Spring 应用上下文中配置的Bean,充分利用了Spring核心组件 IoC,DI 和 AOP ,为应用系统提供声明书的安全访问控制功能,减少了企业系统安全控制大量重复代码的编写。新建一个SpringBoot项目,添加如下依赖2.2 启动访问重启访问即可跳转到对应的登录界面注意:系统启动的时候会自动创建一个账号是 user,密码随机的用户(密码显示在控制台)使用原创 2022-06-19 23:38:19 · 976 阅读 · 0 评论