Dubbo 服务提供方|学习笔记

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 快速学习 Dubbo 服务提供方

开发者学堂课程【RocketMQ 知识精讲与项目实战(第二阶段)Dubbo 服务提供方】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/703/detail/12402


Dubbo 服务提供方


内容介绍:

一、添加依赖

二、配置文件

三、启动类

四、服务实现

五、总结

上节内容开发完了 RPC 服务接口,本节开始开发服务的提供者。开发服务的提供者也是基于 SpringBoot 整合 Dubbo,第一步添加相关的依赖,第二步时编写配置文件,第三步编写启动类,第四步实现服务的业务。


一、添加依赖

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>2.0.1.RELEASE</version>

</parent>

继承SpringBoot的父工程。

<dependencies>

<!--dubbo-->

<dependency>

<groupId>pm.alibaba.spring.boot</groupId>

<artifactId>dubbo-spring-boot-starter</artifactId>

<version>2.0.0</version>

</dependency>

<!--spring-boot-stater-->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter</artifactId>

<exclusions>

<exclusion>

<artifactId>1og4j-to-slf4j</artifactId>

<groupId>org.apache. logging.log4j</groupId>

</exclusion>

</exclusions>

</dependency>

<!--zookeeper-->

<dependency>

<groupId>org.apache.zookeeper</groupId>

<artifactId>zookeeper</artifactId>

<version>3.4.10</version>

<exclusions>

<exclusion>

<groupId>org.s1f4j</groupId>

<artifactId>s1f4j-1og4j12</artifactId>

</exclusion>

<exclusion>

<groupId>1og4j</groupId>

<artifactId>1og4j</artifactId>

</exclusion>

</exclusions>

</ dependency>

<dependency>

<groupId>com.101tec</groupId>

<artifactId>zkclient</artifactId>

<version>0.9</version>

<exclusions>

<exclusion>

<artifactId>s1f4j-1og4j12</artifactId>

<groupId>org.s1f4j</groupId>

</exclusion>

</exclusions>

</ dependency>

<!--API-->

<dependency>

<groupId>com.itheima. demo</groupId>

<artifactId>dubbo-api</artifactId>

<version>1.O-SNAPSHOT</version>

</dependency>

</dependencies>

依赖主要包含了三个部分。第一部分时 dubbo 相关的依赖,第二部分时 spring-boot 自身的依赖。第三部分就是zookeeper,因为服务的提供者要将服务信息、服务的地址要注册到 zookeeper 当中,所以要加入 zookeeper 相关的依赖。第四部分是刚才所加的接口项目的依赖。

在其中对一些依赖做了处理,对一个依赖进行排除,因为拿来此处依赖会有一些日志的冲突。


二、配置文件

配置文件主要配置了哪些方面的信息?

#application.properties

spring.app1ication.name=dubbo-demo-provider

spring.dubbo.application.id=dubbo-demo-provider

spring.dubbo.application.name=dubbo-demo-providerspring.dubbo.registry.address=zookeeper://

192.168.25.140:2181;zookeeper://

192.168.25.140:2182;zookeeper://192.168.25.140:2183

spring.dubbo.server=true

spring.dubbo.protocol.name=dubbo

spring.dubbo.protocol.port=20880

当前的服务提供者将自己的信息注册到 zookeeper 当中,服务的名称,英文的名字需要去指定;服务的 ID 需要指定;dubbo 中的名字需要指定。spring.dubbo.registry.address 注册中心的地址以集群的方式搭建,集群中有三个节点。

Zookeeper 的配置使用 zookeeper 协议,写上集群中的节点。现在的项目是服务的提供者,所以需要编写spring.dubbo.server=true。

protocol.name 和 protocol.port 是两个端口号。

代表当前服务的协议使用 dubbo。20880端口号是网络服务调用的时候使用的端口号。即将服务在20880端口上启动起来


三、启动类

创建新的java文件:

com.itheima.shop.springboot.dubbo.ProviderApplication.java

import

org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class ProviderApplication {

public static void main(string[] args) {

SpringApplication.run(ProviderApplication.class,args);

}

}

在前面加@EnableDubboConfiguration 注解,并进行导包。


四、服务实现

新建 java 文件:service.impl.UserServiceImpl.java 实现接口

@Component

@Service(interfaceclass = IUserservice.class)

public class UserServiceImpl implements IUserservice

{

@Override

public string sayHello(string name) {

return "hello: "+name;

}

}

访问接口时传输一个名字,响应一个 hello+“名字”。服务的提供方类首先应该注册到 spring 容器中,所以要添加@Service 注解,注意该注解是spring的。

这个接口实现类实现了 IUserService 的接口,作为服务提供方存在。所以要关联上该服务和接口。

不仅仅是简单实现,还需要进行标识。要标识当前的服务是一个 dubbo 的一个 service。为了区分开来,我们可以把上面的@Service用@Component 替换防止歧义。

@Service 和@Component 注解的作用相同。下面配置一个 dubbo 的 Service 的注解,标识当前是针对哪一个接口提供的服务,需要一个 Class。

运行截图:

image.png


五、总结

