【Dubbo】Dubbo(二)简单实践

Dubbo(二)实践

安装注册中心:

下载zookeeper,在zookeeper路径下新增date文件夹存储数据,conf路径下新增zoo.cfg,编辑zoo.cfg,修改数据目录dataDir为新增的data文件夹,其他与zoo_sample.cfg一样:

在这里插入图片描述

在这里插入图片描述

执行bin目录里的zkServer.cmd启动注册中心

在这里插入图片描述

启动成功

在这里插入图片描述

执行zkCli.cmd ,连接zookeeper注册中心

在这里插入图片描述

zookeeper是一个树型的目录服务

在这里插入图片描述

get / 获取zookeeper根节点,ls / 查看根节点下的节点,发现zookeeper节点

在这里插入图片描述

create -e /zmxqq 123456 在根目录下创建临时节点,并赋值为123456

在这里插入图片描述

项目实现:

在分布式项目中,为符合分包原则,可以将公共内容,比如JavaBean、异常、接口等放到单独的工程中去。比如将接口统一写到一个工程中,例如zmxqq-dubbo-interface工程中存放所有的接口,在其他工程比如zmxqq-order-service业务工程如果想要调用接口,就需要在pom.xml中做如下配置,引入接口工程,此时业务工程就可以只关注自己的接口实现。

<dependency>
    <groupId>com.zmxqq</groupId>
    <artifactId>zmxqq-dubbo-interface</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency> 

接下来按照Dubbo的流程图来实现dubbo远程通信。即 消费者工程提供者工程 如何建立通信连接。

在这里插入图片描述

Dubbo流程中各个模块的配置【ssm项目——通过xml配置】
  1. 导入Dubbo依赖,在提供者工程的pom.xml

    <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>dubbo</artifactId>
       <version>2.8.4</version>
    </dependency>
    
  2. 引入注册中心zookeeper客户端(或其他注册中心)curator或zkclientpom.xml

    <dependency>
       <groupId>com.github.sgroschupf</groupId>
       <artifactId>zkclient</artifactId>
       <version>3.4.6</version>
    </dependency>
    
  3. 配置服务提供者provider ,在提供者工程的spring.xml文件中

    ① 指定当前服务/应用的名字 spring.xml

    <!-- dubbo配置 -->
     <!-- 提供者应用信息,用于订单处理 -->
    <dubbo:application name="dubbo-service-order" />
    

    ② 注册服务提供者到注册中心,指定注册中心的位置 spring.xml

    <!-- 使用zookeeper注册中心暴露服务地址 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" />
    

    ③dubbo协议在哪个端口暴露服务 spring.xml

    <dubbo:protocol name="dubbo" port="20880" />
    

    ④声明需要暴露的服务接口 ,这样消费者就可以调用这个服务spring.xml

    <!-- 声明需要暴露的服务接口,ref指向服务的真正实现对象 -->
    <dubbo:service interface="org.apache.dubbo.demo.DemoService" ref="demoService" />
    
    <!-- 服务的实现,相当于本地的一个bean,可以通过@Autowired等注入 -->
    <bean id="demoService" class="org.apache.dubbo.demo.provider.DemoServiceImpl" />
    

    【也可以在dubbo.properties中配置好注册中心地址和通信端口号,再使用${}动态指定。例如:】

    dubbo.properties

    zookeeper.address=zookeeper://127.0.0.1:2181
    dubbo.port=20880
    

    spring.xml

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">  
            <list>    
                <value>classpath:config/dubbo.properties</value>
            </list>   
        </property>  
    </bean>
    <dubbo:protocol name="dubbo" port="${dubbo.port}" />
    
  4. 配置消费者consumer,同样在消费者工程的pom.xml 中导入Dubbo依赖,引入zookeeper客户端。此处的spring.xml为消费者工程中的配置文件,与3不同。

    ①指定当前服务/应用的名字 spring.xml

    <dubbo:application name="dubbo-service-order" />
    

    ② 注册消费者到注册中心,指定注册中心的位置 spring.xml

    <!-- 使用zookeeper注册中心暴露服务地址 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" />
    

    ③声明需要调用的远程服务的接口 spring.xml

    <dubbo:reference id="demoService" interface="org.apache.dubbo.demo.DemoService" />
    

    这样,注册中心的demoService接口就可以在消费者工程里通过@Autowired等注入并使用了。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值