dubbo实战
参考博客
http://blog.csdn.net/ichsonx/article/details/39008519
非常详细的一篇关于Dubbo整合zookeeper的blog,操作篇
http://blog.csdn.net/accp_fangjian/article/details/51658292
白名单配置篇
https://blog.csdn.net/l1028386804/article/details/74511445
学习规划
- 弄清楚dubbo的原理是什么,相对于接口调用、消息队列有什么区别
- 如何实现一致性 和分布式事务问题
源码github
https://github.com/huangzhenshi/dubbo_zk_deom
功能描述
实现rpc调用,像调用本地方法一样调用远程server上的方法
实现负载均衡,dubbo有负载均衡策略可以实现策略消费request。(dubbo的web管理界面提供配置:随机+权重配置、轮询、最少并发)
实现高可用,zk的注册发现功能,一个provider挂了的话,会自动被剔除掉,保证服务器继续对外提供服务,如果重新provider重新恢复的话,又恢复到服务提供队列当中了
实现服务提供者和消费者之间解耦,也实现服务提供者和提供者之间的解耦,利用zk的注册中心的功能,实现灵活的扩展和缩容。
支持权限配置功能:比如白名单功能
支持配置集群容错策略 failover failfast forking等
其它注意事项
- dubbo的monitor功能是可选的,如果dubbo不启动,只有zk启动着,就可以实现rpc的功能。
角色扮演
zookeeper:注册服务发现,当有新的provider注册进来的时候,会被zk发现,并通知的到dubbo,然后consumer调用的时候,会按照负载均衡策略把request分配到新的provider上面。
如果consumer已经获取到了provider的话,并且已经调用过了rpc方法,这个时候zk如果挂掉,还可以继续访问到provider,只是有新的provider不会被发现,或者新的consumer无法获取到所有的provider。
provider 只配置 zk,consumer只配置zk,这样服务提供者和 服务消费者之间解耦。
consumer发出request的时候,通过dubbo进行负载分配,分配到不同的provider。
白名单功能
- maven项目需要在resources 下创建 META-INF\dubbocom.alibaba.dubbo.rpc.Filter文件
配置
dubboContextFilter=com.mor.server.dubbo.service.AuthorityFilter重写Filter方法
dubbo的容错性
https://www.cnblogs.com/heben/p/7887664.html
通过在consumer里面配置策略,来实现不同的容错措施
failover 失败自动切换 (缺省值)
这种方式通常用于读操作,而不是写操作. 因为用在写操作,可能为导致重复写<dubbo:reference id="demoService" interface="com.mor.server.dubbo.service.DemoServer" cluster="failover" retries="2"/>Forking 并行调用多个服务器,只要一个成功即返回。
通常用于实时性要求较高的读操作,但需要浪费更多服务资源failfast 快速失效
只发起一次调用,失败立即报错。通常用于非幂等性写操作,比如说新增记录
dubbo传输协议
|
默认是dubbo 协议,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况 ,socket NIO TCP 长连接,来减少服务器端的线程开销
操作安装和使用
windows下的安装
安装参考
https://www.cnblogs.com/sxjun/p/6963844.html
下载war包 dubbo-admin
http://download.csdn.net/download/u014094611/9940278?web=web
把server项目生成jar包的方法
http://blog.csdn.net/xiao__gui/article/details/47341385
控制台使用
- 配置负载均衡机制
在dubbo管理页面http://localhost:8083/ 中选择负载均衡,添加服务接口,然后配置了。
如果在随机的情况下,也可以通过倍权 和 半权来大约修改权重值。
dubbo项目启动顺序
- 启动zk
- 启动dubbo的tomcat –>http://localhost:8083/ 进入查看监控中心
- 启动provider 和 consumer
启动provider后,可以在dubbo的管理界面看到 提供者的IP和暴露的端口