总体来讲做了四件事情。第一件事添加依赖,第二件是配置文件。

在配置文件里需要注意:zookeeper 集群的地址,集群当中有三个节点。

每一个节点用分号隔开;对于服务提供方来讲要配置 dubbo.server=true;还要配置协议,名字和端口。

第三步就是编写启动类,和以前本质上相同,但多了@EnableDubboConfiguration 注解。

第四步是针对接口进行实现,提供了真正的服务。业务方法重要的是上面的配置。

第一个@Component 配置成一个 springbin,第二个配置了 dubboservice。

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
19天前
|
JSON Dubbo Java
【Dubbo协议指南】揭秘高性能服务通信,选择最佳协议的终极攻略!
【8月更文挑战第24天】在分布式服务架构中,Apache Dubbo作为一款高性能的Java RPC框架,支持多种通信协议,包括Dubbo协议、HTTP协议及Hessian协议等。Dubbo协议是默认选择,采用NIO异步通讯,适用于高要求的内部服务通信。HTTP协议通用性强,利于跨语言调用;Hessian协议则在数据传输效率上有优势。选择合适协议需综合考虑性能需求、序列化方式、网络环境及安全性等因素。通过合理配置,可实现服务性能最优化及系统可靠性提升。
34 3
|
29天前
|
缓存 Dubbo Java
Dubbo服务消费者启动与订阅原理
该文章主要介绍了Dubbo服务消费者启动与订阅的原理,包括服务消费者的启动时机、启动过程以及订阅和感知最新提供者信息的方式。
Dubbo服务消费者启动与订阅原理
|
29天前
|
Dubbo 网络协议 Java
深入掌握Dubbo服务提供者发布与注册原理
该文章主要介绍了Dubbo服务提供者发布与注册的原理,包括服务发布的流程、多协议发布、构建Invoker、注册到注册中心等过程。
深入掌握Dubbo服务提供者发布与注册原理
|
29天前
|
负载均衡 Dubbo Java
Dubbo服务Spi机制和原理
该文章主要介绍了Dubbo中的SPI(Service Provider Interface)机制和原理,包括SPI的基本概念、Dubbo中的SPI分类以及SPI机制的实现细节。
Dubbo服务Spi机制和原理
|
11天前
|
C# 开发者 Windows
勇敢迈出第一步:手把手教你如何在WPF开源项目中贡献你的第一行代码,从选择项目到提交PR的全过程解析与实战技巧分享
【8月更文挑战第31天】本文指导您如何在Windows Presentation Foundation(WPF)相关的开源项目中贡献代码。无论您是初学者还是有经验的开发者,参与这类项目都能加深对WPF框架的理解并拓展职业履历。文章推荐了一些适合入门的项目如MvvmLight和MahApps.Metro,并详细介绍了从选择项目、设置开发环境到提交代码的全过程。通过具体示例,如添加按钮点击事件处理程序,帮助您迈出第一步。此外,还强调了提交Pull Request时保持专业沟通的重要性。参与开源不仅能提升技能,还能促进社区交流。
22 0
|
29天前
|
缓存 负载均衡 Dubbo
Dubbo服务集群容错原理(重要)
该文章主要介绍了Dubbo服务集群容错的原理,包括集群容错技术的概念、Dubbo中使用的集群容错技术种类及其原理。
|
29天前
|
负载均衡 Dubbo 算法
Dubbo服务负载均衡原理
该文章主要介绍了Dubbo服务负载均衡的原理,包括Dubbo中负载均衡的实现位置、为什么需要负载均衡机制、Dubbo支持的负载均衡算法以及随机负载均衡策略的源码分析。
|
4月前
|
Dubbo Java 应用服务中间件
微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用
微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用
|
14天前
|
Dubbo Java 应用服务中间件
💥Spring Cloud Dubbo火爆来袭!微服务通信的终极利器,你知道它有多强大吗?🔥
【8月更文挑战第29天】随着信息技术的发展,微服务架构成为企业应用开发的主流模式,而高效的微服务通信至关重要。Spring Cloud Dubbo通过整合Dubbo与Spring Cloud的优势,提供高性能RPC通信及丰富的生态支持,包括服务注册与发现、负载均衡和容错机制等,简化了服务调用管理并支持多种通信协议,提升了系统的可伸缩性和稳定性,成为微服务通信领域的优选方案。开发者仅需关注业务逻辑,而无需过多关心底层通信细节,使得Spring Cloud Dubbo在未来微服务开发中将更加受到青睐。
30 0
|
1月前
|
负载均衡 Dubbo 应用服务中间件
框架巨擘:Dubbo如何一统异构微服务江湖,成为开发者的超级武器!
【8月更文挑战第8天】在软件开发中,微服务架构因灵活性和可扩展性备受欢迎。面对异构微服务的挑战,Apache Dubbo作为高性能Java RPC框架脱颖而出。它具备服务注册与发现、负载均衡及容错机制等核心特性,支持多种通信协议和序列化方式,能有效连接不同技术栈的微服务。Dubbo的插件化设计保证了面向未来的扩展性,使其成为构建稳定高效分布式系统的理想选择。
33 5