Pigeon源码阅读
pigeon源码阅读学习笔记
jeanheo
这个作者很懒,什么都没留下…
展开
-
【Pigeon源码阅读】高可用之熔断降级实现原理(十四)
pigeon熔断降级当服务调用在短时间内出现大量的失败且失败率超过一定阀值时,可以通过配置手动或自动触发降级,调用端直接返回默认对象或抛出异常,不会将调用请求发到服务提供方,如果服务提供方恢复可用,客户端可以自动或手工解除降级。pigeon降级开关pigeon提供三种降级开关,来分别支持不同的降级策略:强制降级开关:在远程服务大量超时或其他不可用情况时,紧急时候进行设置,开启后,调用端会...原创 2019-02-06 10:22:51 · 1041 阅读 · 0 评论 -
【Pigeon源码阅读】高可用之故障注入实现原理(十三)
故障注入pigeon提供故障注入功能来模拟在调用出现异常时的处理测试,由客户端拦截器FaultInjectionFilter完成,具体有两种故障注入方式,分别为:EXCEPTION:抛出注入异常FaultInjectionException超时:尝试模拟请求特定时长,然后抛出RequestTimeoutException超时异常。相关的配置如下:pigeon.fault.injec...原创 2019-02-06 10:22:48 · 1270 阅读 · 1 评论 -
【Pigeon源码阅读】高可用之服务限流实现原理(十二)
pigeon服务限流pigeon支持4个纬度的限流策略,当客户端请求达到服务端统计的限流阈值时,会抛出RejectedException。具体限流策略包括:应用限流:限制某个客户端应用的最大QPS应用方法限流:限制某个客户端应用访问某个服务方法的最大QPS单机总限流:限制服务端单机的最大QPS方法线程数限流:限制单个方法最大访问线程数,避免因为单个方法异常流量过大阻塞线程池,导致其他方...原创 2019-02-06 10:22:45 · 516 阅读 · 0 评论 -
【Pigeon源码阅读】客户端负载均衡实现原理(十一)
文章目录客户端负载均衡入口负载均衡策略总体实现负载均衡策略实现AbstractLoadBalanceRandomLoadBalance 基于权重随机策略AutoawareLoadBalance 最小请求数策略RoundRobinLoadBalance 基于权重轮询策略WeightedAutoawareLoadBalance 基于权重最小请求数策略权重计算方法weightFactors 权重因子Re...原创 2019-02-06 10:22:28 · 639 阅读 · 0 评论 -
【Pigeon源码阅读】区域路由策略实现原理(十)
文章目录DefaultRouteManagerRegionPolicyManager区域路由基础配置配置初始化路由策略应用流程AutoSwitchRegionPolicy 自动切换区域路由路由规则源码实现WeightBasedRegionPolicy 基于权重区域路由路由规则源码实现ForceRegionPolicy 强制区域路由路由规则源码实现在几个集群访问策略中,都需要通过ClientMan...原创 2019-02-01 11:42:50 · 735 阅读 · 0 评论 -
【Pigeon源码阅读】客户端集群访问策略实现原理(九)
策略介绍和配置示例在pigeon开源版本中,目前实现了4种集群策略:failfast:调用服务的一个节点失败后抛出异常返回,可以同时配置重试timeoutRetry和retries属性failover:调用服务的一个节点失败后会尝试调用另外的一个节点,可以同时配置重试timeoutRetry和retries属性failsafe:调用服务的一个节点失败后不会抛出异常,返回null,后续版本...原创 2019-02-01 11:42:00 · 466 阅读 · 0 评论 -
【Pigeon源码阅读】RPC底层通信实现原理(八)
文章目录pigeon TCP协议格式粘包半包问题定长消息头格式默认协议消息格式统一协议消息格式消息体Netty3 Handler相关实现上下游传递原理相关实现ChannelHandlerContextOneToOneDecoder & OneToOneEncoderSimpleChannelHandlerChannelEventpigeon RPC通信的核心实现原理服务端实现FrameDe...原创 2019-02-01 11:38:57 · 1179 阅读 · 0 评论 -
【Pigeon源码阅读】服务提供响应流程解析(七)
文章目录Netty接收调用方请求过程RequestThreadPoolProcessor 请求线程池处理器拦截器链初始化原理线程池选取原理流量控制原理拦截器执行逻辑WriteResponseProcessFilterContextTransferProcessFilterExceptionProcessFilterSecurityFilterip黑白名单过滤请求app黑白名单过滤token鉴权Ga...原创 2019-02-01 11:36:52 · 597 阅读 · 1 评论 -
【Pigeon源码阅读】服务调用请求流程解析(六)
文章目录服务代理对象调用原理InvocationContext 调用上下文讲解pigeon自带拦截器解析RemoteCallMonitorInvokeFilterTraceFilterFaultInjectionFilterDegradationFilterClusterInvokeFilterGatewayInvokeFilterContextPrepareInvokeFilterSecurit...原创 2019-02-01 11:35:37 · 1052 阅读 · 0 评论 -
【Pigeon源码阅读】服务发现与调用初始化流程解析(五)
文章目录测试代码InvokerConfig定义服务调用方静态初始化流程ServiceFactory静态初始化ServiceFactory#getService方法实现调用方启动类InvokerBootStrap 初始化流程解析序列化类创建服务代理对象ServiceInvocationProxy注册负载均衡管理器区域路由策略发布客户端到注册中心基于Xml配置完成服务注册测试代码以下面最小化代码初...原创 2019-02-01 11:34:20 · 875 阅读 · 0 评论 -
【Pigeon源码阅读】服务注册发布流程(四)
文章目录测试代码ProviderConfig定义ServerConfig配置服务提供方静态初始化流程ServiceFactory静态初始化ProviderBootStrap初始化流程注册服务调用请求的处理拦截器初始化序列化工厂初始化注册管理器addService发布服务流程检查服务名ServicePublisher添加解析服务启动netty RPC服务器调用ServicePublisher发布服务...原创 2019-02-01 11:33:28 · 1135 阅读 · 0 评论 -
【Pigeon源码阅读】整合Spring注解解析原理(三)
文章目录pigeon使用方法pigeon注解解析器注册xml pigeon注解标签解析AnnotationBean扫描特定包@Service注解类原理AnnotationBean 注解@Service属性依赖注入原理AnnotationBean 注解@Reference属性依赖注入原理pigeon使用方法pigeon通过配置<pigeon:annotation package="com....原创 2019-02-01 11:21:08 · 1001 阅读 · 0 评论 -
【Pigeon源码阅读】整合Spring配置文件自定义命名空间解析(二)
文章目录1. xml文件配置示例2. spring源码解析自定义标签流程3. pigeon自定解析器注册流程4. pigeon 自定义解析器解析标签流程1. xml文件配置示例pigeon常用的配置方式是基于Spring Schema方式进行配置,pigeon自定义了一个xml命名空间解析器,用来解析以pigeon:xxx标志的xml配置,具体实例配置如下:<?xml version=...原创 2019-02-01 11:19:31 · 565 阅读 · 0 评论 -
【Pigeon源码阅读】项目总体结构介绍(一)
Pigeon简介引入Pigeon官方的简介:Pigeon是一个分布式服务通信框架(RPC),在美团点评内部广泛使用,是美团点评最基础的底层框架之一。主要特色除了支持spring schema等配置方式,也支持代码annotation方式发布服务、引用远程服务,并提供原生api接口的用法。支持http协议,方便非java应用调用pigeon的服务。序列化方式除了hessian,还支持...原创 2019-02-01 11:17:00 · 1429 阅读 · 0 评论