前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot + Dubbo + Zookpeer分布式案例

Spring Boot + Dubbo + Zookpeer分布式案例

原创
作者头像
海风极客
发布2023-11-05 20:22:16
1700
发布2023-11-05 20:22:16
举报
文章被收录于专栏:扯编程的淡扯编程的淡

整体架构:

在这里插入图片描述
在这里插入图片描述

下载链接:

Doubbo:https://github.com/apache/dubbo

Zookeeper:https://downloads.apache.org/zookeeper/

Doubbo-admin:https://github.com/apache/dubbo-admin

1 首先安装Zookpeer

代码语言:shell
复制
[root@bogon tmp]# ls
apache-zookeeper-3.7.0-bin.tar.gz  jdk1.8.0_141  jdk8.tar.gz
[root@bogon tmp]# tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz 
[root@bogon tmp]# tar -zxvf jdk8.tar.gz 
[root@bogon tmp]# mv jdk1.8.0_141/ /usr/local/
[root@bogon tmp]# mv apache-zookeeper-3.7.0-bin/ /usr/local/zookpeer
[root@bogon tmp]# cd /usr/local/
[root@bogon local]# ls
bin  etc  games  include  jdk1.8.0_141  lib  lib64  libexec  sbin  share  src  zookeeper
[root@bogon local]# vim /etc/profile
# --------写入文件------------
export JAVA_HOME=/usr/local/jdk1.8.0_141
export JER_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
# --------写入文件完成------------
[root@bogon local]# source /etc/profile
[root@bogon local]# java -version
java version "1.8.0_141"
Java(TM) SE Runtime Environment (build 1.8.0_141-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)
[root@bogon local]# cd zookeeper/
[root@bogon conf]# cp zoo_sample.cfg zoo.cfg
[root@bogon conf]# cd ../bin
[root@bogon bin]# ./zkServer.sh start
[root@bogon bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@bogon bin]# ./zkCli.sh 
Connecting to localhost:2181
......
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper]

zookpeer的启动和重启命令:

代码语言:shell
复制
[root@bogon bin]# ./zkServer.sh start   //启动
[root@bogon bin]# ./zkServer.sh stop    //停止
[root@bogon bin]# ./zkServer.sh status  //查看当前状态
[root@bogon bin]# ./zkServer.sh restart  //重启
[root@bogon bin]# ./zkServer.sh version   //查看当前版本

2 创建Spring Boot项目

2.1 服务提供方dubbo_provider
在这里插入图片描述
在这里插入图片描述

pom.xml依赖:

代码语言:html
复制
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba.boot</groupId>
        <artifactId>dubbo-spring-boot-starter</artifactId>
        <version>0.2.0</version>
    </dependency>
    <dependency>
        <groupId>org.ymx</groupId>
        <artifactId>doubbo_interface</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

application.properties配置文件:

代码语言:text
复制
server.port=8081
dubbo.application.name=my_provider
dubbo.registry.protocol=zookeeper
dubbo.registry.address=192.168.190.129:2181
dubbo.protocol.name=dubbo

UserServiceImpl接口实现类:

代码语言:java
复制
import com.alibaba.dubbo.config.annotation.Service;
import org.ymx.doubbo_interface.service.UserService;

/**
 * @desc: 接口实现类
 * @author: YanMingXin
 * @create: 2021/8/7-9:32
 **/
@Service
public class UserServiceImpl implements UserService {
    @Override
    public String sayHello(String name) {
        return "Hello " + name;
    }
}

主启动类:

代码语言:java
复制
@SpringBootApplication
@EnableDubbo(scanBasePackages = "org.ymx.*")
public class DoubboProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(DoubboProviderApplication.class, args);
    }
}
2.2 服务消费方dubbo_consumer
在这里插入图片描述
在这里插入图片描述

pom.xml依赖

代码语言:html
复制
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba.boot</groupId>
        <artifactId>dubbo-spring-boot-starter</artifactId>
        <version>0.2.0</version>
    </dependency>
    <dependency>
        <groupId>org.ymx</groupId>
        <artifactId>doubbo_interface</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

