SpringBoot Dubbo Zookeeper 实现远程调用

首先我们来了解dubbo+zookeeper是个什么东西吧?
Dubbo是 阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

工作原理:
基本原理
Provider
暴露服务方称之为“服务提供者”。
Consumer
调用远程服务方称之为“服务消费者”。
Registry
服务注册与发现的中心目录服务称之为“服务注册中心”。
Monitor
统计服务的调用次数和调用时间的日志服务称之为“服务监控中心”。
zookeeper
即为注册中心

来看看代码实现吧!
pom.xml()

<!--dubbo-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.6.2</version>
        </dependency>

        <!-- zookeeper -->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.9</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>io.netty</groupId>
                    <artifactId>netty</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>4.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.0.1</version>
        </dependency>

API包地址和代码(我这里是本地模块,勿copy):

		<dependency>
            <groupId>com.tom</groupId>
            <artifactId>console-api</artifactId>
            <version>1.0.0</version>
        </dependency>
        提供接口即可
		public interface InterfaceDubbo {
		    HashMap<String,Object> DubboService(HashMap<String, Object> params);
		}

接下来看看dubbo.xml配置(贴在一个配置里,消费者和服务提供者区分即可):
备注一点,如服务提供商规定版本号,消费者也需要相应的加上版本号,本文没加,默认版本是1.0.0

<?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"
       xmlns:context="http://www.springframework.org/schema/context"
       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 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 定义应用名称 -->
	<dubbo:application name="console-dubbo-service" />
	<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" file=".registryCache" timeout="60000"/>
	<dubbo:protocol name="dubbo" port="9999"  />
	
	<!-- 服务提供者-->
    <bean id="helloDubbo" class="com.tom.dubbo.service.HelloDubbo"/>
    <dubbo:service interface="com.tom.dubbo.InterFace.InterfaceDubbo" ref="helloDubbo" protocol="dubbo" retries="0"/>
 	<!-- 服务消费者-->
    <dubbo:annotation package="com.tom.dubbo_interface"  />
	<dubbo:protocol name="dubbo" port="9999"  />
    <dubbo:reference id="dubboService" interface="com.tom.Interface.InterfaceDubbo"  check="false" />
</beans>

消费者直接使用注解即可:

@Autowired
@Qualifier("dubboService")
InterfaceDubbo dubboService;

服务提供者代码如下:

public class HelloDubbo implements InterfaceDubbo {
    Logger LOG = LoggerFactory.getLogger(HelloDubbo.class);
    @Override
    public HashMap<String, Object> DubboService(HashMap<String, Object> params) {
        LOG.info("dubbo服务接收参数:{}",params);
        HashMap<String, Object> resMap = new HashMap<String, Object>();
        if(params.size() <= 0){
            resMap.put("code","SUCCESS");
            resMap.put("msg","dubbo服务连接成功,但没有任何内容");
            return resMap;
        }
        return params;
    }
}

最后 消费者dubboService.DubboService(params)即可完成通信。

本章完,不知道各位技友有没有学到了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值