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 框架小结的更多相关文章

  1. dubbo学习小结

    dubbo学习小结 参考: https://blog.csdn.net/paul_wei2008/article/details/19355681 https://blog.csdn.net/liwe ...

  2. (转)dubbo框架基本分析

    原文地址: https://my.oschina.net/zhengweishan/blog/698591 Dubbo架构基本分析 1. dubbo简单介绍 1.1 dubbo是什么 dubbo是一个 ...

  3. 基于Dubbo框架构建分布式服务(一)

    Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配 ...

  4. 基于dubbo框架下的RPC通讯协议性能测试

    一.前言 Dubbo RPC服务框架支持丰富的传输协议.序列化方式等通讯相关的配置和扩展.dubbo执行一次RPC请求的过程大致如下:消费者(Consumer)向注册中心(Registry)执行RPC ...

  5. dubbo框架----探索-大型系统架构设计(图解)

    对于高并发系统的架构要求: 1. 负载均衡 2.高并发 3.高可用 4.面向服务架构 (Dubbo框架使用) 5.分布式缓存 (redis分布式缓存) 6.分布式全文检索 (solr分分布式全文检索) ...

  6. 基于Dubbo框架构建分布式服务

    Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配 ...

  7. [转载] 基于Dubbo框架构建分布式服务

    转载自http://shiyanjun.cn/archives/1075.html Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务 ...

  8. Dubbo框架应用之(四)--Dubbo基于Zookeeper实现分布式实例

    上三篇文章主要是解决了概念性的补充和学习,充分结合实战来深入理解 入门实例解析 第一:provider-提供服务和相应的接口 创建DemoService接口 package com.unj.dubbo ...

  9. 【Dubbo篇】--Dubbo框架的使用

    一.前述 Dubbo是一种提供高性能,透明化的RPC框架.是阿里开源的一个框架. 官网地址:http://dubbo.io/ 二.架构 组件解释: Provider: 提供者.发布服务的项目.Regi ...

随机推荐

  1. Java处理微信公众号文章图片不显示微信

    http://blog.csdn.net/just4you/article/details/52933620

  2. 如何创建R包并将其发布在 CRAN / GitHub 上--转载

    转载--https://www.analyticsvidhya.com/blog/2017/03/create-packages-r-cran-github/ 什么是 R 包?我开始创建 R 包的原因 ...

  3. 每日质量NPM包拖拽文件上传_react-dropzone

    一.react-dropzone 官方定义: Simple HTML5-compliant drag'n'drop zone for files built with React.js. 理解: 一个 ...

  4. Codeforces 510 E. Fox And Dinner

    题目链接:http://codeforces.com/problemset/problem/510/E 乍一看和那啥魔术球问题有点神似啊/XD 其实是不一样的. 解决这道问题的关键在于发现若是相邻的两 ...

  5. 关于python的“重载”

    首先,关于python和java的区别: 1.Java有是通过方法名和方法列表来定义一个函数,python是通过方法名来定义一个函数(不允许方法名相同的函数存在) 2.java是通过定义多个相同方法名 ...

  6. 冒烟测试(smoke testing)

    冒烟测试(smoke testing),就是开发人员在个人版本的软件上执行目前的冒烟测试项目,确定新的程序代码不出故障.冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件基本功能正常 ...

  7. Python安装常见问题:zipimport.ZipImportError: can't decompress data; zlib not available 解决办法

    centos7安装python3.7.2时,报错,解决如下 yum -y install zlib* 参考: https://blog.csdn.net/u014749862/article/deta ...

  8. 使用bat文件执行sql文件

    test.bat mysql -uroot -p[password] < test.sql pause test.sql CREATE DATABASE IF NOT EXISTS test_d ...

  9. 力扣(LeetCode)219. 存在重复元素 II

    给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k. 示例 1: 输入: nums = ...

  10. myeclipse新建maven项目

    右键 new--->project   ---->maven project 出现bank 右键点击bank---->maven4Myeclipse---->new maven ...