dubbo-刷一遍用户指南(三)
想更好的使用dubbo,最好刷几遍用户指南,dubbo用户指南几乎包含了所有dubbo所有的特性
用户指南地址:https://dubbo.gitbooks.io/dubbo-user-book/demos/subscribe-only.html
以下是自己在用户指南各个项的理解 具体用户法查阅用户指南的对应项
启动时检查
concumer启动时 是否能够从注册中心订阅下来所有服务,如果没有服务则会抛出对应的异常(可关闭检查)
集群容错
dubbo多服务部署的情况下,如果消费者调用服务出错的容错方式
Failover Cluster 出错后 重试其他服务 可以设置重试次数
Failfast Cluster 失败后立即抛出错误
Failsafe Cluster出现异常时 直接忽略 当成功处理
Failback Cluster 失败后记录日志 并定时重发
Forking Cluster 广播调用集群所有服务,一个成功则返回,可以设置最大广播数量
Broadcast Cluster 广播调用所有 一个失败则失败
以上都是dubbo默认提供的实现,可以通过实现cluster扩展接口 自定义扩展容错
负载均衡
dubbo在多服务集群部署情况,负载均衡的策略
- Random LoadBalance 随机分配,可以对高性能的服务设置权重来更大机率随机到
- RoundRobin LoadBalance 轮询 , a b c服务 相互轮询调用,会出现b服务如果没有及时响应 后面都会分配到b服务 的问题
- LeastActive LoadBalance 最少活跃调用数 服务响应慢的会减少调用次数
ConsistentHash LoadBalance 根据调用参数 hash来定位到调用到哪个服务,相同参数总是命中同一个服务
以上都是默认提供负载均和策略 可以实现com.alibaba.dubbo.rpc.cluster.LoadBalance 自定义策略
线程模型
在处理io请求的时候线程池模型选择(比如哪些请求需要加入到线程池处理,线程池的选择 fiex cache 等 具体参考用户指南)
直连提供者
consumer直接配置provider地址订阅服务,不需要从zookeeper订阅
只订阅
provider配置不注册服务到注册中心,消费端通过直连订阅服务
只注册
多注册中心情况,配置某一服务不注册到他的注册中心 注册到另一注册中心(适用于 某注册中心还未部署)
静态服务
意思就是 配置服务发布的时候是禁用的,需要管理人员到dubboadmin手动开启服务
多协议
provider对不同的服务 使用不同的协议对外部暴露服务 比如大文件传输的用特定的协议
dubbo已经实现的协议
com.alibaba.dubbo.rpc.injvm.InjvmProtocol
com.alibaba.dubbo.rpc.dubbo.DubboProtocol
com.alibaba.dubbo.rpc.rmi.RmiProtocol
com.alibaba.dubbo.rpc.http.HttpProtocol
com.alibaba.dubbo.rpc.http.hessian.HessianProtocol
可以实现Protocol 自定义协议。dubbox支持reset协议 不知道是不是通过这个扩展接口实现的哇
多注册中心
比如一个机房在青岛 一个在广州 可以配置青岛和广州的注册中心,服务奖注册到这2各个注册中心
服务分组
指相同Service 有多个种实现,进行分组,consumer可以根据分组订阅对应的服务
多版本
相同服务发布多个版本,consumer根据需要订阅对应版本的服务
分组聚合
provider一个分组多个实现的时候 consumer可以同同时订阅2个服务,让后将结果聚合
参数验证
通过在Server接口的方法参数打上特定的验证注解 @NotNull // 不允许为空
Size(min = 1, max = 20) // 长度或大小范围 进行consumer调用的参数校验
结果缓存
dubbo对于provier的多种缓存策略
- lru 基于最近最少使用原则删除多余缓存,保持最热的数据被缓存。
- threadlocal 当前线程缓存,比如一个页面渲染,用到很多 portal,每个 portal 都要去查用户信息,通过线程缓存,可以减少这种多余访问。
cache
与 JSR107 集成,可以桥接各种缓存实现(不太懂)
以上是默认提供的缓存策略,可以通过扩展接口自定义实现
泛化引用
对于consumer 没有api实现和实体信息 ,传递参数和响应结果都以map结构存储
泛化实现
应用于泛化服务端没有接口api和实体信息 对服务的发布
回声测试
用于检查所有服务是否可用 服务均默认实现EchoService 获得容器所有实现了这个接口的bean 进行测试。详情查看用户指南
上下文信息
provider 和consumer可以根据上下文获取服务器信息和调用信息 ,闲情查看用户指南
隐式参数
通过RpcContext.setAttachment(key,value) 可以在服务间调用时进行隐式参数传递类似cookie
获取客户端隐式传入的参数,用于框架集成,不建议常规业务使用
String index = RpcContext.getContext().getAttachment("index");
异步调用
调用服务端立即响应 返回 future 当结果完成 在将值设置进去
本地调用
貌似是个伪协议。不会进行RPC consumer 自定义服务实现。 订阅服务优先订阅本地
参数回调
貌似用于用于服务端回调客户端回调接口实现类方法进行通知
事件通知
在调用之前 调用之后 生异常 的回调方法
本地方法
意思是指cusumer调用服务方法我们自己可以在本地实现一个代理。代理类可以对调用服务之前之后做一些操作,如cusumer做缓存
本地伪装
意思是指。服务端全部挂掉了之后 调用我们的实现类 实现数据返回。比如授权失败 服务器异常。而不会抛出一个异常
延迟暴露
指定延迟时间之后 对外部暴露服务 如服务初始化需要一定时间
并发控制
限制某个服务的并发访问最大并发数。。
连接控制
限制consumer数量
延迟连接
减少长连接数量。当调用发起时才建立连接
粘带连接
集群情况下。订阅者 总是向一个提供者发起连接,除非提供者挂了,才切换到另外一台。同事是默认开启延迟连接
令牌验证
服务端定义token ,注册中心进行控制 是否下发令牌给consumer,方式consumer绕过注册中心像provider发起连接
路由规则
注册中心,定义路由规则 哪些consumer能够订阅服务
服务降级
用于临时屏蔽某个服务
优雅停机
停机时不会立马停机,而是先标识服务为停机状态。不接受新的调用,新的调用来了之后让他们访问别的服务。然后等线程池里面的任务执行完了之后在停机
执行kill -9 PID 是不会优雅停机的
主机配置
貌似默认是配置内网ip 如果要配置公网ip 手动的配置
日志适配
貌似是配置日志 和日志输出策略
访问日志
记录每次调用的访问日志记录
线程自动dumb
当线程池满了之后 哪些线程在等待处理。的日志输出配置
netty4
新增对netty4的支持配置
ryo和FST
配置启用更搞笑的序列化
dubbo-刷一遍用户指南(三)的更多相关文章
- dubbo用户指南
用户指南 入门 背景 需求 架构 用法 快速启动 服务提供者 服务消费者 依赖 必需依赖 缺省依赖 可选依赖 成熟度 功能成熟度 策略成熟度 配置 Xml配置 属性配置 注解配置 API配置 示例 启 ...
- dubbo用户指南-总结
dubbo用户指南-总结 入门 背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用 ...
- scons用户指南翻译(附gcc/g++参数详解)
scons用户指南 翻译 http://blog.csdn.net/andyelvis/article/category/948141 官网文档 http://www.scons.org/docume ...
- 【Flume NG用户指南】(1)设置
作者:周邦涛(Timen) Email:zhoubangtao@gmail.com 转载请注明出处: http://blog.csdn.net/zhoubangtao/article/details ...
- Android官方技术文档翻译——Gradle 插件用户指南(1-3)
不知道是什么网络问题,上午一直发不了博客,其它页面基本正常,就是在写博客这里,每次打开都是响应超时.刚才用了VPN,顺便试了一下,竟然能够编辑.想是CDN之类的问题吧. 这次翻译的是Gradle 插件 ...
- Android官方技术文档翻译——Gradle 插件用户指南(5)
昨晚把第五章未译完的几句话攻克了.只是第六章没怎么译,明后天又是周末,假设周一前第六章翻译完的话,周一再发第六章. 本文译自Android官方技术文档<Gradle Plugin User Gu ...
- 阿里云API网关(5)用户指南(调用 API)
网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl 网关控制台: https ...
- Android官方技术文档翻译——Gradle 插件用户指南(4)
最近赶项目,白天基本没时间,只有晚上在家的时候才能看一看.昨天晚上只翻译完了第四章,今天就只发第四章吧. 本文译自Android官方技术文档<Gradle Plugin User Guide&g ...
- Android官方技术文档翻译——Gradle 插件用户指南(7)
本文译自Android官方技术文档<Gradle Plugin User Guide>,原文地址:http://tools.android.com/tech-docs/new-build- ...
随机推荐
- jQuery - 选中复选框则弹出提示框
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- jQuery - 当当网我的订单页
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- android.os.Process.killProcess(android.os.Process.myPid())与Activity生命周期的影响
如果通过finish方法结束了一个Activity,那么根据Activity的生命周期,则会自动调用Activity的销毁方法onDestory(),但是在项目中遇到这样的一个问题,就是Activi ...
- poi读取word2003(.doc文档)中的表格
poi读取word2003(.doc文档)中的表格 Jakarta POI 是apache的子项目,目标是处理ole2对象.它提供了一组操纵Windows文档的Java API.在网上见到好多通过po ...
- servlet中的中文乱码问题
老师总会说道:学完这个知识点,我们来谈谈中文乱码问题. 乱码的问题总是无处不在,处理不好会给用户带极差的用户体验. 那么我们来记录一下servlet中的乱码问题吧! 1.服务器向客户端响应时出现的乱码 ...
- codeforces 916E Jamie and Tree dfs序列化+线段树+LCA
E. Jamie and Tree time limit per test 2.5 seconds memory limit per test 256 megabytes input standard ...
- PCB决策引擎:多维决策表转决策树
准备设计一个PCB使用的决策引擎,需要用到决策表,而单维决策表不能满足业务要求, 这里主要是为了实现:用户编辑的是决策表,实际底层存储的是树结构,树的的各个节点挂上业务决策逻辑. 这里将多维决策表转决 ...
- POJ 2286 The Rotation Game IDA*
(再一次感谢学长幻灯片) ID A* 随便自己yy了一下. 额嗯 思路什么的都没有问题 就是改不对.. 无奈地删代码...边删边交. 删啊删 哎呦 AC了 ... ... ... 找删的那一段 . o ...
- Jquery 获取父页面下指定iframe里的指定元素
var div1=$("#iframe1",window.parent.document).contents().find("#div1");
- backface-visibility当元素不面向屏幕时是否可见
html代码 <h1>div1可见</h1> <div class="div1">div---1</div> <h1>d ...