dubbo基本使用

相关链接:

git文档:https://github.com/apache/incubator-dubbo-spring-boot-project/blob/master/README_CN.md

官方文档:http://dubbo.apache.org/zh-cn/docs/user/quick-start.html

外部化配置:https://github.com/mercyblitz/blogs/blob/master/java/dubbo/Dubbo-Externalized-Configuration.md

已发行版本

您可以为您的工程引入最新 dubbo-spring-boot-starter 的发布,增加以下依赖到工程的 pom.xml 文件中:

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>0.2.0</version>
</dependency>

如果您的工程遇到了依赖问题, 请尝试添加如下 Maven 参考到工程的 pom.xml 文件中:

<repositories>
    <repository>
        <id>sonatype-nexus-snapshots</id>
        <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

开发版本

从现在开始, dubbo-spring-boot-project 将在每个发布中发行两个版本 :

  • 0.2.x 是支持 Spring Boot 2.x 的主要版本(推荐,长期维护)

  • 0.1.x 是支持 Spring Boot 1.x 的维护版本(兼容,短期维护)

源代码构建

如果你需要尝试最新 dubbo-spring-boot-project 的特性,您可将当前工程手动 Maven install 到本地 Maven 仓库:

  1. Maven install 当前工程

Maven install = mvn install

依赖关系

版本JavaSpring BootDubbo
0.2.01.8+2.0.x2.6.2+
0.1.11.7+1.5.x2.6.2+

快速开始

如果您对 Dubbo 不是非常了解,耽误您几分钟访问 http://dubbo.apache.org/ 。了解后,如果你期望更深入的探讨,可以移步用户手册

通常情况 , Dubbo 应用有两种使用场景 , 其一为 Dubbo 服务提供方 , 另外一个是 Dubbo 服务消费方,当然也允许两者混合,下面我们一起快速开始!

首先,我们假设存在一个 Dubbo RPC API ,由服务提供方为服务消费方暴露接口 :

public interface DemoService {

    String sayHello(String name);

}

实现 Dubbo 服务提供方

  1. 实现 DemoService 接口
@Service(
        version = "${demo.service.version}",
        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)";
    }

}
  1. 编写 Spring Boot 引导程序
@SpringBootApplication
public class DubboProviderDemo {

    public static void main(String[] args) {

        new SpringApplicationBuilder(DubboProviderDemo.class)
                .web(false) // 非 Web 应用
                .run(args);

    }

}
  1. 配置 application.properties :
# Spring boot application
spring.application.name = dubbo-provider-demo
server.port = 9090
management.port = 9091

# Service version
demo.service.version = 1.0.0

# 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

更多的实现细节 , 请参考 Dubbo 服务提供方示例.

实现 Dubbo 服务消费方

  1. 通过 @Reference 注入 DemoService :
@RestController
public class DemoConsumerController {

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

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

}
  1. 编写 Spring Boot 引导程序(Web 应用) :
@SpringBootApplication(scanBasePackages = "com.alibaba.boot.dubbo.demo.consumer.controller")
public class DubboConsumerDemo {

    public static void main(String[] args) {

        SpringApplication.run(DubboConsumerDemo.class,args);

    }

}
  1. 配置 application.properties :
# Spring boot application
spring.application.name = dubbo-consumer-demo
server.port = 8080
management.port = 8081

# Service Version
demo.service.version = 1.0.0

# 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

请确保 Dubbo 服务提供方服务可用, DubboProviderDemo 运行方可正常。

### 使用 Dubbo 进行服务调用和分布式应用开发 #### 服务提供者配置和服务暴露 为了使应用程序能够作为服务提供者工作,在项目中引入必要的依赖之后,需定义好要发布的接口以及其实现类。接着在 Spring 配置文件里声明 dubbo:applicationdubbo:registry 和 dubbo:protocol 节点来指定应用名称、注册中心地址及通信协议等基本信息[^1]。 ```xml <dubbo:application name="demo-provider"/> <dubbo:registry address="zookeeper://127.0.0.1:2181"/> <dubbo:protocol name="dubbo" port="20880"/> ``` 对于具体的服务,则通过 dubbo:service 来标注并公开出去: ```xml <bean id="demoService" class="com.example.DemoServiceImpl"/> <dubbo:service interface="com.example.IDemoService" ref="demoService"/> ``` #### 客户端远程调用设置 客户端同样需要完成上述提到的基础环境搭建部分的工作;另外还需利用 dubbo:reference 注解或 XML 方式注入远端服务实例以便发起请求操作。 ```xml <dubbo:reference id="demoService" interface="com.example.IDemoService"/> ``` 随后就可以像本地 Bean 一样正常使用该对象来进行方法调用了。 #### 动态管理和维护 借助于 Telnet 命令工具,管理员可以在不重启程序的前提下查看当前在线节点状态、统计信息查询或是执行一些简单的控制指令,从而达到实时监控与快速响应的目的[^2]。 #### 细粒度的服务治理策略——分组机制 考虑到多版本共存或者跨部门协作的需求场景下可能出现冲突的情况,因此推荐采用基于 Group 属性的方式对同类但有所区别的 API 实施隔离措施,进而保障整个生态系统的稳定运行[^3]。 ```java // 提供方 @Service(group = "v1", version = "1.0.0") public class DemoServiceImpl implements IDemoService {} // 消费方 @Reference(group = "v1", version = "1.0.0") private IDemoService demoService; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值