概述
原理:前人之述备矣
1. 何为dubbo
dubbo 是阿里巴巴公司开源的高性能服务框架,底层实现是基于原生的TCP协议
2. dubbo VS Feign
feign同样也可以用作微服务之间的调用,dubbo 的优势何在
- dubbo支持多种传输协议,在传输小数据量时性能更高
- dubbo的负载均衡设置最小单位是方法 , 而feign是客户端
- dubbo协议采用单一长连接和NIO通讯,支持大并发量
3. 项目构造
- ticket 电影票微服务 (基本搭建略过)
- order 订单微服务 (基本搭建略过)
- 微服务间调用使用dubbo
3.1 父级项目搭建
<!--公共的一些配置-->
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR2</spring-cloud.version>
<alibaba.version>2.1.0.RELEASE</alibaba.version>
<spring-boot.version>2.1.13.RELEASE</spring-boot.version>
</properties>
<!--1.管理SpringBoot的依赖-->
<parent>
<groupId> org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.13.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
<scope>compile</scope>
</dependency>
</dependencies>
3.2 dubbo-api公共接口引入
import com.qiuming.alibaba.domain.Ticket;
import com.qiuming.alibaba.domain.to.TicketTO;
import java.util.List;
/**
* @author
* dubbo提供的tpc协议,实现微服务之间相互调用
*/
public interface TicketService {
/**
* 展示所有上线的电影票
*
* @return
*/
List<Ticket> listAllOnlineTicket();
}
3.3 改造ticket服务 (提供者)
-
在项目中引入dubbo 的 maven
<!--该包为上述引入的dubbo-api包--> <dependency> <groupId>com.qiuming</groupId> <artifactId>alibaba-dubbo-api</artifactId> <version>1.0-SNAPSHOT</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-dubbo</artifactId> </dependency>
-
实现dubbo-api接口
! 注解
@service
的 全限定名为org.apache.dubbo.config.annotation.Service
import com.qiuming.alibaba.domain.to.TicketTO; import org.apache.dubbo.config.annotation.Service; import org.springframework.beans.factory.annotation.Autowired; import com.qiuming.alibaba.api.TicketService; import com.qiuming.alibaba.domain.Ticket; import com.qiuming.alibaba.mapper.TicketMapper; import java.util.List; /** * dubbo api的实现 * * @author **/ @Service public class DubboTicketServiceImpl implements TicketService { @Autowired private TicketMapper ticketMapper; @Override public List<Ticket> listAllOnlineTicket() { return ticketMapper.listAllOnlineTicket(); } }
-
增加yml配置
dubbo: scan: base-packages: com.qiuming.alibaba.api #dubbo扫描包,一定要将dubbo-api和其实现都放在该包下面 protocol: name: dubbo #通信协议的名称,默认dubbo port: 20883 #使用的通讯协议的默认端口,注意端口冲突 registry: address: spring-cloud://192.168.1.7 #使用springcloud进行注册
3.4 改造order服务(消费者)
-
maven引入
<!--dubbo-api的引入--> <dependency> <groupId>com.qiuming</groupId> <artifactId>alibaba-dubbo-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-dubbo</artifactId> </dependency>
-
在业务层中引入dubbo-api
! 注解
@Reference
的 全限定名为org.apache.dubbo.config.annotation.Reference
! 注解
@Service
的 全限定名为org.springframework.stereotype.Service
package com.qiuming.alibaba.service.impl; import com.qiuming.alibaba.api.TicketService; import com.qiuming.alibaba.domain.Ticket; import com.qiuming.alibaba.service.OrderService; import org.apache.dubbo.config.annotation.Reference; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; /** * @author * 业务实现类 **/ @Service @Transactional public class OrderServiceImpl implements OrderService { @Reference private TicketService ticketService; @Override public List<Ticket> listAllOnlineTicket(){ List<Ticket> tickets = ticketService.listAllOnlineTicket(); return tickets; } }
-
yml配置增加
dubbo: scan: base-packages: com.qiuming.alibaba.api #dubbo扫描包,一定要将dubbo-api放在该包下面 protocol: name: dubbo #通信协议的名称,默认dubbo port: 20889 #使用的通讯协议的默认端口,注意端口冲突 registry: address: spring-cloud://192.168.1.7 #使用springcloud进行注册 cloud: subscribed-services: ticket-service #指向提供者的服务名
最后
以上就是高挑水蜜桃为你收集整理的dubbo (速度)更快,(并发)更高,(性能)更强的全部内容,希望文章能够帮你解决dubbo (速度)更快,(并发)更高,(性能)更强所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复