dubbo zookeeper圖解入門配置

此次主要是對dubbo 和zookeeper的配置作個記錄,以便之後本身忘記了,或者踩的坑再次被踩html

快速閱讀

zookeerer相似 springcloud中的Eureka都作爲註冊中心,用srpingboot創建三個項目生產者,消費者,公共接口,引用阿里的dubbo作爲rpc框架, 生產者負責實現接口的業務邏輯 而且在zookeeper註冊中心中註冊,同是消費者也鏈接zookeeper註冊中心進行消息調用 。java

優勢:linux

作爲分佈式服務架構,將核心業務抽取出來,穩定服務器,同時擴展方便 。能夠針對高併發數據進行快速合理的擴展和監控。提升集羣的利用率web

zookeeper的配置

  1. 下載zookeeper 我用的版本是3.4.13spring

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

  2. linux服務器解壓api

    下載之後放到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功能.

        參考:http://www.javashuo.com/article/p-bwxrepcl-go.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

相關文章
相關標籤/搜索