服务注册发现

suaxi
2020-12-28 / 0 评论 / 99 阅读 / 正在检测是否收录...

服务注册发现

步骤:

1、开启zookeeper服务

2、提供者

  • 导入依赖
  • 配置注册中心的地址,服务发现名,要扫描的包
  • 在想要注册的服务类上增加(Dubbo包下的)@Service注解

3、消费者

  • 导入依赖
  • 配置注册中心地址,服务名
  • 从远程注入服务(Dubbo包下的)@Reference注解

1、开启zookeeper服务(以windows环境为例)

开启zookeeper服务.png

2、通过maven命令打包dubbo,或者在github下载源码导入idea打包

开启dubbo.png

通过cmd命令java -jar dubbo-admin-0.0.1-SNAPSHOT.jar启动dubbo

3、服务者Demo

导入依赖(服务者和消费者需要的依赖一样)

<!--Dubbo-->
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>2.7.3</version>
</dependency>
<!--zkClient-->
<dependency>
    <groupId>com.github.sgroschupf</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.1</version>
</dependency>
<!--引入zookeeper-->
<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.4.14</version>
    <!--排除slf4j-log4j12-->
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
    </exclusions>
</dependency>

application.yml配置(服务者)

server:
  port: 8088

dubbo:
  application:
    name: provider-server
  registry:
    address: zookeeper://127.0.0.1:2181
  scan:
    base-packages: com.sw.service

Service

package com.sw.service;

/**
 * @Author suaxi
 * @Date 2020/12/27 11:57
 */
public interface TicketService {

    public String getTicket();
}
package com.sw.service;

import org.apache.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;

/**
 * @Author suaxi
 * @Date 2020/12/27 11:58
 * zookeeper:服务注册与发现
 */

@Service //Dubbo @Service注解可以被扫描到,项目一启动,服务就自动注册到注册中心
@Component //使用Dubbo后尽量用Component注解,Spring的Service注解导包时容易搞混
public class TicketServiceImpl implements TicketService{
    @Override
    public String getTicket() {
        return "获得票一张!";
    }
}

4、消费者Demo

导入pom.xml的依赖与服务者一样

application.yml配置(消费者)

server:
  port: 8089

dubbo:
  application:
    name: consumer-server
  registry:
    address: zookeeper://127.0.0.1:2181

Service

package com.sw.service;

/**
 * @Author suaxi
 * @Date 2020/12/27 11:57
 */
public interface TicketService {

    public String getTicket();
}
package com.sw.service;

import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;

/**
 * @Author suaxi
 * @Date 2020/12/27 12:07
 */

@Service //放到Spring容器中
public class UserService {

    //想要拿到provider-server的票,需要到注册中心拿
    @Reference //引用,pom坐标,可以定义路径相同的接口名
    TicketService ticketService;

    public void buyTicket(){
        String ticket = ticketService.getTicket();
        System.out.println("在注册中心拿到===>"+ticket);
    }

}

Junit测试类

package com.sw;

import com.sw.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class ConsumerServerApplicationTests {

    @Autowired
    private UserService userService;

    @Test
    public void consumerTest() {
        userService.buyTicket();
    }

}

5、Dubbo前端管理页面

通过localhost:7001可以进入dubbo的管理员页面,账号密码都是root

dubbo可视化管理页面.png

0

评论 (0)

取消