dubbo 框架小结
1. dubbo:protocol
Dubbo缺省协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。
<dubbo:protocol name=“dubbo” port=“9090” server=“netty” client=“netty” codec=“dubbo”
serialization=“hessian2” charset=“UTF-8” threadpool=“fixed” threads=“100” queues=“0” iothreads=“9” buffer=“8192” accepts=“1000” payload=“8388608” />
1.1 payload:默认,provider 和 consumer 传递消息的大小不超过 8M,检查 payload 的调用栈如下:

1.2 线程池相关
threadpool:可选(fixed/cached)
threads:实质是 corePoolSize 和 maximumPoolSize
queues:线程池队列大小
1.3
2. dubbo:reference
2.1 与人联调时,采用直连方式连接对方主机,会很方便。
url:dubbo provider 地址
<dubbo:reference id="hello" interface="com.zhang.HelloService" proxy="jdk"
group="a" merger="true" check="true" retries="0"
url="dubbo://127.0.0.1:20880"/>
比较下直连和 zk 作为注册中心的区别,
直连:

连接 zk 注册中心:

2.2 负载均衡
loadbanlance:random(默认),roundrobin,consistenthash,leastactive
2.3 失败方案
cluster:常用的有 failover,failfast。failover 失败重试,failfast 只发起一次调用,失败就报错。
mock 是 cluster 的 wrapper:

2.4 check 属性
正常情况下,一个进程既是 consumer,又是 provider,也许它启动时,对应的 provider 还没有,通过设置 check="false",该进程可以正常启动,但是不能调用远程服务。
只有在调用 appCtx.getBean 时,才会触发 consumer 的 reference,如果在<dubbo:reference>标签中设置 check="false",即使没有 provider,consumer 也能 ref 成功,appCtx.getBean 正常返回。而如果设置 check="true",则会抛出异常。
那么,check 所起的作用到底是啥?判断网络是否连接,以及是否可写。
// boolean com.alibaba.dubbo.rpc.protocol.dubbo.DubboInvoker.isAvailable()
public boolean isAvailable() {
if (!super.isAvailable())
return false;
for (ExchangeClient client : clients){
if (client.isConnected() && !client.hasAttribute(Constants.CHANNEL_ATTRIBUTE_READONLY_KEY)){
//cannot write == not Available ?
return true ;
}
}
return false;
}
dubbo 框架小结的更多相关文章
- dubbo学习小结
dubbo学习小结 参考: https://blog.csdn.net/paul_wei2008/article/details/19355681 https://blog.csdn.net/liwe ...
- (转)dubbo框架基本分析
原文地址: https://my.oschina.net/zhengweishan/blog/698591 Dubbo架构基本分析 1. dubbo简单介绍 1.1 dubbo是什么 dubbo是一个 ...
- 基于Dubbo框架构建分布式服务(一)
Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配 ...
- 基于dubbo框架下的RPC通讯协议性能测试
一.前言 Dubbo RPC服务框架支持丰富的传输协议.序列化方式等通讯相关的配置和扩展.dubbo执行一次RPC请求的过程大致如下:消费者(Consumer)向注册中心(Registry)执行RPC ...
- dubbo框架----探索-大型系统架构设计(图解)
对于高并发系统的架构要求: 1. 负载均衡 2.高并发 3.高可用 4.面向服务架构 (Dubbo框架使用) 5.分布式缓存 (redis分布式缓存) 6.分布式全文检索 (solr分分布式全文检索) ...
- 基于Dubbo框架构建分布式服务
Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配 ...
- [转载] 基于Dubbo框架构建分布式服务
转载自http://shiyanjun.cn/archives/1075.html Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务 ...
- Dubbo框架应用之(四)--Dubbo基于Zookeeper实现分布式实例
上三篇文章主要是解决了概念性的补充和学习,充分结合实战来深入理解 入门实例解析 第一:provider-提供服务和相应的接口 创建DemoService接口 package com.unj.dubbo ...
- 【Dubbo篇】--Dubbo框架的使用
一.前述 Dubbo是一种提供高性能,透明化的RPC框架.是阿里开源的一个框架. 官网地址:http://dubbo.io/ 二.架构 组件解释: Provider: 提供者.发布服务的项目.Regi ...
随机推荐
- 测试驱动android
测试驱动android开发 在安卓模拟器或者真机上跑测试用例速度很慢.构建.部署.启动app,通常需要花费一分钟或者更久.这不是TDD(测试驱动开发)模式.Robolectric提供一种更好的方式. ...
- 33 Python 详解命令解析 - argparse--更加详细--转载
https://blog.csdn.net/lis_12/article/details/54618868 Python 详解命令行解析 - argparse Python 详解命令行解析 - arg ...
- 使用redux简单的实现加法运算(简单的状态改变)
描述该做啥?(action)!具体怎么做(reducer)!统一规划(store:包含reducer+所有的state) 上代码:index.ios.js import React, { Compon ...
- idea使用教程(2)
目录: 1. open和import的区别 2.修改虚拟机配置信息 3.安装目录和设置目录 1. open和import的区别 open:如果本身就是idea项目,则可以直接open打开; impor ...
- 排序——冒泡排序(java描述)
百度百科:冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小.首字母从A到Z)错误就把他们交 ...
- Calendar的使用注意
一.Calendar和GregorianCalendar的关系 GregorianCalendar的一点: // 初始化 Gregorian 日历 // 使用当前时间和日期 // 默认为本地时间和时区 ...
- 力扣(LeetCode)13. 罗马数字转整数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并 ...
- 关于repaint和reflow的笔记
repaint(重绘) ,repaint发生更改时,元素的外观被改变,且在没有改变布局的情况下发生,如改变outline,visibility,background color,box-shadow不 ...
- es6 - 函数 扩展
1. 可添加默认参数 function fn(name,age=17){ console.log(name+","+age); } fn("Amy",18); ...
- MySQL学习(十二)
视图 view 在查询中,我们经常把查询结果当成临时表来看, view是什么?view可以看成一张虚拟表,是表通过某种运算得到的一个投影. 表的变化会影响到视图 既然视图只是表的某种查询的投影,所以主 ...