zk
zk支持K-V存储
显示所有K:
ls /
获取对应K的V:
get /xx
provider
<!--应用名称-->
<dubbo:application name />
<!--注册中心-->
<dubbo:registry address
protocl />
<!--协议-->
<dubbo:protcol name
port />
<!--服务接口-->
<dubbo:service ref
interface
version
group
timeout
loadbalance
retries
weight />
<!--为dubbo:service的通用配置,但局部优先-->
<dubbo:provider group version/>
<!--服务接口实现类路径-->
<context:component-scan base-package />
应用名称与接口一致自动形成集群
zk发布的是对应服务接口的url地址
dubbo://192.168.53.22:8801/cn.khue.service.TestService?anyhost=true
&application=应用名称
&dubbo=dubbo版本
&generic=
&interface=
&methods=
&pid=
&side=
×tamp=
&group=组名
&version=版本号
字符含义:
%3A :
%2F /
%3F ?
%3D =
%26 &
%2C ,
Dubbo开发的时候,如果有相同接口,多个不同实现的服务同时需要发布的时候,如何处理?
在Dubbo中接口类并不能唯一确定一个服务,在Dubbo中接口+服务分组+版本号才能唯一确定一个服务
所以,当一个接口有多种实现时,可以使用group分组区分
服务提供方:
<!--服务实现一-->
<dubbo:service interface="cn.khue.service.TestService" ref="testService" group="group01"/>
<!--服务实现二-->
<dubbo:service interface="cn.khue.service.TestService" ref="testService" group="group02"/>
服务消费方:
<!--服务实现一-->
<dubbo:reference interface="cn.khue.service.TestService" id="testService" group="group01"/>
<!--服务实现二-->
<dubbo:reference interface="cn.khue.service.TestService" id="testService" group="group02"/>
<!--任意组可使用 group="*"-->
版本号可用于版本迁移,解决同一服务分组的接口实现出现不兼容升级的问题
具体步骤:
- 在低压力时间段,先升级一半提供者
- 再将所有消费者升级
- 再将剩余的一半提供者升级
如果有多个同名服务,需要同时发布的时候,如何处理?
使用分组或版本号
使用不同协议或多注册中心也可以,但是这样会加大客户端压力
如果请求参数或响应结果,数据容量过大(超过8M),如何处理?
异步NIO长连接
Dubbo传输数据大小默认为8M,超限则会抛出异常
大数据的传输并不符合Dubbo设计的初衷,Dubbo的长连接主要用于小数据包频繁调用,对于大数据的传输可以考虑通过其他方式实现
- 配置payload属性
<dubbo:protocol name="dubbo" port="-1" payload = "8388608"/>
<dubbo:protocol name="dubbo" port="20880" payload="8388608"/>
- 分组聚合 - 按组合并返回结果
<!--搜索所有分组-->
<dubbo:reference interface="com.xxx.MenuService" group="*" merger="true" />
<!--合并所有分组-->
<dubbo:reference interface="com.xxx.MenuService" group="aaa,bbb" merger="true" />
<!--合并指定分组-->
<dubbo:reference interface="com.xxx.MenuService" group="*" merger="true">
<dubbo:method name="getMenuItems" merger="false" />
</dubbo:reference>
- 配置payload(默认为字节)-不推荐
- 通过数据流转平台(为了传数据)转移 - FTP、FastDFS、Redis、MongoDB、DB、代码实现
参考
1.Dubbo剖析-服务分组与服务版本号 2.dubbo:9个你不一定知道,但好用的功能 3.dubbo 面试18问(含答案) 4.Dubbo相关知识总结 5.Dubbo开发优化注意事项