URL
- 所有扩展点参数都包含URL参数,URL作为上下文信息贯穿整个扩展点设计体系。
- URL采用标准格式:protocol://username:password@host:port/path?key=value&key=value
日志
- 如果不可恢复或需要报警,打印ERROR日志。
- 如果可恢复异常,或瞬时的状态不一致,打印WARN日志。
- 正常运行时的中间状态提示,打印INFO日志。
坏味道
![]() | 这里记录的是Dubbo设计或实现不优雅的地方。 |
URL转换
1. 点对点暴露和引用服务
1.1. 直接暴露服务:
EXPORT(dubbo://provider-address/com.xxx.XxxService?version=1.0.0")
1.2. 点对点直连服务:
REFER(dubbo://provider-address/com.xxx.XxxService?version=1.0.0)
2. 通过注册中心暴露服务
2.1. 向注册中心暴露服务:
EXPORT(registry://registry-address/com.alibaba.dubbo.registry.RegistrySerevice?registry=dubbo&export=ENCODE(dubbo://provider-address/com.xxx.XxxService?version=1.0.0))
2.2. 获取注册中心:url.setProtocol(url.getParameter("registry", "dubbo"))
GETREGISTRY(dubbo://registry-address/com.alibaba.dubbo.registry.RegistrySerevice)
2.3. 注册服务地址:url.getParameterAndDecoded("export"))
REGISTER(dubbo://provider-address/com.xxx.XxxService?version=1.0.0)
3. 通过注册中心引用服务
3.1. 从注册中心订阅服务:
REFER(registry://registry-address/com.alibaba.dubbo.registry.RegistrySerevice?registry=dubbo&refer=ENCODE(version=1.0.0))
3.2. 获取注册中心:url.setProtocol(url.getParameter("registry", "dubbo"))
GETREGISTRY(dubbo://registry-address/com.alibaba.dubbo.registry.RegistrySerevice)
3.3. 订阅服务地址:url.addParameters(url.getParameterAndDecoded("refer"))
SUBSCRIBE(dubbo://registry-address/com.xxx.XxxService?version=1.0.0)
3.4. 通知服务地址:url.addParameters(url.getParameterAndDecoded("refer"))
NOTIFY(dubbo://provider-address/com.xxx.XxxService?version=1.0.0)
4. 注册中心推送路由规则
4.1. 注册中心路由规则推送:
NOTIFY(route://registry-address/com.xxx.XxxService?router=script&type=js&rule=ENCODE(function{...}))
4.2. 获取路由器:url.setProtocol(url.getParameter("router", "script"))
GETROUTE(script://registry-address/com.xxx.XxxService?type=js&rule=ENCODE(function{...}))
5. 从文件加载路由规则
5.1. 从文件加载路由规则:
GETROUTE(file://path/file.js?router=script)
5.2. 获取路由器:url.setProtocol(url.getParameter("router", "script")).addParameter("type", SUFFIX(file)).addParameter("rule", READ(file))
GETROUTE(script://path/file.js?type=js&rule=ENCODE(function{...}))
调用参数
- path 服务路径
- group 服务分组
- version 服务版本
- dubbo 使用的dubbo版本
- token 验证令牌
- timeout 调用超时
http://dubbo.io/Developer+Guide-zh.htm#DeveloperGuide-zh-URL%E8%BD%AC%E6%8D%A2