application.properties配置文件

代码语言:text
复制
dubbo.application.name=my_consumer
dubbo.registry.protocol=zookeeper
dubbo.registry.address=192.168.190.129:2181
dubbo.protocol.name=dubbo

UserController控制器类

代码语言:java
复制
/**
 * @desc: Controller控制类
 * @author: YanMingXin
 * @create: 2021/8/7-10:08
 **/
@RestController
public class UserController {

    @Reference
    private UserService userService;

    @RequestMapping("/hello/{name}")
    public String hello(@PathVariable("name") String name) {
        return userService.sayHello(name);
    }

}

主启动类:

代码语言:java
复制
@SpringBootApplication
@EnableDubbo(scanBasePackages = "org.ymx.*")
public class DoubboConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(DoubboConsumerApplication.class, args);
    }
}
2.3 公共接口dubbo_interface
在这里插入图片描述
在这里插入图片描述

pom.xml依赖

代码语言:html
复制
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

application.properties配置文件

代码语言:text
复制

UserService接口类

代码语言:java
复制
/**
 * @desc: 公共接口
 * @author: YanMingXin
 * @create: 2021/8/7-10:07
 **/
public interface UserService {

    String sayHello(String name);

}

主启动类:

代码语言:java
复制
@SpringBootApplication
public class DoubboInterfaceApplication {
    public static void main(String[] args) {
        SpringApplication.run(DoubboInterfaceApplication.class, args);
    }
}
代码语言:java
复制
@SpringBootApplication
public class DoubboInterfaceApplication {
    public static void main(String[] args) {
        SpringApplication.run(DoubboInterfaceApplication.class, args);
    }
}
2.4 启动后观察Zookpeer并测试

doubbo_interface不需要启动,只需要install就可以了

代码语言:shell
复制
[zk: localhost:2181(CONNECTED) 14] ls /
[dubbo, zookeeper]
[zk: localhost:2181(CONNECTED) 15] ls /dubbo
[org.ymx.doubbo_consumer.service.UserService, org.ymx.doubbo_provider.service.UserService]

测试:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cqkUAX0q-1628312356722)(Doubbo分布式小Demo.assets/image-20210807111648206.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cqkUAX0q-1628312356722)(Doubbo分布式小Demo.assets/image-20210807111648206.png)]

3 dubbo管理界面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EtdR2Hkz-1628312356725)(Doubbo分布式小Demo.assets/image-20210807120236360.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EtdR2Hkz-1628312356725)(Doubbo分布式小Demo.assets/image-20210807120236360.png)]

放到tomcat中

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MI7kERH8-1628312356727)(Doubbo分布式小Demo.assets/image-20210807120317563.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MI7kERH8-1628312356727)(Doubbo分布式小Demo.assets/image-20210807120317563.png)]

修改配置文件,在

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eEW4KVzg-1628312356728)(Doubbo分布式小Demo.assets/image-20210807120352269.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eEW4KVzg-1628312356728)(Doubbo分布式小Demo.assets/image-20210807120352269.png)]

修改内容

代码语言:text
复制
dubbo.registry.address=zookeeper://192.168.190.129:2181  # 注册中心地址
dubbo.admin.root.password=root   # root账户的密码
dubbo.admin.guest.password=guest  # guest账户的密码

启动

访问:http://localhost:8080/dubbo-admin/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iOEiBf7q-1628312356729)(Doubbo分布式小Demo.assets/image-20210807120505428.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iOEiBf7q-1628312356729)(Doubbo分布式小Demo.assets/image-20210807120505428.png)]

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 首先安装Zookpeer
  • 2 创建Spring Boot项目
    • 2.1 服务提供方dubbo_provider
      • 2.2 服务消费方dubbo_consumer
        • 2.3 公共接口dubbo_interface
          • 2.4 启动后观察Zookpeer并测试
          • 3 dubbo管理界面
          相关产品与服务
          微服务引擎 TSE
          微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
          http://www.vxiaotou.com