springboot+dubbo+zookeeper集群整合

前提摘要

     搭建zookeeper集群环境:https://blog.csdn.net/qq_37936542/article/details/107096985

     ▌

       --- zk1 :192.168.0.211:2181

       --- zk2 :192.168.0.212:2181

       --- zk3 :192.168.0.213:2181

 

 

Springboot作为一款优秀的快速开发框架,集成dubbo也是挺简单的,但还是需要细心,细节决定成败

 

▌ 搭建两个springboot项目

        dubbo_provider:服务提供者

        dubboo_consumer:服务消费者

 

▌ 开发服务提供者 dubbo_provider

 ♦ ♦ 导入maven依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
	<groupId>com.101tec</groupId>
	<artifactId>zkclient</artifactId>
	<version>0.10</version>
</dependency>

<dependency>
	<groupId>org.apache.dubbo</groupId>
	<artifactId>dubbo-spring-boot-starter</artifactId>
	<version>2.7.3</version>
</dependency>

<dependency>
	<groupId>org.apache.curator</groupId>
	<artifactId>curator-recipes</artifactId>
	<version>2.8.0</version>
</dependency>

 ♦ ♦ 定义服务类接口

public interface ProviderService {

	public String add();

	public String del();

	public String upd();

	public String get();

}

♦ ♦ 定义服务类接口实现类

注意点 1:@Service注解不要用混了

注意点 2:需要加@Component注解

import org.apache.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;
import com.mote.service.ProviderService;

@Component
@Service
public class ProviderServiceImpl implements ProviderService {

	@Override
	public String add() {
		System.out.println("添加服务被调用");
		return "success";
	}

	@Override
	public String del() {
		System.out.println("删除服务被调用");
		return "success";
	}

	@Override
	public String upd() {
		System.out.println("更新服务被调用");
		return "success";
	}

	@Override
	public String get() {
		System.out.println("获取服务被调用");
		return "success";
	}

}

 ♦ ♦ yml配置

注意点 base-package:ProviderServiceImpl所在包

server: 
  port: 8090  # 定义项目访问端口

dubbo: 
  application: 
    name: service-provider # dubbo应用名称
  scan: 
    base-packages: com.mote.service.impl # 扫描指定包,将使用@Service注解修饰的类发布为服务
  protocol:   
    port: 20880 # dubbo协议端口,默认20880
    name: dubbo # dubbo协议名称
  registry:     # zookeeper集群注册中心地址 
    address: zookeeper://192.168.0.211:2181?backup=192.168.0.212:2181,192.168.0.213:2181
  config-center: 
    timeout: 10000 # 连接注册中心的超时时间:单位是毫秒

 

♦ ♦ 启动类

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

 

▌ 开发服务消费者 dubbo_consumer

 ♦ ♦ 导入maven依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
	<groupId>com.101tec</groupId>
	<artifactId>zkclient</artifactId>
	<version>0.10</version>
</dependency>

<dependency>
	<groupId>org.apache.dubbo</groupId>
	<artifactId>dubbo-spring-boot-starter</artifactId>
	<version>2.7.3</version>
</dependency>

<dependency>
	<groupId>org.apache.curator</groupId>
	<artifactId>curator-recipes</artifactId>
	<version>2.8.0</version>
</dependency>

 

 ♦ ♦ 定义服务类接口(直接拷贝dubbo_provider项目中的ProviderService)

public interface ProviderService {

	public String add();

	public String del();

	public String upd();

	public String get();

}

 

♦ ♦ 定义消费者

import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.mote.service.ProviderService;

@RestController
@RequestMapping("/comsumer")
public class ConsumerController {

	@Reference // 注入服务提供方的服务
	public ProviderService service;

	@GetMapping("/get")
	public String get() {
		return service.get();
	}
}

 

♦ ♦ yml配置

server: 
  port: 8080

dubbo: 
  application: 
    name: service-consumer # dubbo 应用名称
  registry: # zookeeper 集群注册中心地址
    address: zookeeper://192.168.0.211:2181?backup=192.168.0.212:2181,192.168.0.213:2181

♦ ♦ 启动类

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

 

▌ 到这里,初步的集成结束,下面测试一把

     先启动provider项目,然后启动consumer项目,访问ip://8080/comsumer/get

    

     

 

 

下一篇:介绍dubbo各种服务场景及相关配置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章