
- Provider: 服务的提供方。
- Consumer:服务消费方。
- Registry:服务注册与发现的注册中心。
- Monitor:监控中心,统计服务的调用次数和调用时间的监控中心。
- 服务运行容器(Spring)
调用关系说明
0.服务容器(Spring)负责启动,加载,运行服务提供者。
1.Provider在启动时,向注册中心注册自己提供的服务。
2.Consumer在启动时,向注册中心订阅自己所需的服务。
3.注册中心返回服务提供者地址列表给Consumer,如果有变更,注册中心将基于长连接推送变更数据给Consumer。
4.Consumer从提供者地址列表中,基于软负载均衡,选一台提供者进行调用,如果调用失败,再选另一台调用。
5.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
dubbo的schemal

所有配置项分为三大类
- 服务发现
- 服务治理
- 性能优化
所有配置最终都将转换为 URL(protocol://username:password@host:port/path?key=value&key=value)表示,并由服务提供方生成,经注册中心传递给消费方
- <dubbo:service>:服务配置,用于暴露一个服务,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心。
- <dubbo:protocol>:协议配置,用于配置服务协议配置,消费方被动接受
- <dubbo:provider>:service 和 protocol 标签的缺省值设置。
- <dubbo:application>:当前应用名称,用于注册中心计算应用间依赖关系,注意:消费者和提供者应用名不要一样,此参数不是匹配条件。
- <dubbo:registry>:注册中心配置。
- <dubbo:monitor>:监控中心配置。
- <dubbo:consumer>:reference 标签的缺省值设置。
- <dubbo:reference>:服务消费者引用服务配置。
- <dubbo:method>:service 和 reference 的子标签,用于控制到方法级。
<dubbo:module>:模块信息配置。
<dubbo:argument>:method 的子标签,用于方法参数的特征描述。
<dubbo:parameter>:选项参数配置,同时该标签为 protocol 或 service 或 provider 或 reference 或 consumer 的子标签,用于配置自定义参数。
协议配置
- dubbo
缺省协议,
连接个数:单连接
连接方式:长连接
传输协议:TCP
传输方式:NIO 异步传输
序列化:Hessian 二进制序列化
适用范围:传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一消费者无法压满提供者,尽量不要用 dubbo 协议传输大文件或超大字符串。
适用场景:小数据量大并发的服务调用 - rmi
连接个数:多连接
连接方式:短连接
传输协议:TCP
传输方式:同步传输
序列化:Java 标准二进制序列化
适用范围:传入传出参数数据包大小混合,消费者与提供者个数差不多,可传文件。
适用场景:常规远程服务方法调用,与原生RMI服务互操作 - hession
连接个数:多连接
连接方式:短连接
传输协议:HTTP
传输方式:同步传输
序列化:Hessian二进制序列化
适用范围:传入传出参数数据包较大,提供者比消费者个数多,提供者压力较大,可传文件。
适用场景:页面传输,文件传输,或与原生hessian服务互操作 - http
连接个数:多连接
连接方式:短连接
传输协议:HTTP
传输方式:同步传输
序列化:表单序列化
适用范围:传入传出参数数据包大小混合,提供者比消费者个数多,可用浏览器查看,可用表单或URL传入参数,暂不支持传文件。
适用场景:需同时给应用程序和浏览器 JS 使用的服务。 - webservice
连接个数:多连接
连接方式:短连接
传输协议:HTTP
传输方式:同步传输
序列化:SOAP 文本序列化
适用场景:系统集成,跨语言调用。可以和原生 WebService 服务互操作,即:提供者用 Dubbo 的 WebService 协议暴露服务,消费者直接用标准 WebService 接口调用,
或者提供方用标准 WebService 暴露服务,消费方用 Dubbo 的 WebService 协议调用。 - thrift
- redis
- memcached
- rest
注册中心
-
Zookeeper
zk注册中心.png
流程说明:
服务提供者启动时: 向 /dubbo/com.foo.BarService/providers 目录下写入自己的 URL 地址
服务消费者启动时: 订阅 /dubbo/com.foo.BarService/providers 目录下的提供者 URL 地址。并向 /dubbo/com.foo.BarService/consumers 目录下写入自己的 URL 地址
监控中心启动时: 订阅 /dubbo/com.foo.BarService 目录下的所有提供者和消费者 URL 地址。 -
Multicast:不需要启动任何中心节点,只要广播地址一样,就可以互相发现。
-
Redis
-
Simple
网友评论