想更好的使用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-刷一遍用户指南(三)的更多相关文章

  1. dubbo用户指南

    用户指南 入门 背景 需求 架构 用法 快速启动 服务提供者 服务消费者 依赖 必需依赖 缺省依赖 可选依赖 成熟度 功能成熟度 策略成熟度 配置 Xml配置 属性配置 注解配置 API配置 示例 启 ...

  2. dubbo用户指南-总结

    dubbo用户指南-总结 入门 背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用 ...

  3. scons用户指南翻译(附gcc/g++参数详解)

    scons用户指南 翻译 http://blog.csdn.net/andyelvis/article/category/948141 官网文档 http://www.scons.org/docume ...

  4. 【Flume NG用户指南】(1)设置

    作者:周邦涛(Timen) Email:zhoubangtao@gmail.com 转载请注明出处:  http://blog.csdn.net/zhoubangtao/article/details ...

  5. Android官方技术文档翻译——Gradle 插件用户指南(1-3)

    不知道是什么网络问题,上午一直发不了博客,其它页面基本正常,就是在写博客这里,每次打开都是响应超时.刚才用了VPN,顺便试了一下,竟然能够编辑.想是CDN之类的问题吧. 这次翻译的是Gradle 插件 ...

  6. Android官方技术文档翻译——Gradle 插件用户指南(5)

    昨晚把第五章未译完的几句话攻克了.只是第六章没怎么译,明后天又是周末,假设周一前第六章翻译完的话,周一再发第六章. 本文译自Android官方技术文档<Gradle Plugin User Gu ...

  7. 阿里云API网关(5)用户指南(调用 API)

    网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl 网关控制台: https ...

  8. Android官方技术文档翻译——Gradle 插件用户指南(4)

    最近赶项目,白天基本没时间,只有晚上在家的时候才能看一看.昨天晚上只翻译完了第四章,今天就只发第四章吧. 本文译自Android官方技术文档<Gradle Plugin User Guide&g ...

  9. Android官方技术文档翻译——Gradle 插件用户指南(7)

    本文译自Android官方技术文档<Gradle Plugin User Guide>,原文地址:http://tools.android.com/tech-docs/new-build- ...

随机推荐

  1. 一条SQL语句求前面记录的平均值

    有算法要求如下: For (i=1,i<=10,i++) { ta[i] = (t[1] + t[2] + ... + t[i]) / i; } 用一条SQL语句实现它: 分别用表变量 @ta ...

  2. B5090 组题 二分答案

    bzoj有毒,看不了自己哪错了...根本没法debug. 我到现在还是不知道自己代码为什么会T,二分次数也加限制了,但是还是T...救命啊!!! 题干: Description 著名出题人小Q的备忘录 ...

  3. Django html页面 'ascii' codec can't encode characters in position 8-10: ordinal not

    用Django开发的页面,之前用的是python3.X,后来又换成python2.X后各种报错,编码问题,于是在所有python文件开头加了编码:#coding=utf-8 但是后来发现,有些文件加了 ...

  4. 初学Hibernate杂乱总结

    1.如果在"one"方中(如部门)写有Set属性,但是没有在映射文件中配置,那么,在获取指定部门下的所有员工时,不会报错,但是,Set内的元素个数为0.输出为"[]&qu ...

  5. javascript事件绑定1-模拟jquery可爱的东西

    1.给对象添加事件attachEvent(兼容IE,不兼容ff.chrome) <html xmlns="http://www.w3.org/1999/xhtml"> ...

  6. 基于mybatis向oracle中插入数据的性能对比

    数据库表结构: 逐条插入sql语句: <insert id="insert" parameterType="com.Structure"> INSE ...

  7. jqurey事件 ready方法用法

    ready 在文档加载后激活函数 例: <html> <head> <script type="text/javascript" src=" ...

  8. 查看SqlServer连接所使用的端口号

    最近一个项目里用到了一个插件,在配置时发现连接数据库使用的是JDBC,输入URL时用到了端口号.印象中在使用Sqlserver时貌似没有提到端口号,在网上查阅了一下,记录下来省的忘了 方法是通过内置的 ...

  9. telerik:RadAsyncUpload 使用 时不执行上传事件的解决办法AsyncUpload1_FileUploaded(object sender, FileUploadedEventArgs e)

    一般是因为web.config没有配置的原因! 只要在<handlers>下加上 <add name="Telerik.Web.UI.WebResource" v ...

  10. JAVA语言编程格式高级规范

    作为一位开发人员,都要有严格的代码规范.为此我总结了一些代码规范案例. 目   录 1. 前言 2. 试用范围 3. JAVA命名规范-- 3.1 公共约定 3.2 Java文件.包 3.3 类.接口 ...