原创

spring boot 2.1学习笔记【十四】SpringBoot 2 + dubbo 多注册中心

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://it007.blog.csdn.net/article/details/86494772

springboot系列学习笔记全部文章请移步值博主专栏**: spring boot 2.X/spring cloud Greenwich
由于是一系列文章,所以后面的文章可能会使用到前面文章的项目。springboot系列代码全部上传至GitHub:https://github.com/liubenlong/springboot2_demo
本系列环境:Java11;springboot 2.1.1.RELEASE;springcloud Greenwich.RELEASE;MySQL 8.0.5;

接上一篇文章 spring boot 2.1学习笔记【十二】SpringBoot 2 集成 dubbo 2.6.5

有时候会对外提供不同的服务,注册到多个注册中心。客户端也经常会调用多个注册中心的服务。

springboot 2.1.1
dubbo 2.6.5

本地启动两个ZK

本地解压两个ZK的安装包
在这里插入图片描述

由于ZK默认会启动jetty,固我们这里不仅要改ZK端口,还要改jetty端口。
我们修改zookeeper-3.5.4-beta-2\conf\zoo.cfg:
在这里插入图片描述

新下载的包解压后没有zoo.cfg,需要将zoo_sample.cfg改名为zoo.cfg。

单注册中心升级多注册中心

我们再API中提供另一个service及其实现:

public interface Demo1Service {
    String sayHello3(String name);
}

//实现类【这里通过registry 指定注册中心】
@Service
//注册到多个配置中心:
//@Service(registry = {"registry1","registry2"})
@Slf4j
public class DefaultDemo1Service implements Demo1Service {
    @Override
    public String sayHello3(String name) {
        return "Hello, " + name + " (from Spring Boot 2)";
    }
}

DefaultDemoService指定注册中心:

@Service(registry = "registry1")
@Slf4j
public class DefaultDemoService implements DemoService {
//省略代码

application.yml添加多个注册中心。服务提供方与消费方的配置相同。完整配置:

dubbo:
  application:
    name: mydubboservice
    id: mydubboservice
  ## ProtocolConfig
  protocol:
    id: dubbo
    name: dubbo
    port: 20880
  scan:
    base-packages: com.example.dubbo.provider

#多注册中心。这里指定了registry2为默认注册中心
  registries:
    registry1:
      address: zookeeper://127.0.0.1:2181
    registry2:
      address: zookeeper://127.0.0.1:2182
      default: true

#  单个注册中心
#  registry:
#    address: zookeeper://127.0.0.1:2181
  provider:
    validation: true
    filter: dubboLogFilter
server:
  port: 8888

测试controller改造:

@RestController
@Slf4j
public class DemoConsumerController {
    @Reference
    private Demo1Service demo1Service;
    @Reference(registry = "registry1")
    private DemoService demoService;

    @RequestMapping("/test")
    public Map<String, String> sayHello(@RequestParam String name) {
        return Map.of("demo1Serviceresult", demo1Service.sayHello3(name), "demoServiceresult", demoService.sayHello(name));
    }

    @RequestMapping("/test1")
    public Stu sayHello1(@RequestParam int age, String name) {
        Stu stu = demoService.sayHello1(Stu.builder().age(age).name(name).build());
        return stu;
    }
}

整体架构:
在这里插入图片描述

更多使用请参考官方文档: dubbo用户及开发者手册

springboot系列学习笔记全部文章请移步值博主专栏**: spring boot 2.X/spring cloud Greenwich
由于是一系列文章,所以后面的文章可能会使用到前面文章的项目。springboot系列代码全部上传至GitHub:https://github.com/liubenlong/springboot2_demo
本系列环境:Java11;springboot 2.1.1.RELEASE;springcloud Greenwich.RELEASE;MySQL 8.0.5;

文章最后发布于: 2019-01-15 16:23:02
展开阅读全文
0 个人打赏
私信求帮助

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览