加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

SpringBoot-分布式整合

发布时间:2020-12-15 01:16:26 所属栏目:大数据 来源:网络整理
导读:分布式 目录 分布式 1. Dubbo 2. 整合Dubbo Zookeeper SpringBoot 1. 提供者提供服务 1. 导入依赖 2. 配置文件 3. 注册服务 2. 消费者如何消费 1. 导入依赖 2. 配置文件 3. 从远程注入服务 3. 注意 1. Dubbo 2. 整合Dubbo Zookeeper SpringBoot 1. 提供者提

分布式

目录
  • 分布式
    • 1. Dubbo
    • 2. 整合Dubbo Zookeeper SpringBoot
      • 1. 提供者提供服务
        • 1. 导入依赖
        • 2. 配置文件
        • 3. 注册服务
      • 2. 消费者如何消费
        • 1. 导入依赖
        • 2. 配置文件
        • 3. 从远程注入服务
      • 3. 注意

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读