![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分布式
文章平均质量分 88
霁云HYY
博客中的很多内容都是取自公众号《儒猿技术窝》中的专栏,进行了一定的修改和总结,感兴趣的同学可以自行查找更加具体的专栏参考和学习
展开
-
Leaf(美团分布式ID生成服务)核心代码分析
Leaf源码简析原创 2022-10-07 23:31:47 · 831 阅读 · 0 评论 -
几种常见的分布式唯一ID生成方案简析
分布式唯一ID生成方案原创 2022-09-14 21:58:57 · 532 阅读 · 0 评论 -
Seata分布式事务简析
分布式事务框架Seata原创 2022-08-30 22:26:30 · 568 阅读 · 0 评论 -
分布式锁之Redisson实现
分布式锁相信大家都已经听过了,常见的方案呢,也就那么几种,今天我们来讲讲使用Redisson框架来实现redis的分布式锁那么第一个问题来了,为什么不直接使用redis,而是要来用Redisson框架呢?如果我们要使用redis来实现分布式锁的话,最low的一种方式就是直接set一个key,如果set成功了,那么就相当于持有了这把锁,其他的线程无法set成功,就只能不断的轮询尝试获取锁,这就是最基础的redis分布式锁原理设想一下以下的问题,当一个线程加锁成功了,然后他自己给挂了,那么之后的线程是原创 2020-10-27 22:36:33 · 361 阅读 · 0 评论 -
Zuul网关简析
之前讲过了其他的SpringCloud中的组件,今天来说一下最后一个基本组件Zuul首先简单讲一下Zuul的作用,他在微服务这个架构里面扮演的角色是网关,那么为什么我们需要网关呢?在微服务的架构中,可能会有非常多的服务,服务都会有各自的服务名称,如果前端需要调用后端的接口的话,那么如此纷繁复杂的服务名称肯定会让前端崩溃,这个时候我们就需要屏蔽掉这些服务所带来的影响,这时我们需要一个门面,也就是Zuul(类比一下slf4j,这也是一个经典的门面,调用slf4j,我们就不需要关心实际调用的日志框架是log原创 2020-10-23 15:34:52 · 410 阅读 · 0 评论 -
hystrix是如何实现熔断降级的
这篇文章将介绍feign与hystrix结合来实现调用的同时进行熔断降级防止服务雪崩使用feign的话自然少不了@FeignClient注解,而@FeignClient注解中除了最基本的name等属性之外,如果要整合hystrix一起使用的话,我们可能会用到fallbackFactory或者是fallback属性,所以一个@FeignClient注解看起来可能会是这样的@FeignClient(name = "ServiceName",fallbackFactory = MyFallbackFactor原创 2020-09-30 15:46:53 · 1146 阅读 · 0 评论 -
声明式服务调用feign解析
之前的文章已经分析过了ribbon的流程,如果我们只使用ribbon来进行服务调用的话,就需要依赖RestTemplate,看起来可能是这样的@RequestMapping(value = "/hello/{name}", method = RequestMethod.GET)public String greeting(@PathVariable("name") String name) { RestTemplate restTemplate = getRestTemplate(); re原创 2020-08-26 10:02:50 · 415 阅读 · 0 评论 -
ribbon实现负载均衡流程解析
ribbon的作用是负载均衡,这篇博客就来分析一下这里面的请求流程,里面贴的源码会比较多,如果看不惯的话,可以直接看最后的总结一般来说,使用原生ribbon而不搭配feign的话,使用的都是RestTemplate,通过这个RestTemplate 来访问其他的服务,看起来是这样的@LoadBalanced@Beanpublic RestTemplate getRestTemplate() { return new RestTemplate();}RestTemplate本身并没有负载原创 2020-08-16 20:40:02 · 775 阅读 · 2 评论 -
Eureka Server集群同步机制和数据同步的批处理机制
一般eureka server在部署的时候,都会选择集群部署,否则只用一个eureka server的话,万一出现了单点故障的话,那岂不是整个系统直接GG同时eureka server的集群也不是类似主从的概念,所有的eureka server都保存了全部的注册表信息,但是大家的角色都是一样的,eureka server中的一个节点叫做一个peer,可以认为eureka server集群中的节点都是peer to peer的模式将eureka的集群机制和zookeeper对比一下,zookeeper的集原创 2020-08-02 10:19:21 · 2286 阅读 · 1 评论 -
Eureka自我保护机制源码简析
Eureka的自我保护机制大家应该都知道了,当Eureka发现大量的服务实例都故障了,此时是不会下线所有的这些故障服务实例的。Eureka此时会认为是自己的网络故障了,导致无法接收到故障服务实例的心跳信息然后Eureka就会进入一个自我保护机制,不会再下线任何的服务实例了如果你在Eureka的控制台看到这段提示,说明就已经触发了自我保护机制首先来看一下是否触发自我保护机制的源码@Overridepublic boolean isLeaseExpirationEnabled() { // 这个是原创 2020-07-28 07:10:39 · 421 阅读 · 0 评论 -
Eureka服务实例下线机制
Eureka服务实例的摘除包含两种情况,第一种就是正常的服务实例下线,第二种是服务实例故障,然后自动摘除故障的服务实例先来说说第一种情况,原创 2020-07-22 16:07:29 · 1792 阅读 · 0 评论 -
Eureka的注册表拉取及多级缓存机制简析
只读缓存 + 读写缓存原创 2020-07-16 16:55:53 · 2075 阅读 · 0 评论 -
hystrix运行流程
(1)构建一个HystrixCommand或HystrixObservableCommand一个HystrixCommand或一个HystrixObservableCommand对象,代表了对某个依赖服务发起的一次请求。HystrixCommand主要用于仅仅会返回一个结果的调用。HystrixObservableCommand主要用于可能会返回多条结果的调用。(2)调用command的...原创 2019-11-23 09:45:20 · 322 阅读 · 0 评论 -
SpringCloud注册中心Eureka、Consul、Nacos简单对比
Spring Cloud注册中心对比Eureka:Netflix公司开源的注册中心,分为Eureka Server和Eureka Client,Eureka Server需要单独作为一个服务发布,启动之后可以在浏览器中打开,Eureka Client则是需要注册到Eureka Server上的服务。Eureka有自我保护机制,Eureka Server 在运行期间会去统计心跳失败比例在 15...原创 2019-07-30 17:05:21 · 7281 阅读 · 1 评论 -
Zookeeper分布式锁中的羊群效应及解决方案
羊群是一种很散乱的组织,平时在一起也是盲目地左冲右撞,但一旦有一只头羊动起来,其他的羊也会不假思索地一哄而上,全然不顾前面可能有狼或者不远处有更好的草。因此,“羊群效应”就是比喻人都有一种从众心理,从众心理很容易导致盲从,而盲从往往会陷入骗局或遭到失败。Zookeeper分布式锁场景中的羊群效应指的是所有的客户端都尝试对一个临时节点去加锁,当一个锁被占有的时候,其他的客户端都会监听这个临时节点。...原创 2019-08-19 21:14:02 · 4892 阅读 · 1 评论 -
Nacos服务注册中心简析
Nacos是阿里开源的一个新框架,在分布式的架构中,Nacos同时扮演着服务注册中心和配置中心的角色。今天主要讲的是Nacos作为服务注册中心。分布式中著名的CAP理论,任何一种服务注册中心都只能实现其中的两个特性,一般是AP(注重可用性)或者CP(注重一致性)。Eureka就是一个AP的服务注册中心,任何一个Eureka Server都是独立的,可存储所有的服务注册信息,即使任意一台Eure...原创 2019-09-01 12:02:28 · 4315 阅读 · 5 评论