Dubbo教程
一:简介
-
HTTP和RPC
http:通信协议
RPC:本质上和http一样,远程过程调用,核心模块:通信和序列化(数据转换,方便数据传输)
-
dubbo 高性能的轻量级的开源Java RPC框架
-
http://dubbo.apache.org/zh-cn/docs/user/quick-start.html
-
http://dubbo.apache.org/zh-cn/docs/user/references/registry/zookeeper.html
二:流程
三:相关服务
- zookeeper:推荐的注册中心
- dunno-admin:监控管理后台
四:整合springboot
前提:zookeeper服务已开启
-
提供者提供服务
-
导入依赖
<!--导入dubbo+zookeeper依赖--> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.6</version> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency> <!-- 日志冲突 --> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>2.12.0</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>2.12.0</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.14</version> <!--排除slf4j-log4j12--> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency>
-
配置注册中心地址、服务发现名、要扫描的包
server.port=8081 #服务应用名字 dubbo.application.name=provider-server #注册中心地址 dubbo.registry.address=zookeeper://127.0.0.1:2181 #声明哪些服务要被注册 dubbo.scan.base-packages=com.kuang.providerserver.service
-
再想要被注册的服务上添加@Service注解(dubbo)
import org.apache.dubbo.config.annotation.Service; import org.springframework.stereotype.Component; /** * @Description: com.kuang.providerserver.service 服务注册与发现 * @Author GARY * @Version V1.0.0 * @Date 2020/5/20 */ @Service //被扫描到之后,在项目启动后就自动注册到注册中心 @Component public class TicketServiceImpl implements TicketService{ @Override public String getTicket() { return "Hello World"; } }
-
-
消费者如何消费
-
导入依赖,同提供者依赖相同
-
配置注册中心地址、配置自己的服务名
server.port=8082 #声明自己的名字 dubbo.application.name=consumer-server #注册中心地址 dubbo.registry.address=zookeeper://127.0.0.1:2181
-
从远程注入服务@Regerence(dubbo)
import com.kuang.providerserver.service.TicketService; import org.apache.dubbo.config.annotation.Reference; import org.springframework.stereotype.Service; /** * @Description: com.kuang.consumerserver.service * @Author GARY * @Version V1.0.0 * @Date 2020/5/20 */ @Service public class UserService { @Reference //两种方法 1:将TicketService放入同级目录;2:导入provider-server依赖 TicketService ticketService; public void buyTicket(){ String ticket = ticketService.getTicket(); System.out.println("在注册中心拿到的票为" + ticket); } }
-