zoukankan      html  css  js  c++  java
  • springboot搭建dubbo+zookeeper简单案例

    背景:只是自己使用单机版zookeeper搭建dubbo的一个学习案例,记录成功的过程

    1.搭建zookeeper坏境

      使用docker来构建环境

      1.1 拉取镜像:docker pull zookeeper:3.4

      1.2 启动一个容器: docker run -d -v /home/docker/zookeeperhost/zookeeperDataDir:/data -v /home/docker/zookeeperhost/zookeeperDataLogDir:/datalog  -e ZOO_MY_ID=1 -e ZOO_SERVERS='server.1=172.16.0.194:2888:3888'  -p 2181:2181 -p 2888:2888 -p 3888:3888  --name zookeeper --privileged zookeeper
    2. 创建接口项目,因为在服务方和消费方都要使用到这个接口,所以单独拿出来,就是一个简单的springboot项目,然后在里面写了个接口

    2.创建服务提供方项目,一个springboot项目,然后pom文件中引入两个依赖,一个是dubbo的,一个是我们步骤一创建的接口项目

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
     4     <modelVersion>4.0.0</modelVersion>
     5     <parent>
     6         <groupId>org.springframework.boot</groupId>
     7         <artifactId>spring-boot-starter-parent</artifactId>
     8         <version>2.1.7.RELEASE</version>
     9         <relativePath/> <!-- lookup parent from repository -->
    10     </parent>
    11     <groupId>com.example</groupId>
    12     <artifactId>spring-dubbo-provider</artifactId>
    13     <version>0.0.1-SNAPSHOT</version>
    14     <name>spring-dubbo-provider</name>
    15     <description>Demo project for Spring Boot</description>
    16 
    17     <properties>
    18         <java.version>1.8</java.version>
    19     </properties>
    20 
    21     <dependencies>
    22         <dependency>
    23             <groupId>org.springframework.boot</groupId>
    24             <artifactId>spring-boot-starter-web</artifactId>
    25         </dependency>
    26 
    27         <dependency>
    28             <groupId>org.springframework.boot</groupId>
    29             <artifactId>spring-boot-starter-test</artifactId>
    30             <scope>test</scope>
    31         </dependency>
    32         
    33         <dependency>
    34             <groupId>com.alibaba.boot</groupId>
    35             <artifactId>dubbo-spring-boot-starter</artifactId>
    36             <version>0.2.0</version>
    37         </dependency>
    38         
    39         <dependency>
    40           <groupId>com.example</groupId>
    41             <artifactId>spring-dubbo-api</artifactId>
    42             <version>0.0.1-SNAPSHOT</version>
    43         </dependency>
    44     </dependencies>
    45 
    46     <build>
    47         <plugins>
    48             <plugin>
    49                 <groupId>org.springframework.boot</groupId>
    50                 <artifactId>spring-boot-maven-plugin</artifactId>
    51             </plugin>
    52         </plugins>
    53     </build>
    54 
    55 </project>

    接下来是properties文件中dubbo相关的配置:

    server.port=8085
    
    dubbo.application.name=dubbo-provider
    dubbo.registry.address=zookeeper://172.16.0.194:2181
    dubbo.protocol.name=dubbo
    dubbo.protocol.threads=200
    dubbo.protocol.port=20880

    最后编写服务类:

     1 package com.dubbo.provider.service;
     2 
     3 import com.alibaba.dubbo.config.annotation.Service;
     4 import com.dubbo.api.HelloService;
     5 
     6 @Service(loadbalance="random", actives =0, retries=2, timeout=300,version="1.0.0",executes=200)
     7 public class HelloServiceImpl implements HelloService{
     8 
     9     @Override
    10     public String hello(String str) {
    11         System.out.println("str :" + str);
    12         return "provider :" + str;
    13     }
    14 
    15 }

    注意:注解service为dubbo提供的,还要启动类上要加上@enableDubbo注解

    3.创建consumer项目,也是一个带有web的springboot项目,pom配置文件和provider项目的pom文件一样

    properties配置文件如下:

    server.port=8084
    #dubbo consumer
    dubbo.application.name=dubbo-consumer
    dubbo.registry.address=zookeeper://172.16.0.194:2181
    dubbo.consumer.check=false

    接下来是接口调用的编写:

    package com.dubbo.consumer;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.alibaba.dubbo.config.annotation.Reference;
    import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
    import com.dubbo.api.HelloService;
    
    @SpringBootApplication
    @EnableDubbo
    @RestController
    public class SpringDubboConsumerApplication {
    
        @Reference(version="1.0.0")//注意此处的version要和提供者接口的version对应
        private HelloService helloService;
        
        public static void main(String[] args) {
            SpringApplication.run(SpringDubboConsumerApplication.class, args);
        }
    
        @RequestMapping("/consumer")
        public Object consumer() {
            return helloService.hello("consumer");
        }
        
    }

    注意需要在springboot启动类上加上@enablesDubbo的注解

    4.访问consumer一下:

    可以看到成功了。

    提醒:关于dubbo的配置项建议对着dubbo的官方文档来写,地址:http://dubbo.apache.org/zh-cn/docs/user/recommend.html

     关于配置调优,官方文档写的还是比较好的。

    关于dubbo  start,我发现有两个,一个是apach提供的,一个是ali提供的,我这里用的是阿里的,大家可以到maven中心仓库查看,

    我也看到有很多的例子里面还引入了什么zookeeper依赖,还有什么zookepeer客户端依赖,其实在dubbo-spring-boot-starter里面

    都已经包含了这些依赖,根本就不再需要另外引入这些额外的依赖了,做项目的小伙伴留意一下哦。

     最后dubbo还提供了一个后台的功能,需要拉取响应的代码,我使用eclipse直接clone项目  地址是:https://github.com/apache/dubbo-admin.git

    然后直接导入到eclipse中,使用maven打包dubbo-admin项目,最后再dubbo--admin的target目录下打开控制台,使用java -jar dubbo-admin-0.0.1-SNAPSHOT.jar 运行起来

    然后访问:localhost:7001 输入用户名root,密码root就可以了

    如下:

    小提示:需要在 application.properties 修改你自己的dubbo的注册中心地址,默认的是本机的2181,如果你的dubbo不是跑在本机上,需要修改为你对应的地址

  • 相关阅读:
    穷举 百鸡百钱
    for嵌套for ★
    纸张的厚度循环
    MySQL架构由小变大的演变过程
    MySQL数据库主从复制实践
    想要写出高性能sql语句,你得记住这些……
    Mongodb常用的性能监控命令
    Mongodb的mongostat命令
    Windows下MongoDB常用命令
    Windows下Mysql常用操作命令
  • 原文地址:https://www.cnblogs.com/zfding/p/11387189.html
Copyright © 2011-2022 走看看