栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

分布式Dubbo+zookeeper+SpringBoot

分布式Dubbo+zookeeper+SpringBoot

分布式Dubbo+zookeeper+SpringBoot 服务发现

服务发现,即消费端自动发现服务地址列表的能力,是微服务框架需要具备的关键能力,借助于自动化的服务发现,微服务之间可以在无需感知对端部署位置与 IP 地址的情况下实现通信。

实现服务发现的方式有很多种,Dubbo 提供的是一种 Client-based 的服务发现机制,通常还需要部署额外的第三方注册中心组件来协调服务发现过程,如常用的 Nacos、Consul、Zookeeper 等,Dubbo 自身也提供了对多种注册中心组件的对接,用户可以灵活选择。

Dubbo 基于消费端的自动服务发现能力,其基本工作原理如下图:

服务发现的一个核心组件是注册中心,Provider 注册地址到注册中心,Consumer 从注册中心读取和订阅 Provider 地址列表

注册中心推荐zookeeper

下载链接:在3.5.5版本后,官方提供了bin的包,可以不需要配置环境,直接上手查看

http://mirror.bit.edu.cn/apache/zookeeper/

之后以管理员方式启动bin文件夹中的cmd文件

会报错,我们需要吧conf里的,zoo_simple复制一份,改成zoo.cof

dubbo-admin

下载地址:GitHub - apache/dubbo-admin at master-0.2.0

选择master 0.2.0分支

进入E:StudyJavatoolsdubbo-admin-master-0.2.0dubbo-adminsrcmainresources

端口号默认 2181 如需修改这里也要修改

之后我们用cmd打开 E:StudyJavatoolsdubbo-admin-master-0.2.0dubbo-admin,

输入mvn clean package -Dmaven.test.skip=true,打成jar包

时间会有点久

切记

要先启动zookeeper server,再运行jar包

访问 http://localhost:7001/

用户名和密码都是 root

zookeeper:注册中心

dubbo-admin:是一个监控管理后台

Dubbo :jar包

服务注册发现实战

创建两个项目

provider 提供者

consumer 消费者

配置:privoder 端口配置为8081 custom 端口配置为 8082

先创建provider项目

1、导入依赖(如果使用高版本的会报错,降低版本再试)

		
		
			org.apache.dubbo
			dubbo-spring-boot-starter
			2.7.12
		

		 
		
            com.github.sgroschupf
			zkclient
			0.1
		

		
		
			org.apache.curator
			curator-framework
			2.12.0
		
		
			org.apache.curator
			curator-recipes
			2.12.0
		
		
			org.apache.zookeeper
			zookeeper
			3.4.14
			
			
				
					org.slf4j
					slf4j-log4j12
				
			
		

2、配置properties

server.port=8001

# 服务应用名字
dubbo.application.name=provider_server
# 注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
# 那些服务要被注册
dubbo.scan.base-packages=com.xsq.service

写业务代码

public interface TickerService {
    public String ticket();
}
//zookeeper: 服务注册与发现

@DubboService //在项目一启动就注册到注册中心
@Component //为什么不加service注解,应为dubbo的注册service,用于区分
public class TickerServiceImpl implements TickerService{
    @Override
    public String ticket() {
        return "《java从基础到入门》";
    }
}

要在主类上加 @EnableDubbo

@EnableDubbo
@SpringBootApplication
public class ProviderServerApplication {

	public static void main(String[] args) {
		SpringApplication.run(ProviderServerApplication.class, args);
	}
}

先启动zookeeper --> 在启动Dubbo-jar包 --> 最后启动服务 访问 localhost:7001/- ->前往注册中心查看服务

可以查看这个服务的详细信息

想拿到票,需要调用远程服务,拿到我们服务之者的方法,要去注册中心拿服务

我们先要配置的custom的配置,一样需要导入相关依赖(同provider的依赖一样)。

编写配置文件:

server.port=8002

