Spring Boot + Dubbo + Zookpeer分布式案例
        【摘要】 整体架构:下载链接:Doubbo:https://github.com/apache/dubboZookeeper:https://downloads.apache.org/zookeeper/Doubbo-admin:https://github.com/apache/dubbo-admin 1 首先安装Zookpeer[root@bogon tmp]# lsapache-zookeepe...
    
    
    
    整体架构:
 
下载链接:
Doubbo:https://github.com/apache/dubbo
Zookeeper:https://downloads.apache.org/zookeeper/
Doubbo-admin:https://github.com/apache/dubbo-admin
1 首先安装Zookpeer
[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的启动和重启命令:
[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依赖:
<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配置文件:
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接口实现类:
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;
    }
}
主启动类:
@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依赖
<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配置文件
dubbo.application.name=my_consumer
dubbo.registry.protocol=zookeeper
dubbo.registry.address=192.168.190.129:2181
dubbo.protocol.name=dubbo
UserController控制器类
/**
 * @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);
    }
}
主启动类:
@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依赖
<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配置文件
空
UserService接口类
/**
 * @desc: 公共接口
 * @author: YanMingXin
 * @create: 2021/8/7-10:07
 **/
public interface UserService {
    String sayHello(String name);
}
主启动类:
@SpringBootApplication
public class DoubboInterfaceApplication {
    public static void main(String[] args) {
        SpringApplication.run(DoubboInterfaceApplication.class, args);
    }
}
@SpringBootApplication
public class DoubboInterfaceApplication {
    public static void main(String[] args) {
        SpringApplication.run(DoubboInterfaceApplication.class, args);
    }
}
2.4 启动后观察Zookpeer并测试
doubbo_interface不需要启动,只需要install就可以了
[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)]](https://img-blog.csdnimg.cn/0a9e1a2cd21a4d53be4321443ab7dbdb.png)
3 dubbo管理界面
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EtdR2Hkz-1628312356725)(Doubbo分布式小Demo.assets/image-20210807120236360.png)]](https://img-blog.csdnimg.cn/a2d8fdbfb4cb46099116e51d0d409a4a.png)
放到tomcat中
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MI7kERH8-1628312356727)(Doubbo分布式小Demo.assets/image-20210807120317563.png)]](https://img-blog.csdnimg.cn/7b9966834d834004b0a2fc5607625dc1.png)
修改配置文件,在
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eEW4KVzg-1628312356728)(Doubbo分布式小Demo.assets/image-20210807120352269.png)]](https://img-blog.csdnimg.cn/ca0468c383e244409cf208787a38057a.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01yX1lhbk1pbmdYaW4=,size_16,color_FFFFFF,t_70)
修改内容
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)]](https://img-blog.csdnimg.cn/cf0539aaa1fb41e8be8f8310dfd68dcc.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01yX1lhbk1pbmdYaW4=,size_16,color_FFFFFF,t_70)
            【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
                cloudbbs@huaweicloud.com
                
            
        
        
        
        
        
        
        - 点赞
- 收藏
- 关注作者
 
             
           
评论(0)