zoukankan      html  css  js  c++  java
  • SpringBoot-分布式整合

    分布式

    1. Dubbo

    image-20200927140022934

    2. 整合Dubbo Zookeeper SpringBoot

    1. 提供者提供服务

    1. 导入依赖

    <!--导入依赖 dubbo + zookeeper-->
    <!--dubbo-->
    <!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter -->
    <dependency>
       <groupId>org.apache.dubbo</groupId>
       <artifactId>dubbo-spring-boot-starter</artifactId>
       <version>2.7.8</version>
    </dependency>
    <!--引入zookeeper-->
    <!--zookeeper client-->
    <!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
    <dependency>
       <groupId>com.github.sgroschupf</groupId>
       <artifactId>zkclient</artifactId>
       <version>0.1</version>
    </dependency>
    <dependency>
       <groupId>org.apache.curator</groupId>
       <artifactId>curator-framework</artifactId>
       <version>2.12.0</version>
    </dependency>
    <dependency>
       <groupId>org.apache.curator</groupId>
       <artifactId>curator-recipes</artifactId>
       <version>2.12.0</version>
    </dependency>
    <dependency>
       <groupId>org.apache.zookeeper</groupId>
       <artifactId>zookeeper</artifactId>
       <version>3.6.2</version>
       <!--由于日志会冲突, 排出这个slf4j-log4j12-->
       <exclusions>
          <exclusion>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-log4j12</artifactId>
          </exclusion>
       </exclusions>
    </dependency>
    

    2. 配置文件

    配置注册中心的地址, 以及服务发现名, 和要扫描的包

    server.port=8001
    
    # 服务应用名字
    dubbo.application.name=provider-server
    # 注册中心地址
    dubbo.registry.address=zookeeper://127.0.0.1:2181
    # 哪些服务要被注册
    dubbo.scan.base-packages=com.wang.service
    

    3. 注册服务

    接口

    package com.wang.service;
    
    public interface TicketService {
        String getTicket();
    }
    

    实现类

    package com.wang.service;
    
    import com.alibaba.dubbo.config.annotation.Service;
    import org.springframework.stereotype.Component;
    
    //zookeeper: 服务注册与发现
    
    //使用了dubbo后, 尽量不要使用Service注解(SpringBoot的Service)
    //这里的Service注解是dubbo的, 不要导错包!
    @Service
    //可以被扫描到, 在项目启动就自动注册到注册中心
    @Component
    public class TicketServiceImpl implements TicketService {
        @Override
        public String getTicket() {
            return "得到一张票!";
        }
    }
    

    2. 消费者如何消费

    1. 导入依赖

    与上面相同

    2. 配置文件

    配置注册中心的地址, 配置自己的服务名

    server.port=8002
    
    # 消费者去哪里拿服务, 要暴露自己的名字
    dubbo.application.name=consumer-server
    # 注册中心的地址
    dubbo.registry.address=zookeeper://127.0.0.1:2181
    

    3. 从远程注入服务

    package com.wang.service;
    
    import org.apache.dubbo.config.annotation.Reference;
    import org.springframework.stereotype.Service;
    
    //放到容器中, 这里要用SpringBoot的
    @Service
    public class UserService {
        //想拿到provider-server提供的票, 要去注册中心拿到服务
        //引用, Pom坐标, 也可以定义与要使用的接口路径相同的接口名
        @Reference
        TicketService TICKET_SERVICE;
    
        public void buyTicket() {
            String ticket = TICKET_SERVICE.getTicket();
            System.out.println("在注册中心拿到=>" + ticket);
        }
    
    }
    

    3. 注意

    • 要先开启ZooKeeper和Dubbo Admin

    • 提供者的@Service注解是Dubbo包中的, 不要导错

    • 提供者使用@Component将类被SpringBoot托管, 不要用@Service

    • 消费者要注册到SpringBoot中, 使用SpringBoot的@Service

    • 用dubbo的@Reference引用远程调用的接口, 注意, 要在和远程接口路径相同的路径下定义接口

      image-20200927172214426

      image-20200927172233008

    image-20200927172309599

  • 相关阅读:
    Java实现 洛谷 P1060 开心的金明
    (Java实现) 洛谷 P1605 迷宫
    (Java实现) 洛谷 P1605 迷宫
    (Java实现)洛谷 P1093 奖学金
    (Java实现)洛谷 P1093 奖学金
    Java实现 洛谷 P1064 金明的预算方案
    Java实现 洛谷 P1064 金明的预算方案
    (Java实现) 洛谷 P1031 均分纸牌
    QT树莓派交叉编译环开发环境搭建(附多个exe工具下载链接)
    武则天红人对唐睿宗的桃色报复(如此缺少城府,注定了要在宫廷中过早地出局)
  • 原文地址:https://www.cnblogs.com/wang-sky/p/13740733.html
Copyright © 2011-2022 走看看