Spring Cloud Alibaba【创建支付服务生产者、创建服务消费者 、Dubbo和OpenFeign区别 、微服务接入OpenFeign】(二)
发布人:shili8
发布时间:2025-01-20 13:19
阅读次数:0
**Spring Cloud Alibaba系列文章之二**
在上一篇文章中,我们已经完成了支付服务的生产者端的搭建。今天我们将继续完善我们的微服务体系,创建一个服务消费者,并对Dubbo和OpenFeign进行比较。
### 创建服务消费者首先,我们需要创建一个新的Spring Boot项目,用于作为服务消费者。新建一个Maven项目,名称为`service-consumer`。
**pom.xml**
xml<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-registry</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
**application.yml**
ymlserver: port:8080spring: cloud: alibaba: registry: address: />在`ServiceConsumerApplication.java`中,我们需要添加一个`@EnableDiscoveryClient`注解来开启服务发现功能。java@SpringBootApplication@EnableDiscoveryClientpublic class ServiceConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceConsumerApplication.class, args);
}
}
接下来,我们需要在`application.yml`中配置服务注册中心的地址。 ### Dubbo和OpenFeign区别Dubbo和OpenFeign都是Java语言下的RPC框架,用于实现微服务之间的通信。下面是它们的一些主要区别: * **功能**:Dubbo是一个完整的RPC框架,提供了服务发现、负载均衡、容错等功能,而OpenFeign则是一个轻量级的RPC框架,只提供了服务发现和负载均衡功能。 * **性能**:Dubbo相比于OpenFeign具有更好的性能,因为它使用了多种优化技术,如缓存、线程池等,而OpenFeign则主要依赖于Netty来实现高性能通信。 * **易用性**:OpenFeign由于其轻量级的特点,更加容易上手和使用,而Dubbo则需要更深入地了解其内部机制。 ### 微服务接入OpenFeign在`ServiceConsumerApplication.java`中,我们需要添加一个`@EnableDiscoveryClient`注解来开启服务发现功能。java@SpringBootApplication@EnableDiscoveryClientpublic class ServiceConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceConsumerApplication.class, args);
}
}
接下来,我们需要在`application.yml`中配置服务注册中心的地址。 **application.yml**ymlserver:
port:8080spring:
cloud:
alibaba:
registry:
address: />然后我们可以使用OpenFeign来实现微服务之间的通信。例如,我们可以在`ServiceConsumerApplication.java`中添加一个`@FeignClient`注解来指向支付服务。
java@SpringBootApplication@EnableDiscoveryClientpublic class ServiceConsumerApplication { public static void main(String[] args) { SpringApplication.run(ServiceConsumerApplication.class, args); } }
**application.yml**
ymlserver: port:8080spring: cloud: alibaba: registry: address: /> client: config: default: connectTimeoutMillis:5000 readTimeoutMillis:10000
在`PaymentController.java`中,我们可以使用OpenFeign来实现支付服务的接口。
java@RestController@RequestMapping("/payment") public class PaymentController { @Autowired private PaymentService paymentService; @GetMapping("/get/{id}") public Result get(@PathVariable("id") Long id) { return paymentService.get(id); } }
在`PaymentService.java`中,我们可以使用OpenFeign来实现支付服务的业务逻辑。
java@Servicepublic class PaymentService { @Autowired private PaymentClient paymentClient; public Result get(Long id) { return paymentClient.get(id); } }
在`PaymentClient.java`中,我们可以使用OpenFeign来实现支付服务的接口。
java@Componentpublic class PaymentClient { @Autowired private RestTemplate restTemplate; public Result get(Long id) { String url = " + id; return restTemplate.getForObject(url, Result.class); } }
这样我们就可以使用OpenFeign来实现微服务之间的通信了。
### 总结在本文中,我们完成了支付服务生产者的搭建,并创建了一个服务消费者。然后我们对Dubbo和OpenFeign进行比较,了解了它们的一些主要区别。最后,我们使用OpenFeign来实现微服务之间的通信。