![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
微服务
普通网友
这个作者很懒,什么都没留下…
展开
-
Nacos 源码分析(五) 一致性协议Distro
EphemeralConsistencyService 接口这个为临时数据的一致性协议distro协议的关键点: distro协议是为了注册中心而创造出的协议; 客户端与服务端有两个重要的交互,服务注册与心跳发送; 客户端以服务为维度向服务端注册,注册后每隔一段时间向服务端发送一次心跳,心跳包需要带上注册服务的全部信息,在客户端看来,服务端节点对等,所以请求的...原创 2020-05-07 20:33:16 · 2527 阅读 · 0 评论 -
Spring Cloud 知识点01
什么是Spring CloudSpring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、智能路由、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合...原创 2020-03-22 21:58:46 · 64 阅读 · 0 评论 -
分布式追踪 SkyWalking 源码分析一 Agent初始化
还是先看代码工程结构代码2551个类,总行数19万左右,除去非核心功能,核心功能代码量不大SkyWalking Agent 基于JavaAgent机制,实现应用透明接入 SkyWalking 。agent启动入口类SkyWalkingAgent1.初始化agent配置2.加载agent插件,创建出pluginFinder3.根据byteBuddy,...原创 2019-12-21 21:29:45 · 383 阅读 · 0 评论 -
Alibaba Sentinel 源码分析(5) 原理分析, dashboard规则配置
pull 模式规则持久化原理那我们有什么办法能解决这个问题呢,其实很简单,那就是把原本保存在 RuleManager 内存中的规则,持久化一份副本出去。这样下次客户端重启后,可以从持久化的副本中把数据 load 进内存中,这样就不会丢失规则了,如下图所示:目前 Sentinel 中默认实现了5种规则持久化的方式,分别是:file、redis、nacos、zk和a...原创 2020-01-27 18:16:35 · 317 阅读 · 0 评论 -
Alibaba Sentinel 源码分析(4) core 核心功能 降级
还是先来看ExceptionRatioDegradeDemo1.启动tick 启动线程timer进行计时2.初始化规则rule,设置异常比例0.13.调用SphU.entry4.还是获取slot的chain5.checkDegrade,判断该请求是否需要降级6.先获取降级的规则degradeRule,如果获取为null,直接return返回;循环每个降级的r...原创 2020-01-27 17:44:50 · 179 阅读 · 0 评论 -
Alibaba Sentinel 源码分析(3) core 核心功能 限流(二)
限流策略分析基于调用关系的流量控制,也有三种情况可以选择:STRATEGY_DIRECT根据调用方进行限流。ContextUtil.enter(resourceName, origin) 方法中的 origin 参数标明了调用方的身份。如果 strategy 选择了DIRECT ,则还需要根据限流规则中的 limitApp 字段根据调用方在不同的场景中进行流量控制,包括有:”所有调用...原创 2020-01-27 16:23:35 · 257 阅读 · 0 评论 -
Alibaba Sentinel 源码分析(2) core 核心功能 限流(一)
先来看下和Hystrix的对比从一个基本的demo 看起FlowQpsDemo, 直接看程序入口main1.初始化流量统计的规则 rule2.计时 tick() 方法3.模拟流量,调用simulateTraffic可以看到,Sentinel 核心功能,都是依赖于降级,限流的各种规则。都定义在slots目录下,分为鉴权authority,降级degrade和...原创 2020-01-26 21:58:29 · 812 阅读 · 0 评论 -
Alibaba Sentinel 源码分析(1) 代码结构概述 && 基本工作流程
总共代码872个java文件,代码总行数83596下面看一下各个子工程的功能1.sentinel-adapter : 对各种框架,中间件的支持。包括dubbo,网关gateway,grpc,reactor,spring-cloud-gateway webflux,webmvc,servlet和zuul2.senti...原创 2020-01-26 18:50:15 · 391 阅读 · 0 评论 -
Nacos 源码分析 (四) 一致性实现 raft
先介绍下raft 选举算法在Raft中,节点有三种角色:Leader:负责接收客户端的请求Candidate:用于选举Leader的一种角色Follower:负责响应来自Leader或者Candidate的请求选举分为两个阶段:服务启动的时候leader挂了的时候所有节点启动的时候,都是follower状态。 如果在一段时间内如果没有收到leader的心跳(可能是没有lea...原创 2020-01-26 12:06:22 · 603 阅读 · 0 评论 -
分布式追踪 SkyWalking 学习
整体主要分为三个部分:1.skywalking-collector:链路数据归集器,数据可以保存在H2或ElasticSearch2.skywalking-web:web的可视化管理后台,可以查看归集的数据3.skywalking-agent:探针,用来收集和推送数据到归集器特点性能好:针对单实例5000tps的应用,在全量采集的情况下,只增加 10% 的CPU开销 支持...原创 2019-12-21 18:13:33 · 874 阅读 · 0 评论 -
网关对比 一
原创 2019-12-21 17:25:01 · 318 阅读 · 0 评论 -
分布式链路追踪 对比 二
pinpoint zipkin jaeger skywalking OpenTracing兼容 否 是 是 是 客户端支持语言 java、php ...原创 2019-12-21 16:43:59 · 731 阅读 · 0 评论 -
分布式链路追踪 对比 一
从上表可以看出,在三种链路监控组件中,skywalking的探针对吞吐量的影响最小,zipkin的吞吐量居中。pinpoint的探针对吞吐量的影响较为明显,在500并发用户时,测试服务的吞吐量从1385降低到774,影响很大。然后再看下CPU和memory的影响,在内部服务器进行的压测,对CPU和memory的影响都差不多在10%之内。分布式调用跟踪系统的设计(1)分布...原创 2019-12-20 21:15:21 · 2024 阅读 · 0 评论 -
Spring Cloud Hystrix 源码分析04 Metrics 收集 && 熔断实现
1. rxjava1.2Observable.shareObservable.share()属于连接操作,组合操作。Observable.publish( ),将一个Observable转换为一个ConnectableObservable(可连接的Observable)ConnectableObservable.refCount( ),让一个ConnectableObserva...原创 2019-11-03 18:07:04 · 290 阅读 · 0 评论 -
分布式系统 注册中心对比
解决的问题在一个分布式系统中,服务注册与发现组件主要解决两个问题:服务注册和服务发现。服务注册:服务实例将自身服务信息注册到注册中心。这部分服务信息包括服务所在主机IP和提供服务的Port,以及暴露服务自身状态以及访问协议等信息。 服务发现:服务实例请求注册中心获取所依赖服务信息。服务实例通过注册中心,获取到注册到其中的服务实例的信息,通过这些信息去请求它们提供的服务。除此之外,服务注...原创 2019-12-08 21:43:41 · 754 阅读 · 0 评论 -
zipkin 源码分析04 zipkin-storage
存储原创 2019-11-09 20:55:25 · 179 阅读 · 0 评论 -
zipkin 源码分析03 zipkin-collector
支持activemq,kafka和rabbitmq的收集 前面介绍,使用OkHttpSender来上报Trace信息给Zipkin,这在生产环境中,当业务量比较大的时候,可能会成为一个性能瓶颈,这一篇博文我们来使用KafkaSender将Trace信息先写入到Kafka中,然后Zipkin使用KafkaCollector从Kafka中收集Span信息。在Brave配置中需要将Sender...原创 2019-11-09 20:52:18 · 416 阅读 · 0 评论 -
zipkin 源码分析02 zipkin-server
在SpringBoot 中可以通过使用@EnableZipkinServer注解,来启动zipkin各个子目录下,是各个组件的配置各种配置加载相关zipkinQueryApiV2, 提供前端UI查询trace数据的http接口...原创 2019-11-09 19:05:34 · 225 阅读 · 0 评论 -
zipkin 源码分析01 源码结构
benchmarks 测试zipkin 默认使用zipkin2codec : 编解码器internal : 编码器,writer,readerstorage: 存储实现zipkin的收集器 : 支持activemq,kafka和rabbitmqzipkin-junit: 单元测试zipkin-lens : 前端UI实现zipkin-server : ...原创 2019-11-09 17:45:39 · 206 阅读 · 0 评论 -
分布式跟踪系统学习 zipkin的客户端Brave 分析
Brave源码分析-Tracer和SpanBrave是Java版的Zipkin客户端,它将收集的跟踪信息,以Span的形式上报给Zipkin系统。Span首先看下Span的实现类RealSpan该类依赖几个核心类Recorder,用于记录SpanReporter,用于上报Span给ZipkinMutableSpan,Span的包装类,提供各种API操作SpanMuta...原创 2019-11-09 16:55:20 · 476 阅读 · 0 评论 -
分布式跟踪系统学习 zipkin + Spring Cloud Sleuth
原创 2019-11-09 10:32:37 · 115 阅读 · 0 评论 -
Eureka 学习 源码分析11 集群同步
Eureka-Server 集群不区分主从节点或者Primary & Secondary 节点,所有节点相同角色( 也就是没有角色 ),完全对等。 Eureka-Client 可以向任意Eureka-Client 发起任意读写操作,Eureka-Server 将操作复制到另外的 Eureka-Server 以达到最终一致性。注意,Eureka-Server 是选择了 AP 的组件...原创 2019-10-27 15:26:07 · 197 阅读 · 0 评论 -
Eureka 学习 源码分析05 应用实例续租
2. Eureka-Client 发起续租Eureka-Client 向 Eureka-Server 发起注册应用实例成功后获得租约 ( Lease )。Eureka-Client固定间隔向 Eureka-Server 发起续租( renew ),避免租约过期。默认情况下,租约有效期为 90 秒,续租频率为 30 秒。两者比例为 1 : 3 ,保证在网络异常等情况下,有三次重试的机...原创 2019-10-26 11:11:21 · 131 阅读 · 0 评论 -
Eureka 学习 源码分析04 应用实例注册
Eureka-Client 发起注册当 InstanceInfo 的状态(status) 属性发生变化时,并且配置eureka.shouldOnDemandUpdateStatusChange = true时,立即向 Eureka-Server 注册。因为状态属性非常重要,一般情况下建议开启,当然默认情况也是开启的。 看构造方法 1.如果入参args不为null,则使...原创 2019-10-20 23:10:53 · 130 阅读 · 0 评论 -
Eureka 学习 源码分析03 server初始化,启动
2. EurekaServerConfigcom.netflix.eureka.EurekaServerConfig,Eureka-Server配置接口。server短时间丢失过多客户端时,自我保护模式开启,不再删除服务注册表中的数据;网络故障恢复,Eureka server节点会自动退出自我保护模式+++++++++++++++++++++++++++++...原创 2019-10-14 23:23:08 · 120 阅读 · 0 评论 -
Eureka 学习 04 源码分析02 Client初始化
核心接口EurekaInstanceConfig创建EurekaInstanceConfig对象 使用 EurekaInstanceConfig对象创建InstanceInfo对象 使用 EurekaInstanceConfig对象 + InstanceInfo对象创建ApplicationInfoManager对象 创建EurekaClientConfig对象...原创 2019-10-14 09:33:27 · 92 阅读 · 0 评论 -
Eureka 学习 03 源码分析01 代码结构
既可以是服务提供者,又是服务消费者eureka-client :实现了Eureka 的客户端 appinfo :Eureka-Client 的应用配置。此处的应用指的就是上文提到的 Application Provider,Application Consumer。 包代码结构如下图 discovery :Eur...原创 2019-10-13 19:45:18 · 107 阅读 · 0 评论 -
Eureka 学习 02
基于图书 重新定义 Spring Cloud实战SOA 架构时代 : 服务提供方A服务,自己维护ip实例,暴露统一的内网域名给消费者去消费,这样B服务只需要配置一个内网服务域名即可。A服务自己的Nginx则自己维护ip实例微服务时代: 服务注册中心作为一个标配的分布式服务组件,网关等都从服务注册中心获取相关服务的实例信息,实现动态路由2....原创 2019-10-12 21:30:43 · 429 阅读 · 0 评论 -
Eureka 学习 01
二、创建服务注册中心在这里,我还是采用Eureka作为服务注册与发现的组件,至于Consul 之后会出文章详细介绍2.1 首先创建一个maven主工程。首先创建一个主Maven工程,在其pom文件引入依赖,spring Boot版本为2.0.3.RELEASE,Spring Cloud版本为Finchley.RELEASE。这个pom文件作为父pom文件,起到依赖版本控制的作用,其他m...原创 2019-10-12 20:31:13 · 119 阅读 · 0 评论