springboot|springboot 集成 dubbo 做分布式应用

本贴最后更新于 1778 天前,其中的信息可能已经时移俗易

javaDEMO

Java 基础 Demo 站: https://www.javastudy.cloud
Java 中高级开发博客: https://www.lixiang.red
Java 学习公众号: java 技术大本营
java_subscribe

springboot 集成 dubbo

集成 dubbo 主要有以下几步
1.参考这篇文章配置 zookeeper
https://www.javastudy.cloud/articles/2019/11/06/1573033684821.html
2.建两个 springboot 应用, 一个做提供者, 一个做消费者(也可以用 gradle 多模块,建两个模块)这里 DEMO 使用的是多模块
3. 添加依赖
4. 配置 dubbo-zookeeper 相关信息
5. 编写接口
6.编写测试类

添加依赖

和 dubbo 相关的依赖,添加这两个就可以了, 一个是 dubbo 的, 一个是 zookeeper 的

compile group: 'org.apache.dubbo', name: 'dubbo-spring-boot-starter', version: '2.7.4.1'
	compile group: 'org.apache.dubbo', name: 'dubbo-dependencies-zookeeper', version: '2.7.4.1'

另外,因为通常 provider 只是启动 dubbo 提供者,不需要 web 之类的,所以还需要引一个 springboot 的 starter

implementation 'org.springframework.boot:spring-boot-starter'

全总配置文件可见文末的 DEMO 代码

配置 dubbo 和 zookeeper 的信息

provider 端的配置

spring.application.name=dubbo-test-provider

# 这是指使用了@Service 这个注解的实现类所在的包
dubbo.scan.base-packages=com.test.dubbo.provider.service

# Dubbo Protocol
dubbo.protocol.name=dubbo
dubbo.protocol.port=12346

## Dubbo Registry
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.application.owner=lixiang
dubbo.config-center.address=zookeeper://127.0.0.1:2181
dubbo.metadata-report.address=zookeeper://127.0.0.1:2181

consumer 端的配置

spring.application.name=dubbo-consumer

## Dubbo Registry
dubbo.registry.address=zookeeper://127.0.0.1:2181

编写服务提供者

整体目录结构如下所示:
image.png

HelloService.java:

public interface HelloService {

    public String hello();

}

HelloServiceImpl.java

/**
 * 注意这里的service是Dubbo里面的注解,如果要在这里面调用spring的bean
 * 需要再加一个@Component注解
 */
@Service
public class HelloServiceImpl implements HelloService {
    @Override
    public String hello() {
        return "hello";
    }
}

ProviderApplication.java:

/**
 * 注意这里没有使用@SpringBootApplication注解
 * 只需要使用@EnableAutoConfiguration这个注解就可以了
 * @author https://www.javastudy.cloud
 */
@EnableAutoConfiguration
public class ProviderApplication {

	public static void main(String[] args) {
		SpringApplication.run(ProviderApplication.class, args);
	}

}

编写测试的类

直接用单元测试来进行测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class ConsumerApplicationTests {

	@Reference
	HelloService helloService;

	@Test
	public void contextLoads() {
		String hello = helloService.hello();
		System.out.println(hello);
	}

}

结果输出

先启动 provider 的 man 函数,输出如下:
image.png

运行 Consumer 的测试函数输出如下:
image.png

可以在 zookeeper 中看到相应的 dubbo 注册的信息
image.png

DEMO 总评

Dubbo 做为现在国内流行常用的分布式框架,不仅仅要熟练掌握用法,而且还要深入研究一些原理,服务治理等等,平时在开发中常用到的配置有,配置超时时间,配置启动时不检查提供者等等. 后续还会有更多的 dubboDEMO 发出来,大家一起加油吧!!!

DEMO 下载

springbootdubbo.zip

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3187 引用 • 8213 回帖
  • Spring

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

    944 引用 • 1459 回帖 • 17 关注
  • Dubbo

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

    60 引用 • 82 回帖 • 597 关注

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...