dubbox:
分布式服务框架
前身 阿里巴巴开源项目dubbo
角色:
provider:暴露服务的服务提供方
consumer:调用远程服务的服务消费方
register:服务注册与发现的注册中心
Monitor:统计服务的调用次调和调用时间的监控中心
调用关系:
1、服务器启动,加载,运行服务提供者
2、服务提供者在启动时,向注册中心注册自己提供的服务
3、服务消费者在启动时,向注册中心订阅自己所需的服务
4、注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
5、服务消费者,从提供地址列表中,基于软负债均衡算法,选一台提供者进行调用,如果调用失败,再选一台调用
6、服务消费者和提供者,在内存中调用次数和调用时间,定时每分钟发送一次统计数据到数据中心
注册中心 Zookeeper
是一个树型的目录服务,负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小。
在linux下的安装:
1、安装jdk
2、上传zookeeper压缩包
3、解压压缩包
4、进入加压后的zookeeper目录
5、创建data文件夹
6、进入conf目录,复制一份zoo_sample.cfg改名为zoo.cfg
7、打开zoo.cfg,修改属性 dataDir=/root/zookeeper-3.4.6/data
启动:
进入bin目录,输入./zkServer.sh start
关闭:
输入 ./zkServer.sh stop
查看状态
./zkServer.sh status
管控台(监控中心):
安装:
1、上传dubbo-admin-2.8.4.war(编译管理端的源码得到)
2、复制dubbo-admin-2.8.4.war 到tomacat的webapps下
3、启动tomcat ./bin/startup.sh(查看启动过程 tail -F tomcat7/logs/catalina.out)
4、如果你部署在zookeeper同一台主机并且端口是默认的2181,则无需修改任何配置。如果不是在一台主机上或端口被修改,需要修改WEB-INF下的dubbo.properties ,修改如下配置:dubbo.registry.address=zookeeper://127.0.0.1:2181,之后重新启动tomcat
使用(在打开zookeeper(先打开)和tomcat的前提下):
打开浏览器,输入http://192.168.44.130:8080/dubbo-admin/ ,登录用户名和密码均为root 进入首页
问题:
当服务提供发需要执行一些耗时操作时,那么服务消费方,会默认情况情况每隔一秒调用一次,默认调用三次,如果还没有返回结果,消费方抛出异常
分析
好处:dubbo在设计之初,考虑到了接口的健壮性
坏处:对于写操作的接口,就不合适了
解决:
解决接口超时:使用一些配置,可以再消费方配置,也可以在服务方配置,但是在消费方的超时时间一定要大于服务方的接口执行时间。我们推荐在服务方配置。@Service(timeout=6000,retries=1)