【SpringBoot 实战】整合 dubbo 框架

本贴最后更新于 2322 天前,其中的信息可能已经沧海桑田

dubbo 是目前比较流行的 RPC 框架,很多互联网公司都在用,今天讲讲如何整合 dubbo。
示例实现:dubbo 基本配置、异步调用、服务降级、多注册中心、服务分组、多版本、结果缓存、优雅停机。

整体结构

imagepng
provider:提供接口,供消费者调用
provider-impl:提供者接口实现
consumer:消费者服务

pom 配置

<dependency> <groupId>com.alibaba.spring.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.10</version> </dependency>

提供者配置

1、ProviderImplApplication 类里面加入

@EnableDubboConfiguration

来开启 dubbo。

2、接口实现类中加入 com.alibaba.dubbo.config.annotation.Service 注解

@Service(interfaceClass = UserService.class, registry = {"test"}) @Component @Slf4j public class UserServiceImpl implements UserService{ ..... }

3、application.properties 配置

server.port = 8081 dubbo.scan.basePackages = com.cimu.provider.service spring.dubbo.application.name = cimu-provider spring.dubbo.application.organization = cimu spring.dubbo.application.owner = cimu #配置单个注册中心 #spring.dubbo.registry.address = zookeeper://ip:2181 #配置多个注册中心 spring.dubbo.registries[0].id = test spring.dubbo.registries[0].address = zookeeper://ip:2181 spring.dubbo.registries[1].id = test1 spring.dubbo.registries[1].address = zookeeper://ip:2182 spring.dubbo.protocol.port = 20880 spring.dubbo.protocol.name = dubbo spring.dubbo.server = true spring.dubbo.provider.retries = 0 #多版本 spring.dubbo.provider.version = 0.0.1 #服务分组 spring.dubbo.provider.group = cimu spring.dubbo.provider.timeout = 6000 #设置优雅停机超时时间,缺省超时时间是 10 秒,如果超时则强制关闭。 dubbo.service.shutdown.wait=15000

消费者配置

1、ConsumerApplication 类中加入

@EnableDubboConfiguration

来开启 dubbo。

2、application.properties

server.port = 8080 dubbo.scan.basePackages = com.cimu.provider.service spring.dubbo.application.name = cimu-consumer spring.dubbo.application.organization = cimu spring.dubbo.application.owner = cimu ##配置单个注册中心 #spring.dubbo.registry.address = zookeeper://ip:2181 #配置多个注册中心 spring.dubbo.registries[0].id = test spring.dubbo.registries[0].address = zookeeper://ip:2181 spring.dubbo.registries[1].id = test1 spring.dubbo.registries[1].address = zookeeper://ip:2182 spring.dubbo.protocol.port=20881 spring.dubbo.protocol.name=dubbo spring.dubbo.consumer.version = 0.0.1 spring.dubbo.consumer.group = cimu spring.dubbo.consumer.retries = 0 spring.dubbo.consumer.timeout = 10000

3、使用

@Reference(check=true,registry = "test") private UserService userService; @Reference(mock="return 123",registry = "test") private MockService mockService; @Reference(registry = "test") private AsyncService asyncService; @Reference(registry = "test1" ,cache="lru") private OtherRegistryService otherRegistryService;

源码地址

  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1063 引用 • 3455 回帖 • 162 关注
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    948 引用 • 1460 回帖
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 615 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
chaigx
欢迎关注我的公众号:程序之声。有些文章没办法同步过来,访问个人博客:http://www.chaiguanxin.com 杭州