天天看點

好消息:Dubbo & Spring Boot要來了

image

Duboo和Spring Boot都是非常優秀的架構,現在它們要結合了。為了簡化Dubbo開發內建,阿裡Dubbo團隊将釋出基于Spring Boot的版本,可快速上手Dubbo的分布式開發,并提供了一些準生産環境特性(如安全、健康檢查、配置外部化等……)。

如果你還不知道什麼是Dubbo,可以去Dubbo官網(

http://dubbo.io

)花點時間了解下。

下面來看看Dubbo & Spring Boot內建是如何做的!

用過Dubbo的都知道,分布式場景中有兩個重要的角色,一個是提供者,一個是消費者。

如何實作提供者服務

1、定義一個提供者接口:DemoService

public interface DemoService {

    String sayHello(String name);

}
           

2、實作一個提供者,并實作DemoService接口

@Service(
        version = "1.0.0",
        application = "${dubbo.application.id}",
        protocol = "${dubbo.protocol.id}",
        registry = "${dubbo.registry.id}"
)
public class DefaultDemoService implements DemoService {

    public String sayHello(String name) {
        return "Hello, " + name + " (from Spring Boot)";
    }

}
           

注意,提供者服務由注解@Service定義,其參數配置在application檔案中,見下方定義。

3、然後在appliation檔案中添加配置

# Spring boot application
spring.application.name = dubbo-provider-demo
server.port = 9090
management.port = 9091

# Base packages to scan Dubbo Components (e.g @Service , @Reference)
dubbo.scan.basePackages  = com.alibaba.boot.dubbo.demo.provider.service

# Dubbo Config properties
## ApplicationConfig Bean
dubbo.application.id = dubbo-provider-demo
dubbo.application.name = dubbo-provider-demo

## ProtocolConfig Bean
dubbo.protocol.id = dubbo
dubbo.protocol.name = dubbo
dubbo.protocol.port = 12345

## RegistryConfig Bean
dubbo.registry.id = my-registry
dubbo.registry.address = N/A
           

4、最後再提供一個提供者服務啟動類

@SpringBootApplication
public class DubboProviderDemo {

    public static void main(String[] args) {

        SpringApplication.run(DubboProviderDemo.class,args);

    }

}
           
更多提供者示例代碼可參考: https://github.com/dubbo/dubbo-spring-boot-project/tree/master/dubbo-spring-boot-samples/dubbo-spring-boot-sample-provider

如何實作消費者服務

消費者服務用來消費提供者提供的服務,也就是消費者服務調用提供者的服務進行操作。

消費者需要注入提供者的接口對應的Spring Bean執行個體。

1、定義一個消費者

@RestController
public class DemoConsumerController {

    @Reference(version = "1.0.0",
            application = "${dubbo.application.id}",
            url = "dubbo://localhost:12345")
    private DemoService demoService;

    @RequestMapping("/sayHello")
    public String sayHello(@RequestParam String name) {
        return demoService.sayHello(name);
    }

}
           

@Reference注解用來注入提供者服務的Spring Bean執行個體,其參數配置依然在application檔案中,見下方定義。

2、然後在appliation檔案中添加配置

# Spring boot application
spring.application.name = dubbo-consumer-demo
server.port = 8080
management.port = 8081


# Dubbo Config properties
## ApplicationConfig Bean
dubbo.application.id = dubbo-consumer-demo
dubbo.application.name = dubbo-consumer-demo

## ProtocolConfig Bean
dubbo.protocol.id = dubbo
dubbo.protocol.name = dubbo
dubbo.protocol.port = 12345
           

3、最後再提供一個消費者服務啟動類

@SpringBootApplication(scanBasePackages = "com.alibaba.boot.dubbo.demo.consumer.controller")
public class DubboConsumerDemo {

    public static void main(String[] args) {

        SpringApplication.run(DubboConsumerDemo.class,args);

    }

}
           
更多消費者示例代碼可參考: https://github.com/dubbo/dubbo-spring-boot-project/blob/master/dubbo-spring-boot-samples/dubbo-spring-boot-sample-consumer

先啟動提供者啟動類,再啟動消費者啟動類,通過通路消費者控制層可調用提供者服務進行消費。

更多與Spring Boot內建的新特性可參考官方文檔

項目位址: https://github.com/dubbo/dubbo-spring-boot-project

看完是不是覺得上手非常簡單了,Spring Boot真是快速開發神器。不過,目前該項目還未正式釋出,敬請期待,我們也将會持續關注,如果有更進一步消息會及時通知到大家。

推薦閱讀

面經:

史上最全Java進階面試題及答案

工具:

推薦一款線上創作流程圖、思維導圖軟體
分享Java幹貨,高并發程式設計,熱門技術教程,微服務及分布式技術,架構設計,區塊鍊技術,人工智能,大資料,Java面試題,以及前沿熱門資訊等。