- 浏览: 2652604 次
- 来自: 杭州
文章分类
- 全部博客 (1188)
- webwork (4)
- 网摘 (18)
- java (103)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (14)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (7)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介 -
107x:
不错,谢谢!
Python机器学习库
http://code.alibabatech.com/wiki/display/dubbo/Protocol+Reference
Dubbo缺省协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。
缺省协议,使用基于netty3.2.2+hessian3.2.1交互。
连接个数:单连接
连接方式:长连接
传输协议:TCP
传输方式:NIO异步传输
序列化:Hessian二进制序列化
适用范围:传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一消费者无法压满提供者,尽量不要用dubbo协议传输大文件或超大字符串。
适用场景:常规远程服务方法调用
为什么要消费者比提供者个数多:
因dubbo协议采用单一长连接,
假设网络为千兆网卡(1024Mbit=128MByte),
根据测试经验数据每条连接最多只能压满7MByte(不同的环境可能不一样,供参考),
理论上1个服务提供者需要20个服务消费者才能压满网卡。
为什么不能传大包:
因dubbo协议采用单一长连接,
如果每次请求的数据包大小为500KByte,假设网络为千兆网卡(1024Mbit=128MByte),每条连接最大7MByte(不同的环境可能不一样,供参考),
单个服务提供者的TPS(每秒处理事务数)最大为:128MByte / 500KByte = 262。
单个消费者调用单个服务提供者的TPS(每秒处理事务数)最大为:7MByte / 500KByte = 14。
如果能接受,可以考虑使用,否则网络将成为瓶颈。
为什么采用异步单一长连接:
因为服务的现状大都是服务提供者少,通常只有几台机器,
而服务的消费者多,可能整个网站都在访问该服务,
比如Morgan的提供者只有6台提供者,却有上百台消费者,每天有1.5亿次调用,
如果采用常规的hessian服务,服务提供者很容易就被压跨,
通过单一连接,保证单一消费者不会压死提供者,
长连接,减少连接握手验证等,
并使用异步IO,复用线程池,防止C10K问题。
(1) 约束:
参数及返回值需实现Serializable接口
参数及返回值需有无参构造函数(可以是private的)或者有参构造所有函数允许传入null值。
参数及返回值不能自定义实现List, Map, Number, Date, Calendar等接口,只能用JDK自带的实现,因为hessian会做特殊处理,自定义实现类中的属性值都会丢失。
Hessian序列化,只传成员属性值和值的类型,不传方法或静态变量,兼容情况:(由吴亚军提供)
数据通讯 情况 结果
A->B 类A多一种 属性(或者说类B少一种 属性) 不抛异常,A多的那 个属性的值,B没有, 其他正常
A->B 枚举A多一种 枚举(或者说B少一种 枚举),A使用多 出来的枚举进行传输 抛异常
A->B 枚举A多一种 枚举(或者说B少一种 枚举),A不使用 多出来的枚举进行传输 不抛异常,B正常接 收数据
A->B A和B的属性 名相同,但类型不相同 抛异常
A->B serialId 不相同 正常传输
总结:会抛异常的情况:枚 举值一边多一种,一边少一种,正好使用了差别的那种,或者属性名相同,类型不同
接口增加方法,对客户端无影响,如果该方法不是客户端需要的,客户端不需要重新部署;
输入参数和结果集中增加属性,对客户端无影响,如果客户端并不需要新属性,不用重新
部署;
输入参数和结果集属性名变化,对客户端序列化无影响,但是如果客户端不重新部署,不管输入还是输
发表评论
-
如何更好地学习dubbo源代码
2018-09-14 17:28 513http://jm.taobao.org/2013/11/ ... -
一种队列限流方案
2014-08-26 19:29 1787参考:http://my.oschina.net/le284 ... -
dubbo入门
2013-07-02 10:00 22103dubbo是阿里巴巴开源的 ... -
dubbo性能测试报告
2012-10-04 12:07 16252Scene a、本次性能测试,测试了dubbo2.0所有支持 ... -
dubbo导致死锁问题
2012-09-27 14:03 7593延迟暴露 (+ ) (# ) 如果 ... -
服务化需要考虑的问题
2012-09-27 13:36 1686在大规模服务化之前,应用可能只是通过RMI或Hessian等工 ... -
防痴呆设计
2012-09-27 13:34 1288最近有点痴呆,因为解 ...
相关推荐
`Dubbo_RPC_Features.pdf`揭示了Dubbo的RPC特性,包括远程过程调用的基本原理、协议支持(如Dubbo协议、HTTP、Hessian等)、序列化机制,以及传输优化策略。这些内容对理解Dubbo如何高效地处理网络通信至关重要。 `...
在`dubbo.properties`配置文件中,可以设置服务使用的通信协议,例如默认的dubbo协议。不同的协议会影响服务调用的性能和特性。 5. **负载均衡(Load Balance)** Dubbo内置了几种负载均衡策略,如随机、轮询、...
【压缩包子文件的文件名称列表】"dubbo-master"通常表示这是Dubbo项目的主分支或者完整版本,可能包含了Dubbo的所有模块,包括核心库、服务治理模块、协议支持、SPI扩展机制、以及相关的示例和文档。 深入讲解这些...
Dubbo支持多种协议,如Dubbo协议、HTTP协议、RMI等,可以根据实际需求选择合适的协议。 三、服务提供者 服务提供者是实现服务接口并对外提供服务的实体。在启动时,服务提供者会向注册中心注册自己的服务,以便服务...
`dubbo官方配置指南.doc`是开发者的重要参考资料,它详细阐述了Dubbo的各项配置选项,包括服务接口、协议、注册中心、监控中心等。理解这些配置有助于我们精准控制服务的行为,例如设置服务的超时时间、重试次数、...
- **协议(Protocol)**:Dubbo支持多种通信协议,如Dubbo协议、RMI、HTTP、Hessian等,其中Dubbo协议性能最优。 - **序列化(Serialization)**:数据在网络中传输前需要进行序列化,Dubbo支持多种序列化方式,如...
协议参考手册详细讲解了Dubbo支持的各种通信协议,如dubbo协议、rmi协议、hessian协议等,并且解释了每种协议的特性和适用场景。 注册中心参考手册讲解了如何配置和使用不同的注册中心,如Multicast注册中心、...
Dubbo支持多种RPC协议,如Dubbo协议、HTTP、Hessian等,使得服务间的通信变得更加简单。Dubbo的RPC框架设计了高效的序列化和反序列化机制,确保了跨进程通信的高效性。 3. **负载均衡**: 在消费者调用多个服务...
在`dubbo.properties`中配置服务的基本信息,如应用名、服务版本、协议等。在Spring配置文件中使用`<dubbo:service>`标签暴露服务,指定接口、实现类以及注册中心的URL。 4. **启动服务提供者**: 使用Spring的`...
Dubbo支持多种通信协议,如简单HTTP协议、RMI、Hessian、 Burlap等,最常用的是基于TCP的Dubbo协议,该协议具有低延迟、高吞吐量的特点,适用于大并发场景。 6. **NIO(非阻塞I/O)** Dubbo采用Netty作为底层通信...
5. **协议(Protocol)**:Dubbo支持多种通信协议,如Dubbo协议、HTTP、RMI等,这些协议决定了服务调用的方式和性能。 6. **API与配置**:文章中可能介绍了如何通过XML或Java API来配置Dubbo服务,包括服务接口定义...
总结来说,`dubbo-demo` 是一个全面展示 Dubbo 框架工作流程的实例,涵盖了服务提供、消费、接口定义、服务注册与发现以及可视化管理等多个方面,对于理解和学习 Dubbo 具有很高的参考价值。通过分析和实践这个示例...
Dubbo支持多种通信协议,如Dubbo协议、HTTP、RMI等,其中Dubbo协议以其高效著称。序列化是通信过程中的重要环节,Dubbo内置了多种序列化方式,如Hessian、Java原生序列化、FastJson等,以适应不同的性能和兼容性...
《Dubbo官方中文文档》是Java开发者们深入理解与应用Dubbo框架的重要参考资料。Dubbo,作为阿里巴巴开源的一款高性能、轻量级的Java分布式服务框架,旨在提高微服务架构下的服务治理能力,实现服务的发布、发现、...
讲解了Dubbo的扩展性设计,包括服务过滤器、协议扩展、序列化方式、监控中心等,展示了Dubbo强大的定制能力和适应性。 5. **服务框架实践与探索.pdf**: 通过实际案例,这份文档分享了如何在企业级项目中运用...
这些jar包通常会按照功能或者依赖关系分组,例如,可能有dubbo-core.jar(包含核心功能)、dubbo-registry-zookeeper.jar(ZooKeeper注册中心实现)、dubbo-protocol-netty.jar(Netty协议实现)等。开发者在进行...
【Dubbo支持哪些协议,推荐使用哪个?】 Dubbo支持多种协议,如dubbo://(推荐)、rmi://、hessian://、http://、webservice://、thrift://、memcached://、redis://、rest://等。推荐使用dubbo://协议,因其性能和...
Dubbo支持多种通信协议,如RPC(Remote Procedure Call)和HTTP等,最常用的是基于TCP的Dubbo协议。它采用高效的序列化方式,如Hessian和Java自带的Serialization,确保数据传输的高效性。此外,Dubbo还提供了异步...
- 泛化引用:支持非Dubbo协议的服务引用。 - 泛化实现:通过自定义服务接口来实现服务。 - 回声测试:测试服务是否可用。 2. **配置详解**: - 参考配置缓存:配置缓存,提高服务启动速度。 - 分布式事务:...
#### 九、协议参考手册 - **dubbo://**:Dubbo默认的通信协议。 - **rmi://**:使用RMI协议进行远程方法调用。 - **hessian://**:使用Hessian协议进行远程方法调用。 - **http://**:使用HTTP协议进行远程方法调用...