dubbo zookeeper图解入门配置

这次主要是对dubbo 和zookeeper的配置做个记录,以便以后自己忘记了,或者踩的坑再次被踩

快速阅读

zookeerer类似 springcloud中的Eureka都做为注册中心,用srpingboot建立三个项目生产者,消费者,公共接口,引用阿里的dubbo做为rpc框架, 生产者负责实现接口的业务逻辑 并且在zookeeper注册中心中注册,同是消费者也连接zookeeper注册中心进行消息调用 。

优点:

做为分布式服务架构,将核心业务抽取出来,稳定服务器,同时扩展方便 。可以针对高并发数据进行快速合理的扩展和监控。提高集群的利用率

zookeeper的配置

  1. 下载zookeeper 我用的版本是3.4.13

    http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz

  2. linux服务器解压

    下载以后放到linux服务器上直接解压就可以了。

    [root@bogon hcb]# tar zxvf zookeeper-3.4.13.tar.gz -C /usr
    
  3. 备份zoo.cfg配置文件

    直接把zoo_sample.cfg改名就可以了。o

    mv /usr/zookeeper-3.4.13/conf/zoo_sample.cfg zoo.cfg
    
  4. 启动zookeeper

    我是因为已经启动过了,显示 already running

    [root@bogon bin]# ./zkServer.sh start
    ZooKeeper JMX enabled by default
    Using config: /usr/zookeeper-3.4.13/bin/../conf/zoo.cfg
    Starting zookeeper ... already running as process 2521.
    
  5. 查看zookeeper状态

    如果有standalone表示启动正常 可以正常使用

    [root@bogon bin]# ./zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /usr/zookeeper-3.4.13/bin/../conf/zoo.cfg
    Mode: standalone
    
    
  6. 检查是否可以正常使用

    用telnet 来测试

    telnet 192.168.159.131 2181
    

    虚拟机的linux可以ping通

    1561033258518

    但是win7主机外面无法ping通

    1561033314530

    这一般是因为linux的防火墙问题,直接关闭就可以了

  7. 关闭linux 防火墙

    1. 检查防火墙状态,

      显示状态为running表示防火墙正在运行

      [root@bogon bin]# firewall-cmd --state
      running
      
    2. 关闭linux防火墙,并再次查询状态

      [root@bogon bin]# systemctl stop firewalld.service
      [root@bogon bin]# firewall-cmd --state
      not running
      
    3. 禁止开机启动防火墙

      [root@bogon bin]# systemctl disable firewalld.service
      Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
      Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
      

      在win主机上再次telnet,可以成功连接

      1561033489746

      创建spring boot项目进行连接zookeeper

      1. 用Ideal创建一个maven项目 ,在项目里添加三个module

        这三个项目分别是生产者dubboprovider 消费者dubboconsumer 接口duoboapi

        创建一个maven的项目

        1560945620551

        输入项目名字

        1560945665537

        下一步

        1560945713741

        进入项目界面

        1560945778728

        新建provider module

        1560945922825

        1560945942977

        1560945950011

        同样的方法 创建其它两个module,结果如下所示三个module创建完毕

        1561033762633

      2. 配置主项目 pom.xml

        引用三个主要的依赖,

        dubbo-spring-boot-starter: 在spring容器中注入特定bean ,集成了dubbo和spring boot

        zookeeper:zookeeper的依赖

        zkclient:zookeeper的客户端依赖

         <dependencies>
                <dependency>
                    <groupId>com.alibaba.spring.boot</groupId>
                    <artifactId>dubbo-spring-boot-starter</artifactId>
                    <version>1.0.2</version>
                </dependency>
                <dependency>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                    <version>3.4.13</version>
                </dependency>
                <dependency>
                    <groupId>com.101tec</groupId>
                    <artifactId>zkclient</artifactId>
                    <version>0.10</version>
                </dependency>
            </dependencies>
        
      3. 定义接口

        在dubboapi 模块中java下,新建一个类com.hcb.Service.IHelloService

        package com.hcb.Service;
        
        public interface  IHelloService {
            String SayHello(String name);
        }
        
        
      4. 实现 生产者模块

        在该模块的pom.xml引用接口

        <groupId>com.hcb</groupId>
            <artifactId>dubboprovider</artifactId>
            <dependencies>
                <dependency>
                    <groupId>com.hcb</groupId>
                    <artifactId>dubboapi</artifactId>
                    <version>1.0-SNAPSHOT</version>
                </dependency>
            </dependencies>
        

        新建main入口方法

        引用@SpringBootApplication,@EnableDubboConfiguration 注解

        • @SpringBootApplication 整合了三个注解。(默认属性)@Configuration + @EnableAutoConfiguration + @ComponentScan

        • @Configuration 是和@Bean 把实体model翻译成了xml的配置文件 ,使配置更简单

        • @EnableAutoConfiguration 能够自动配置spring的上下文,试图猜测和配置你想要的bean类,通常会自动根据你的类路径和你的bean定义自动配置。

        • @ComponentScan 会自动扫描指定包下的全部标有@Component的类,并注册成bean,当然包括@Component下的子注解@Service,@Repository,@Controller。

        • @EnableDubboConfiguration, 表示要开启dubbo功能.

        参考:https://www.cnblogs.com/MaxElephant/p/8108140.html

        package com.hcb;
        
        import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
        import org.springframework.boot.SpringApplication;
        import org.springframework.boot.autoconfigure.SpringBootApplication;
        
        import java.util.concurrent.CountDownLatch;
        
        @SpringBootApplication
        @EnableDubboConfiguration
        public class provider {
            public static void main(String[] args) throws InterruptedException {
                SpringApplication.run(provider.class,args);
                new CountDownLatch(1).await();
            }
        }
        
        

        定义一个类com.hcb.Service.HelloService 来实现 接口

        @Service注解,将自动注册到Spring容器,不需要再定义bean了

        @component (把普通pojo实例化到spring容器中,相当于配置文件中的

        泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),

        package com.hcb.Service;
        
        import com.alibaba.dubbo.config.annotation.Service;
        import org.springframework.stereotype.Component;
        
        @Service
        @Component
        public class HelloSevice implements IHelloService {
            public String SayHello(String name){
                return "hi "+name;
            }
        }
        		
        

        resoruces中新建application.properties配置 文件

        指定名字并给出要注册的zookeepr的地址

        spring.dubbo.appname=dubboprovider
        spring.dubbo.registry=zookeeper://192.168.159.131:2181
        

        启动

        在provider类中在击main方法所在的类,然后选择run

        1561035282837

        程序正常启动不报错

        1561035346692

      5. 消费者模块的配置

        1. 消费者consume中pom.xml的配置 ,

          引入接口和spring-boot-starter-web 是指这是一个web模块

          spring-boot-starter-web如果用2.1.5.RELEASE 会报错,先用1.5.3

             <dependency>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-starter-web</artifactId>
                      <version>1.5.3.RELEASE</version>
                  </dependency>
                  <dependency>
                      <groupId>com.hcb</groupId>
                      <artifactId>dubboapi</artifactId>
                      <version>1.0-SNAPSHOT</version>
                  </dependency>
          
        2. 建立配置文件 和provider一样,名字换成consumer就可以

          spring.dubbo.appname=dubboconsumer
          spring.dubbo.registry=zookeeper://192.168.159.131:2181
          
        3. 建立启动类

          package com.hcb;
          
          import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
          import org.springframework.boot.SpringApplication;
          import org.springframework.boot.autoconfigure.SpringBootApplication;
          
          import java.util.concurrent.CountDownLatch;
          
          @SpringBootApplication
          @EnableDubboConfiguration
          public class Consumer {
              public static void main(String[] args)  {
                  SpringApplication.run(Consumer.class,args);
              }
          }
          
          
        4. 建立controll类实现接口

          package com.hcb;
          
          import com.alibaba.dubbo.config.annotation.Reference;
          import com.hcb.Service.IHelloService;
          import org.springframework.web.bind.annotation.RequestMapping;
          import org.springframework.web.bind.annotation.RequestParam;
          import org.springframework.web.bind.annotation.RestController;
          
          @RestController
          @RequestMapping("/hello")
          public class HelloController {
              @Reference
              IHelloService ihelloService;
          
              @RequestMapping
              public String hello(@RequestParam String name){
                  return ihelloService.SayHello(name);
              }
          }
          
          
        5. 启动消费者

          1561035794634

          1561035816270

        6. 测试

          浏览器中输入 http://localhost:8080/hello?name=%E6%A1%82%E6%9E%97

          正确显示出来

          1561036292281

源码下载地址:
链接:https://pan.baidu.com/s/1WO2BQnsmIxP04mWNZin93A
提取码:5h0w

posted @ 2019-06-20 22:08  水木  阅读(415)  评论(0编辑  收藏  举报