Springboot + Dubbo + Nacos微服务框架整合

背景

注册中心Eureka2闭源,zk复杂的paxos一致性算法、假死脑裂、无管理控制台不方便管理等问题,以下文中使用到nacos作为注册中心,作为配置中心后续介绍(对比参考:https://blog.csdn.net/Mr_Errol/article/details/84938993)。

参考:阿里巴巴为什么不用 ZooKeeper 做服务发现?

Springboot+Dubbo+Nacos微服务框架整合

Nacos server 1.0.0 (文档:https://nacos.io/zh-cn/docs/namespace-endpoint-best-practices.html)

Springboot version 2.0.4 (文档:https://spring.io/projects/spring-boot/)

Dubbo 2.6.5

1、创建maven项目

springboot-dubbo-nacos-demo

2、创建两个子模块服务提供者和消费者

demo-provider、demo-consumer

3、代码

3.1 父pom文件


    1.8
    2.0.4.RELEASE
    0.2.1.RELEASE
    0.2.1
    2.6.5
    0.0.1
    1.0.2

    org.springframework.boot
    spring-boot-starter-web




    com.alibaba
    dubbo
    ${dubbo.version}


    com.alibaba
    dubbo-registry-nacos
    ${dubbo-registry-nacos.version}


    com.alibaba.spring
    spring-context-support
    ${dubbo-spring-context-support.version}





    com.alibaba.boot
    dubbo-spring-boot-starter
    ${dubbo-spring-boot-starter.version}
    
        
            com.alibaba
            dubbo
        
    


    com.alibaba.boot
    nacos-discovery-spring-boot-starter
    ${nacos-discovery-spring-boot-starter.version}

3.2 demo-provider服务提供方

application.properties添加如下配置:

nacos.config.server-addr=127.0.0.1:8848

##dubbo config
spring.application.name=demo-nacos-provider
server.port=8899
dubbo.application.name=${spring.application.name}
dubbo.registry.address=nacos://127.0.0.1:8848

# dubbo暴露服务对应package
dubbo.scan.base-packages=com.test.demoprovider.service
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
SpringBoot启动类添加注解:
@NacosPropertySource(dataId = "example", autoRefreshed = true)
暴露的DemoService接口实现类DemoServiceImpl添加@Service注解暴露服务,注意是com.alibaba.dubbo.config.annotation.Service。
@Service
public class DemoServiceImpl implements DemoService {
   @Override
   public String test(String param) {
      return "hello " + param;
   }
}

3.3 demo-consumer服务消费方

application.properties添加如下配置:

nacos.config.server-addr=127.0.0.1:8848

##dubbo config
spring.application.name=demo-nacos-provider
server.port=8899
dubbo.application.name=${spring.application.name}
dubbo.registry.address=nacos://127.0.0.1:8848 
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880

消费方消费dubbo服务:

@Controller
@RequestMapping("test")
public class TestNacosConsumer {
   @Reference
   DemoService demoService;

   @RequestMapping(value = "test", method = RequestMethod.GET)
   @ResponseBody
   public String getCounsumerTest() {
      return demoService.test("22");
   }
}

4、naco后端查看服务

服务名

分组

集群数目

实例数

健康实例数

操作

providers:com.test.demoprovider.service.DemoService:group1

DEFAULT_GROUP

1

1

1

详情 删除

consumers:com.test.demoprovider.service.DemoService:group1

DEFAULT_GROUP

1

1

1

详情 删除

你可能感兴趣的:(微服务-框架)