Registry实时推送现存活的服务提供者,供Consumer调用,Monitor用于监控、统计RPC调用情况、成功率等情况;
在客户端需要调用服务时,从内存中拿到上次通知的所有存活服务地址,根据路由信息和负载均衡机制选择最终调用的服务地址,发起调用
引用jar包,配置文件添加前缀和约束
配置文件:
<dubbo:service/> 引用 服务配置,用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心。
<dubbo:reference/> 引用 服务配置,用于创建一个远程服务代理,一个引用可以指向多个注册中心。
<dubbo:protocol/> 引用 协议配置,用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受。
<dubbo:application/> 引用 应用配置,用于配置当前应用信息,不管该应用是提供者还是消费者。
<dubbo:module/> 引用 模块配置,用于配置当前模块信息,可选。
<dubbo:registry/> 引用 注册中心配置,用于配置连接注册中心相关信息。
<dubbo:monitor/> 引用 监控中心配置,用于配置连接监控中心相关信息,可选。
<dubbo:provider/> 提供方的缺省值,当ProtocolConfig和ServiceConfig某属性没有配置时,采用此缺省值,可选。
<dubbo:consumer/> 消费方缺省配置,当ReferenceConfig某属性没有配置时,采用此缺省值,可选。
<dubbo:method/> 方法配置,用于ServiceConfig和ReferenceConfig指定方法级的配置信息。
<dubbo:argument/> 用于指定方法参数配置。发布服务:
调用服务:
<dubbo:consumer check = "false"/>
1、Dubbo缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止Spring初始化完成,以便上线时,能及早发现问题
2、如果你的Spring容器是懒加载的,或者通过API编程延迟引用服务,请关闭check,否则服务临时不可用时,会抛出异常,拿到null引用,如果check=false,总是会返回引用,当服务恢复时,能自动连上。
补充:
在provider上尽量配置consumer端属性
1timeout
<dubbo:provider timeout="3000"/> <dubbo:consumer check = "false" timeout="3000"/>
2 retries:失败重试次数(2,不包括第一次)
3 loadbalance:负载均衡算法(多个provider如何挑选:random、roundrobin轮询、leastactive调最好的provider)
4actives消费端最大并发调用限制
长连接:一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包;多用于操作频繁,点对点的通讯,而且连接数不能太多情况;而且TCP连接都需要三步握手。
短连接:指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。
连接超时get到一个新原因:
如自己的service方法中会用到一张表并去做update操作导致产生了行锁时,如果恰巧你又在之后调用了另一个会操作此表的dubbo服务,用spring aop声明式事务,在你service没有执行完时产生的行锁并没有释放,而你又在service里放入了需要操作此表的dubbo服务,这样当数据库的死锁还没有抛异常的时候,dubbo就已经抛异常了。
感谢分享:
http://www.cnblogs.com/linjiqin/p/5859153.html 配置文件
http://blog.csdn.net/hzzhoushaoyu/article/details/43273099 干货
http://www.cnblogs.com/yangzhilong/p/6121551.html 通信协议
http://www.iteye.com/magazines/103 阿里大神专访
https://baike.baidu.com/item/%E9%95%BF%E8%BF%9E%E6%8E%A5/568486?fr=aladdin
http://blog.csdn.net/songjinbin/article/details/49447113
http://www.cnblogs.com/linjiqin/p/5859153.html 干货
http://www.mamicode.com/info-detail-1750670.html dubbo超时的深思