Netflix Internal Web Service Framework (aka NIWS)
Ribbon构建在hystrix,rxjava,rxnetty之上;
ribbon-ribbon模块
com.netflix.ribbon.proxy:生成代理对象,
com.netflix.ribbon.proxy.annotation和com.netflix.ribbon.proxy.processor:com.netflix.ribbon.proxy.processor处理com.netflix.ribbon.proxy.annotation包里面的定义的注解,为生成代理提供必要的信息;
Ribbon:Ribbon的入口,Ribbon提供了两种标准的使用方法,一个是使用HttpResourceGroup的Builder对象或者传入创建HttpResourceGroup必要的信息手动构建一个HttpResourceGroup对象,一个是将构建HttpResourceGroup的需要的信息使用对应的注解标注在要处理的类上;这两种方式的入口都是Ribbon类;
ResourceGroup:最最重要的一个类,Ribbon最终就是为一个指定名称的ResourceGroup生成一堆相关的对象,这些对象包括,ClientOptions,HttpHeaders,HttpClient等,这些都封装在ResourceGroup这个类中;可以查看其HttpResourceGroup实现;
CacheProvider:缓存“一样”的request
ribbon-croe模块
为Ribbon提供请求重试功能;
为Ribbon提供配置的管理;
ribbon-loadbalancer
提供了客户端负载均衡的抽象及其实现;
ribbon-httpclient
底层http请求的ApacheHttpClient实现;
依赖core和loadbalancer模块
ribbon-transport
底层http请求的Netty和RxJava实现;
依赖core和loadbalancer模块
参考
Netflix Ribbon 介绍
Announcing Ribbon: Tying the Netflix Mid-Tier Services Togethe
rribbon