赞
踩
dubbo是一款开源的rpc框架,用于微服务调用。相比更常见的feign,dubbo具有更好的性能,但在配置和使用过程中比feign稍微复杂一些。dubbo框架的使用方法不像feign这么固定,网上也有各种方案,本文基于Springcloudalibaba整合dubbo的方案,用nacos作为dubbo框架的注册中心。本文默认读者已经安装好了nacos服务端。
<dependencyManagement>
<dependencies>
<!-- springboot-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.3.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud Netflix-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR9</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud alibaba-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--nacos服务注册-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- spring cloud alibaba整合dubbo-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
<!-- 不加这个依赖会报错 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
</dependencies>
public interface StockService {
// 扣减库存
public String reduceStock();
}
import org.apache.dubbo.config.annotation.DubboService;
@DubboService
public class StockServiceImpl implements StockService {
@Override
public String reduceStock() {
return "服务提供方,扣减库存";
}
}
# 微服务端口号
server:
port: 8087
# 微服务名称
spring:
application:
name: dubbo-provider-stock
cloud:
nacos: # 配置nacos
discovery:
server-addr: http://192.168.40.129:8848/
namespace: 6f53617b-d804-43f1-92c8-d71d3f3d0683
group: myGroup
config:
enabled: true
dubbo:
scan:
# 配置dubbo提供服务的包扫描,扫描被@DubboService注解配置的类
base-packages: com.cabbage.service.impl
protocol: # 固定写法
name: dubbo
port: -1
registry: # 配置dubbo使用nacos作为注册中心
id: nacos
address: nacos://192.168.40.129:8848?namespace=6f53617b-d804-43f1-92c8-d71d3f3d0683&group=myGroup
# 微服务名称
spring:
application:
name: dubbo-consumer-order
cloud:
nacos:
discovery:
server-addr: http://192.168.40.129:8848/
namespace: 6f53617b-d804-43f1-92c8-d71d3f3d0683
group: myGroup
config:
enabled: true
dubbo:
protocol:
name: dubbo
port: -1
registry:
id: nacos
address: nacos://192.168.40.129:8848?namespace=6f53617b-d804-43f1-92c8-d71d3f3d0683&group=myGroup
cloud:
# 表示要订阅服务的服务名
subscribed-services: dubbo-provider-stock
# 实现负载均衡
consumer: # 服务消费者如何选择服务提供者
# 设置负载均衡算法为最短响应时间,在消费者端,Dubbo 将会选择当前响应时间最短的服务提供者来发送请求,以确保尽可能快速地获取服务响应。
loadbalance: leastactive
# 以下被注释的配置为,以下被注释的配置为,在服务提供者端配置负载均衡策略,可以更灵活地控制服务提供者的负载情况,使得服务能够更有效地分配和利用资源。如果两个负载均衡不一样,以consumer为准
# provider:
# loadbalance: leastactive
@RestController
public class OrderController {
@DubboReference
private StockService service;
@GetMapping("/reduceStock")
public String reduceStock(){
String result = service.reduceStock();
return result;
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。