Dubbo系列之与ZooKeeper&SpringCloud集成

9 篇文章 0 订阅
7 篇文章 0 订阅

搭建预备:

ZooKeeper安装包:https://download.csdn.net/download/qq_38377525/81091193https://download.csdn.net/download/qq_38377525/81091193

dubbo-admin客户端:https://download.csdn.net/download/qq_38377525/81091530https://download.csdn.net/download/qq_38377525/81091530

zk可视化工具:https://download.csdn.net/download/qq_38377525/81090760https://download.csdn.net/download/qq_38377525/81090760


架构说明:

父工程:dubbo-spring-cloud

对外开放的普通maven工程:dubbo-spring-cloud-api

生产者/提供者:dubbo-spring-cloud-provider

消费者:dubbo-spring-cloud-consumer


第一步:创建一个父工程:dubbo-spring-cloud

1、pom文件信息如下:

<modules>
        <module>dubbo-spring-cloud-api</module>
        <module>dubbo-spring-cloud-consumer</module>
        <module>dubbo-spring-cloud-provider</module>
</modules>


<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.3.6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
</dependencies>

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.1.11.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.1.1.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
</dependencyManagement>

第二步:创建一个maven工程:dubbo-spring-cloud-api

1、编写一个对外开放的接口类:IHelloService,代码如下

public interface IHelloService {
    String sayHello(String name);
}

2、然后使用maven命令:mvn clean install -DskipTests在本地构建一下,方便下游服务调用

第三步:创建一个springboot提供者服务:dubbo-spring-cloud-provider

1、pom文件信息如下:

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-dubbo</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.cb</groupId>
            <artifactId>dubbo-spring-cloud-api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-client</artifactId>
            <version>2.13.0</version>
        </dependency>
</dependencies>

2、实现api接口,代码如下:

@Service    //服务注册
@org.springframework.stereotype.Service //spring注入
public class HelloServiceImpl implements IHelloService {
    public String sayHello(String name) {
        return name;
    }
}

3、配置文件如下:

#dubbo相关配置
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.registry.address=zookeeper://192.168.1.107:2181
dubbo.scan.base-packages=com.cb.dubbospringcloudprovider.impl


#cloud相关配置
spring.cloud.zookeeper.connect-string=192.168.1.107:2181
spring.cloud.zookeeper.discovery.instance-host=192.168.1.107
spring.cloud.zookeeper.discovery.instance-port=8088
spring.cloud.zookeeper.discovery.register=true


#spring相关配置
server.port=8088
spring.application.name=dubbo-spring-cloud-provider

4、启动类如下:

@SpringBootApplication
@EnableDubbo
public class DubboSpringCloudProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(DubboSpringCloudProviderApplication.class, args);
    }

}

5、然后启动该类,启动成功之后,打开zk可视化工具,查看注册信息,截图如下:

说明提供者已被注册,结构也是正确的

第四步:创建一个springboot消费者服务:dubbo-spring-cloud-consumer

1、pom信息与提供者的pom相同即可

2、创建一个controller,远程调用提供者和api接口类,实现远程调用

@RestController
public class HelloController {
    @Reference(retries = 0,check = false)
    private IHelloService iHelloService;

    @GetMapping("/say")
    public String sayHello(){
        return iHelloService.sayHello("hello world");
    }
}

3、启动类如下

@SpringBootApplication
@EnableDiscoveryClient
public class DubboSpringCloudConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(DubboSpringCloudConsumerApplication.class, args);
    }

}

4、配置文件如下:

#指定要远程调用的注册服务名,不声明的话默认是扫描全部服务
dubbo.cloud.subscribed-services=dubbo-spring-cloud-provider
#注册服务名
spring.application.name=dubbo-spring-cloud-consumer
#是否注册
spring.cloud.zookeeper.discovery.register=true
#注册中心ip:port字符串
spring.cloud.zookeeper.connect-string=192.168.1.107:2181
#扫描需要注册的类包路径
dubbo.scan.base-packages=com.cb.dubbospringcloudconsumer
server.port=8070
#注册节点
dubbo.protocol.name=dubbo
#dubbo服务端口,默认是20880
dubbo.protocol.port=20881
#zk链接地址
dubbo.registry.address=zookeeper://192.168.179.114:2181

5、然后启动该类,启动成功之后,打开zk可视化工具,查看注册信息,截图如下:

说明消费者注册成功

第五步:远程调用消费者的接口

1、访问 http://localhost:8070/say

返回:hello world

返回正确,集成到这里就结束啦!


demo样例链接:

https://gitee.com/IT_CB/dubbo-spring-cloudhttps://gitee.com/IT_CB/dubbo-spring-cloud

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值