27. Dubbo原理解析-管理控制台

Dubbo的dubbo-admin模块是后台管理系统,它的MVC框架式基于webx3的,webx是阿里巴巴开源出来基于页面驱动的mvc框架, webx在阿里内部广泛使用。

Webx是基于turbine发展而来逐渐成为一个功能强大扩展性强的mvc框架,利用约定大于配置原则,虽说使用简单,但是也有很多潜在规则在里面。Webx作为除了阿里以外一个小众框架学习起来还是很有成本的,再说dubbo中又对webx进行一层restful改造,使大家即时按官方文档http://www.openwebx.org/学习也很难很快看懂。这里不做webx的相关介绍,因为一时半会没法讲,主要讲下dubbo-admin基本流程,方便有的朋友对webx不爽想迁移到springmvc或者struts之上。

 

dubbo-admin web应用配置

属性文件路径dubbo\dubbo-admin\src\main\webapp\WEB-INF\dubbo.properties

dubbo.registry.address=zookeeper://127.0.0.1:2181

dubbo.admin.root.password=root

dubbo.admin.guest.password=guest

这里需要指定注册中心地址,因为对于服务的治理需要从注册中心获取相关信息,如提供者、消费者、路由信息、权重等等

这里后台权限验证也简单,用户也可以修改针对数据库,或者登陆中心的权限验证。

 

Sping的bean配置路径:

dubbo\dubbo-admin\src\main\resources\META-INF\spring\dubbo-admin.xml

下面我们来几个比较关键的配置

<dubbo:registryaddress="${dubbo.registry.address}"check="false"file="false"/>

<dubbo:referenceid="registryService"interface="com.alibaba.dubbo.registry.RegistryService"check="false"/>

<beanid="userService"class="com.alibaba.dubbo.governance.service.impl.UserServiceImpl">

    <propertyname="rootPassword"value="${dubbo.admin.root.password}"/>

    <propertyname="guestPassword"value="${dubbo.admin.guest.password}"/>

</bean>

<beanid="governanceCache"class="com.alibaba.dubbo.governance.sync.RegistryServerSync"/>

 

1)<Dubbo:registry/>用来指定注册中心的地址,这个由properties文件中提供

2)引用registryService服务, 这个在zookeeper为注册中心其实并没有引用什么远程的registryService服务,而是创建了代理通过ZookeeperRegistry来操作zookeeper的节点数据

3)RegistryServerSync这个bean用来订阅同步注册中心数据

RegistryServerSync实现了InitializingBean接口,这个接口是spring提供的一个回调在spring初始化bean的时当bean的参数都被设置的时候调用,这个的方法实现为:registryService.subscribe(SUBSCRIBE,this); 向注册中心订阅


如图url订阅了所有的信息

 

同时RegistryServerSync实现了NotifyListener接口,这个接口用来当注册中心数据发生变化后回调订阅用户更新信息,是注册中心反向推送的实现。

RegistryServerSync的notify(urls)实现主要是分类缓存注册中心信息,供页面是使用

4)OverrideServiceImpl实现 覆盖注册中心url,主要流程如下

registryService.unregister(oldOverride);

registryService.register(newOverride);

当动态配置,负载均衡,权重配置等会调用此接口更新注册中心url

5)RouteServiceImpl 用来新增,修改,删除路由信息

更新路由的流程如下,跟上面其实一样,也是覆盖注册中心路由信息

 registryService.unregister(oldRoute);

 registryService.register(route.toUrl());

 

 

启动后台服务

Dubbo内嵌jetty作为后台服务的web容器,测试的利用mvn命令很方便启动debug

到dubbo\dubbo\dubbo-admin目录下执行mvn jetty:run 或者mvndebug jetty:run

默认访问端口是8080

http://localhost:8080/index.htm



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值