Spring Cloud Alibaba 入门学习笔记第二篇:Nacos注册中心+Loadbalancer负载均衡
学习完使用Spring Cloud Loadbalancer进行的负载均衡调用后,会发现调用的代码不是很优雅,使用OpenFeign能够让调用代码变得如调用本地服务一样!!!
OpenFeign简介
OpenFeign是一个声明式 Web 服务客户端。它使编写 Web 服务客户端变得更容易。要使用 Feign 创建一个接口并对其进行注释。它具有可插入的注释支持,包括 Feign 注释和 JAX-RS 注释。Feign 还支持可插拔的编码器和解码器。Spring Cloud 添加了对 Spring MVC 注解的支持,并支持使用HttpMessageConvertersSpring Web 中默认使用的注解。Spring Cloud 集成了 Eureka、Spring Cloud CircuitBreaker 和 Spring Cloud LoadBalancer,在使用 Feign 时提供负载均衡的 http 客户端。
在Spring Cloud 2020版之前是基于Ribbon进行的优化处理(因为Feign当时内置的Ribbon),在Spring Cloud 2020版后基于Spring Cloud LoadBalancer进行的优化处理。
官方文档:docs.spring.io/spring-clou…
核心注解
@EnableFeignClients
主要作用:在springboot启动类上添加,告诉程序去识别@FeignClient注解。
主要属性如下:
1 | scss复制代码String[] value() default {}; //指定扫描的包 |
通常是无需配置各项属性,直接使用即可。
@FeignClient
标注用于声明Feign客户端可访问的Web服务
1 | scss复制代码@AliasFor("name") |
代码实现
第一步 引入JAR包
1 | xml复制代码<!-- spring cloud 版本管理 --> |
第二步 代码实现
创建一个名为feign-provider的服务注册到注册中心
1 | yml复制代码spring: |
1 | java复制代码@SpringBootApplication |
1 | xml复制代码@RestController |
创建调用服务用来调用feign-provider
1 | java复制代码@SpringBootApplication |
1 | java复制代码@FeignClient("feign-provider") //指定调用注册中心里面名为feign-provider的服务 |
1 | java复制代码@RestController |
1 | yml复制代码server: |
启动测试
1 启动Nacos注册中心
2 启动feign-privoder服务
3 启动feign-consume服务
4 浏览器输入:http://127.0.0.1:8102/consume/123456
最后
OpenFeign 在使用上,让调用者感觉不出是在进行远程调用,还是挺不错的。同时OpenFeign还能够支持对调用结果的解压,例如通常返回的数据结构是:
1 | java复制代码 private int code; |
常常数据是在data里面,就可以通过自定义的encoder进行处理,还有重试机制等等!!!
本文转载自: 掘金