# 消费者从哪里拿 需要暴露自己的名字
dubbo.application.name=consumer_server
# 注册中心的地址
dubbo.registry.address=zookeeper://127.0.0.1:2181

之后我们需要调用本地的 @Autowired是从spring容器中本地调用,我们这里远程调用@DubboReference

package com.xsq.service;

import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Service; //注意使用的spring的@Service

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

    //想拿到provider_server提供的票,要去注册中心拿
    @DubboReference//引用  方法一:Pom坐标  方法二:可以定义路径相同的接口名
    TickerService tickerService;

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

//要路径相同的接口名
package com.xsq.service;

public interface TickerService {
    public String ticket();
}

测试

@SpringBootTest
class ConsumerServerApplicationTests {

    @Autowired
    UserService userService;

    @Test
    void contextLoads() {
        userService.buyTicket();
    }
}

从注册中心拿到了

步骤:

    提供者服务

      导入依赖配置文件,注册中心地址,服务发现名和要扫描的服务想要被注册的服务上加上dubbo的service(@DubboService)注解和spring的@Compent组件

    消费者如何消费

      导入依赖

      配置文件,服务发现名,注册中心地址

      我们需要在客户端建立一个一样的服务者接口,直接远程注入就可以使用这个服务的方法了,

      远程调用注解@DubboReference

到这里简单的服务注册与发现的使用就完成啦,
er: 服务注册与发现

@DubboService //在项目一启动就注册到注册中心
@Component //为什么不加service注解,应为dubbo的注册service,用于区分
public class TickerServiceImpl implements TickerService{
@Override
public String ticket() {
return “《java从基础到入门》”;
}
}



要在主类上加 @EnableDubbo

```java
@EnableDubbo
@SpringBootApplication
public class ProviderServerApplication {

	public static void main(String[] args) {
		SpringApplication.run(ProviderServerApplication.class, args);
	}
}

先启动zookeeper --> 在启动Dubbo-jar包 --> 最后启动服务 访问 localhost:7001/- ->前往注册中心查看服务

[外链图片转存中…(img-YHjixKHF-1644400991628)]

可以查看这个服务的详细信息

[外链图片转存中…(img-rEJnXwZy-1644400991628)]

想拿到票,需要调用远程服务,拿到我们服务之者的方法,要去注册中心拿服务

我们先要配置的custom的配置,一样需要导入相关依赖(同provider的依赖一样)。

编写配置文件:

server.port=8002

# 消费者从哪里拿 需要暴露自己的名字
dubbo.application.name=consumer_server
# 注册中心的地址
dubbo.registry.address=zookeeper://127.0.0.1:2181

之后我们需要调用本地的 @Autowired是从spring容器中本地调用,我们这里远程调用@DubboReference

package com.xsq.service;

import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Service; //注意使用的spring的@Service

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

    //想拿到provider_server提供的票,要去注册中心拿
    @DubboReference//引用  方法一:Pom坐标  方法二:可以定义路径相同的接口名
    TickerService tickerService;

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

[外链图片转存中…(img-9BaiOm4v-1644400991629)]

//要路径相同的接口名
package com.xsq.service;

public interface TickerService {
    public String ticket();
}

测试

@SpringBootTest
class ConsumerServerApplicationTests {

    @Autowired
    UserService userService;

    @Test
    void contextLoads() {
        userService.buyTicket();
    }
}

从注册中心拿到了

[外链图片转存中…(img-SFV04r9r-1644400991629)]

步骤:

    提供者服务

      导入依赖配置文件,注册中心地址,服务发现名和要扫描的服务想要被注册的服务上加上dubbo的service(@DubboService)注解和spring的@Compent组件

    消费者如何消费

      导入依赖

      配置文件,服务发现名,注册中心地址

      我们需要在客户端建立一个一样的服务者接口,直接远程注入就可以使用这个服务的方法了,

      远程调用注解@DubboReference

到这里简单的服务注册与发现的使用就完成啦,

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/735944.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号