启动nacos:startup.cmd -m standalone
启动dubbo:mvn --projects dubbo-admin-server spring-boot:run
1.高级特性
(1)启动检查
#配置dubbo消费者 dubbo: consumer: check: false #dubbo默认有启动检查
(2)多版本
(3)超时重试
#配置dubbo消费者 dubbo: consumer: check: false #dubbo默认有启动检查 retries: 0 #dubbo默认有超时重传
(4)负载均衡
2.spring cloud整合dubbo
(1)为什么需要dubbo
使用dubbo替换spring cloud中的feign
Dubbo框架的通信协议采用RPC协议,属于传输层协议
Dubbo默认通过Netty构造TCP长连接的方式进行通信,性能较高
使用SpringCloud整合Dubbo,即为强强联合。
(2)服务提供者provider
<1>引入依赖
<!--nacos注册中心的依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!--springcloud alibaba dubbo依赖 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-dubbo</artifactId> </dependency>
<2>编写实现类,暴露Dubbo服务
@DubboService public class UserServiceImpl extends ServiceImpl<UserMapper, Users> implements UserService {
<3>添加application.yml配置
#配置spring-cloud 的注册中心 cloud: nacos: discovery: server-addr: localhost:8848 application: name: user-service dubbo: protocol: name: dubbo port: 20881 registry: address: spring-cloud://localhost #使用spring-cloud中的注册中心地址 scan: base-packages: cn.itcast.user.impl #配置添加到dubbo服务的provider类的包扫描
(3)服务消费者consumer
<1>引入依赖(相同)
<2>使用@DubboReference引入Dubbo服务,调用远程服务
@DubboReference private UserService userService; @GetMapping("{orderId}") public Orders queryOrderByUserId(@PathVariable("orderId") Long orderId) { // 1.根据id查订单 Orders orders = orderService.queryOrderById(orderId); // 2.获取订单中的用户id Long userId = orders.getUserId(); // 3.根据用户id,调用dubbo查询用户信息 Users users = userService.queryById(userId); orders.setUser(users); // 4.返回信息 return orders; }
<3>添加application.yml配置
cloud: nacos: discovery: server-addr: localhost:8848 application: name: order-service #配置dubbo消费者 dubbo: consumer: check: false #dubbo默认有启动检查 retries: 0 #dubbo默认有超时重传 registry: address: spring-cloud://localhost