Zookeeper注册中心:
- zk主要用来提供注册服务和负载均衡,解决分布式一致性问题:
- 流程说明:
- 服务提供者向zookeeper的注册中心注册服务,即向注册中心写入服务提供URL地址;
- 服务消费者向注册中心订阅服务,然后注册中心会想消费者提供一份服务提供者URL地址列表;
- 服务消费者遍历服务提供者列表找到相应的服务;
- <font color = blue>消费者会在本地缓存提供者列表;</font>这意味着如果注册中心突然宕机,短时间内也不会影响dubbo消费者正常调用服务提供者的服务。
- 具体怎么使用ZooKeeper作为dubbo服务的注册中心,网上有很多教程,大体如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- 声明应用名称 -->
<dubbo:application name="platform-service" organization="test"/>
<!--注册中心为zk -->
<dubbo:registry protocol="zookeeper" address="zk.test.com:2181" file="./.dubbo-platform"/>
<!--把服务暴露在dubbo的21884端口-->
<dubbo:protocol name="dubbo" port="21884" serialization="hessian2" />
<dubbo:protocol name="rest" port="8888"/>
</beans>
直接连接:
-
在开发和测试环境下,经常需要绕过注册中心,只测试指定服务提供者,这时候服务提供者和服务消费者可以直接沟通,即点对点直连;
- 点对点直连方式,是以dubbo服务接口为单位,忽略注册中心的服务提供者列表;
- A接口采用点对点直连,不影响B接口从注册中心获取服务提供者列表信息;
其中,dubbo-provider的配置为:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- <dubbo:provider protocol="dubbo" port="30021"/>-->
<dubbo:service retries="0" version="1.0.0" interface="cn.gov.zcy.trade.creed.facade.api.TradeCreedFacade"
ref="tradeCreedFacadeImpl" class="cn.gov.zcy.trade.creed.facade.core.facade.TradeCreedFacadeImpl" timeout="10000"/>
</beans>
-
还可以使用注解的方式:
6859F9F4-E3F1-46E6-A999-DD29BD26E76F.png
- 其中,dubbo-consumer的配置为:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<dubbo:reference retries="0" version="1.0.0" interface="cn.gov.zcy.paas.user.service.UserReadService"
id="userReadService" check="false" timeout="10000"/>
<dubbo:reference retries="0" version="1.0.0"
interface="cn.gov.zcy.extra.service.CaiNiaoExpressService" id="caiNiaoExpressService" check="false"
timeout="10000"/>
</beans>