分布式
文章平均质量分 83
爱coding的同学
即使生活过得平淡无奇,也不要忘记最初的梦想
展开
-
Sentinel : 服务容错(降级熔断、流量整形)
Sentinel 是 Spring Cloud Alibaba 的一款服务容错组件,我们也经常把它叫做“防流量哨兵”。它是阿里巴巴双十一大促核心场景的保护神,内置了丰富的服务容错应用场景。它以流量作为切入点,通过各种内外防控手段达到维持服务稳定性的目的。。原创 2023-05-14 18:40:31 · 454 阅读 · 0 评论 -
SpringBoot 2.0 + Nacos + Sentinel 流控规则集中存储
Sentinel 控制台将限流规则同步到了 Nacos Config 服务器来实现持久化。同时,在应用程序中,我们配置了一个 Sentinel Datasource,从 Nacos Config 服务器获取具体配置信息。在应用启动阶段,程序会主动从 Sentinel Datasource 获取限流规则配置。而在运行期,我们也可以在 Sentinel 控制台动态修改限流规则,应用程序会实时监听配置中心的数据变化,进而获取变更后的数据。原创 2023-05-14 12:30:00 · 498 阅读 · 0 评论 -
SpringCloud Nacos 注册配置中心
Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。原创 2023-05-13 22:44:26 · 425 阅读 · 0 评论 -
SpringCloud 路由网关鉴权熔断
Nacos:Nacos 支持基于 DNS 和基于 RPC 的服务发现(可以作为springcloud的注册中心)、动态配置服务(可以做配置中心)、动态 DNS 服务。Ribbon:服务间发起请求的时候,基于Ribbon做负载均衡,从一个服务的多台机器中选择一台Hystrix:发起请求是通过Hystrix的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题Gateway:Spring Cloud Gateway的目标提供统-的路由方式且基于 Filter链的方式原创 2023-05-13 22:29:04 · 627 阅读 · 0 评论 -
Dubbo Filter过滤器
Dubbo Filter 的入口是ProtocolFilterWrapper。ProtocolFilterWrapper 实现了 Protocol 接口。当调用ExtensionLoader的getExtension方法时,会做拦截处理,如果存在封装器,则返回封装器实现,而将真实实现通过构造方法注入到封装器中。举个简单的例子,当获取DubboProtocol的时候,会先经过ProtocolFilterWrapper进行包装。原创 2023-01-19 22:12:14 · 725 阅读 · 0 评论 -
Dubbo 服务引用
Dubbo 服务引用的时机有两个,第一个是在 Spring 容器调用 ReferenceBean 的 afterPropertiesSet 方法时引用服务,第二个是在 ReferenceBean 对应的服务被注入到其他类中时引用。这两个引用服务的时机区别在于,第一个是饿汉式的,第二个是懒汉式的。默认情况下,Dubbo 使用懒汉式引用服务。如果需要使用饿汉式,可通过配置 的 init 属性开启。下面我们按照 Dubbo 默认配置进行分析。原创 2023-01-17 22:33:42 · 867 阅读 · 0 评论 -
Dubbo 自适应SPI
在 Dubbo 中,很多拓展都是通过 SPI 机制进行加载的,比如 Protocol、Cluster、LoadBalance 等。有时,有些拓展并不想在框架启动阶段被加载,而是希望在拓展方法被调用时,根据运行时参数进行加载。这听起来有些矛盾。拓展未被加载,那么拓展方法就无法被调用(静态方法除外)。拓展方法未被调用,拓展就无法被加载。对于这个矛盾的问题,Dubbo 通过自适应拓展机制很好的解决了。原创 2023-01-16 21:43:37 · 392 阅读 · 0 评论 -
Dubbo调用
Dubbo 服务调用过程比较复杂,包含众多步骤,比如发送请求、编解码、服务降级、过滤器链处理、序列化、线程派发以及响应请求等步骤。原创 2023-01-16 21:25:15 · 1797 阅读 · 0 评论 -
Dubbo 服务暴露
本篇文章详细分析 Dubbo 服务导出过程,包括配置检测,URL 组装,Invoker 创建过程、导出服务以及注册,服务等等。原创 2023-01-15 23:22:03 · 604 阅读 · 0 评论 -
Dubbo异常处理
在使用Dubbo进行系统间的调用的时候,我们有时候可能会遇到这样的问题:服务提供者抛出了自定义的业务异常,但是服务消费者接收到的却是RunTimeException。这是为什么呢?这就得从Dubbo的ExceptionFilter说起。原创 2023-01-13 22:39:26 · 1499 阅读 · 0 评论 -
Dubbo泛化调用
场景一:我们要搭建一个统一的测试平台,可以让各个业务方在测试平台中通过输入接口、分组名、方法名以及参数值,在线测试自己发布的 RPC 服务。这时我们就有一个问题要解决,我们搭建统一的测试平台实际上是作为各个 RPC 服务的调用端,而在 RPC 框架的使用中,调用端是需要依赖服务提供方提供的接口 API 的,而统一测试平台不可能依赖所有服务提供方的接口 API。我们不能因为每有一个新的服务发布,就去修改平台的代码以及重新上线。这时我们就需要让调用端在没有服务提供方提供接口的情况下,仍然可以正常地发起 RPC原创 2023-01-13 22:28:32 · 1373 阅读 · 0 评论 -
Dubbo服务降级
RPC 是解决分布式系统通信问题的一大利器,而分布式系统的一大特点就是高并发,所以说 RPC 也会面临高并发的场景。在这样的情况下,我们提供服务的每个服务节点就都可能由于访问量过大而引起一系列的问题,比如业务处理耗时过长、CPU 飘高、频繁 Full GC 以及服务进程直接宕机等等。但是在生产环境中,我们要保证服务的稳定性和高可用性,这时我们就需要业务进行自我保护,从而保证在高访问量、高并发的场景下,应用系统依然稳定,服务依然高可用。原创 2023-01-12 21:06:48 · 1449 阅读 · 0 评论 -
Dubbo集群容错
集群调用失败时,Dubbo 提供的容错方案。在集群调用失败时,Dubbo 提供了多种容错方案,缺省为 failover 重试。原创 2023-01-12 20:44:42 · 955 阅读 · 0 评论 -
实现一个简单的RPC远程过程调用(附源码)
实现一个简单的RPC远程过程调用(附源码)。原创 2023-01-11 19:43:00 · 1155 阅读 · 0 评论 -
Duboo优雅关闭(附源码分析)
当Dubbo服务提供方要上线的时候,一般是通过部署系统完成实例重启。在这个过程中,服务提供方的团队并不会事先告诉调用方他们需要操作哪些机器,从而让调用方去事先切走流量。而对调用方来说,它也无法预测到服务提供方要对哪些机器重启上线,因此负载均衡就有可能把要正在重启的机器选出来,这样就会导致把请求发送到正在重启中的机器里面,从而导致调用方不能拿到正确的响应结果。因此要设置优雅关闭,避免响应异常问题。原创 2023-01-06 22:42:22 · 708 阅读 · 0 评论 -
Zookeeper概述与CAP联系
Zookeeper是一个分布式服务框架,它经常用来解决分布式应用中经常遇到的一些数据管理问题。如:统一命名服务,集群管理,分布式应用的配置项管理,等等。Zookeeper是一个数据库Zookeeper是一个具有文件系统特点的数据库Zookeeper是一个解决了数据一致性问题的分布式数据库(CP)Zookeeper是一个具有发布订阅功能的分布式数据库。原创 2023-01-06 22:26:20 · 697 阅读 · 0 评论 -
Dubbo优雅启动(附源码分析)
Dubbo启动预热,简单来说,就是让刚启动的服务提供方应用不承担全部的流量,而是让它被调用的次数随着时间的移动慢慢增加,最终让流量缓和地增加到跟已经运行一段时间后的水平一样。原创 2023-01-05 19:01:49 · 835 阅读 · 0 评论 -
RPC与GRPC快速上手(附demo源码)
RPC的核心在于使进程间通信像进程内通信一样简单,更直白一点调用其他应用的方法好似调用本地方法一样简单方便。进程内之所以方便是因为写操作系统的人把复杂的事情给处理了,让业务研发专注于业务逻辑。进程间的调用简单是因为写RPC框架的人把复杂的工作给做了,使业务研发继续专注于业务逻辑。本文着重于RPC与GRPC快速上手实验,附demo源码。原创 2023-01-05 18:45:04 · 1014 阅读 · 1 评论 -
分布式ID之雪花算法
分布式ID雪花算法SnowFlake的优点是,整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由数据中心ID和机器ID作区分),并且效率较高,经测试,SnowFlake每秒能够产生26万ID左右。但是依赖与系统时间的一致性,如果系统时间被回调,或者改变,可能会造成id冲突或者重复。实际中我们的机房并没有那么多,我们可以改进改算法,将10bit的机器id优化,成业务表或者和我们系统相关的业务。其实对于分布式ID的生成策略。无论是我们上述提到的哪一种。无非需要具有以下两种特点。自增的、不重复的。原创 2023-01-04 20:38:54 · 982 阅读 · 0 评论 -
Zookeeper实现分布式锁
一:背景在分布式锁之redis实现分布式锁一文中,已经说明了redis如何实现分布式锁。但是其实使用redis实现分布式锁还是比较的麻烦,我们可以利用zookeeper实现分布式锁。zookeeper的设计初衷就是为分布式事务服务的。二:实现方式本来想写一篇文章的,但是发现前辈已经写好了。所以朋友们可以参考以下的文章。如何用Zookeeper实现分布式锁?基于zookeeper实现分布式锁利用Zo...原创 2018-06-04 22:08:38 · 417 阅读 · 0 评论 -
分布式锁之redis实现分布式锁
一:背景我们知道Java中给我们提供了各种各样的锁,像syschronized,lock等。但是这些只适用于单机操作。但是,一般的系统都是分布式的,所以,此时Jdk提供的锁就不适用了。所以,我们可以使用分布式锁。二:使用分布式锁的几种方式第一:Memcached分布式锁利用Memcached的add命令。此命令是原子性操作,只有key不存在的情况下,才能add成功,也就意味着线程得到了锁。第二:R...转载 2018-06-04 19:20:47 · 319 阅读 · 0 评论