网站是怎么赢利的,整站seo技术搜索引擎优化,北京专业网站开发,杭州网站优化培训一、前言
二、OpenFeign基本使用
1、OpenFeign简介
OpenFeign是一种声明式、模板化的HTTP客户端#xff0c;它使得调用RESTful网络服务变得简单。在Spring Cloud中使用OpenFeign#xff0c;可以做到像调用本地方法一样使用HTTP请求访问远程服务#xff0c;开发者无需关注…一、前言
二、OpenFeign基本使用
1、OpenFeign简介
OpenFeign是一种声明式、模板化的HTTP客户端它使得调用RESTful网络服务变得简单。在Spring Cloud中使用OpenFeign可以做到像调用本地方法一样使用HTTP请求访问远程服务开发者无需关注远程HTTP请求的细节。
OpenFeign的Spring应用架构一般分为三部分分别是注册中心、服务提供者和服务消费者。服务提供者向服务注册中心注册自己然后服务消费者通过OpenFeign发送请求时OpenFeign会向服务注册中心获取关于服务提供者的信息然后再向服务提供者发送网络请求。
使用OpenFeign只需要创建一个接口并添加注解就可以实现远程服务调用。它简化了RestTemplate的代码实现了Ribbon的负载均衡使代码变得更加简洁。OpenFeign支持Spring MVC的注解如RequestMapping、PathVariable等这使得它在与Spring Cloud集成时更加方便。
2、Feign和OpenFeign
Feign和OpenFeign的区别在于Feign是Spring Cloud的一部分而OpenFeign是对Feign的封装提供了更多的功能和更好的集成。OpenFeign不仅支持Spring MVC的注解还支持JAX-RS注解和JPA注解等。此外OpenFeign还支持自定义注解和编码器使得它能够更好地满足不同的需求。
OpenFeign 组件的前身是 Netflix Feign 项目它最早是作为 Netflix OSS 项目的一部分由 Netflix 公司开发。后来 Feign 项目被贡献给了开源组织于是才有了我们今天使用的 Spring Cloud OpenFeign 组件。
Feign 和 OpenFeign 有很多大同小异之处不同的是 OpenFeign 支持 MVC 注解。
可以认为 OpenFeign 为 Feign 的增强版。
简单总结下 OpenFeign 能用来做什么
OpenFeign 是声明式的 HTTP 客户端让远程调用更简单。 提供了HTTP请求的模板编写简单的接口和插入注解就可以定义好HTTP请求的参数、格式、地址等信息 整合了Ribbon负载均衡组件和 Hystix服务熔断组件不需要显示使用这两个组件 Spring Cloud Feign 在 Netflix Feign的基础上扩展了对SpringMVC注解的支持
3、OpenFegin通讯优化
3.1、GZIP简介
1gzip介绍gzip是一种数据格式采用用deflate算法压缩数据gzip是一种流行的数据压缩算法应用十分广泛尤其是在Linux平台。
2gzip能力当Gzip压缩到一个纯文本数据时效果是非常明显的大约可以减少70以上的数据大小。
3gzip作用网络数据经过压缩后实际上降低了网络传输的字节数最明显的好处就是可以加快网页加载的速度。网页加载速度加快的好处不言而喻除了节省流量改善用户的浏览体验外另一个潜在的好处是Gzip与搜索引擎的抓取工具有着更好的关系。例如 Google就可以通过直接读取gzip文件来比普通手工抓取更快地检索网页。
3.2、HTTP协议中关于压缩传输的规定原理 第一客户端向服务器请求头中带有Accept-Encoding:gzip, deflate 字段向服务器表示客户端支持的压缩格式gzip或者deflate)如果不发送该消息头服务器是不会压缩的。
第二服务端在收到请求之后如果发现请求头中含有Accept-Encoding字段并且支持该类型的压缩就对响应报文压缩之后返回给客户端并且携带Content-Encoding:gzip消息头表示响应报文是根据该格式压缩过的。
第三客户端接收到响应之后先判断是否有Content-Encoding消息头如果有按该格式解压报文。否则按正常报文处理。
3.3、在OpenFeign技术中应用GZIP压缩
在Spring Cloud微服务体系中一次请求的完整流程如下 在整体流程中如果使用GZIP压缩来传输数据涉及到两次请求-应答。而这两次请求-应答的连接点是Application Client那么我们需要在Application Client中配置开启GZIP压缩来实现压缩数据传输。
3.4、只配置OpenFeign请求-应答的GZIP压缩
在交互数据量级不够的时候看不到压缩内容。
这里只开启Feign请求-应答过程中的GZIP也就是浏览器-Application Client之间的请求应答不开启GZIP压缩。
在全局配置文件中使用下述配置来实现OpenFeign请求-应答的GZIP压缩
4、OpenFegin示例
模块说明 user模块调用product模块的接口
4.1、依赖准备
!--nacos--
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId
/dependency
dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId
/dependency
!--openfegin--
dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId
/dependency
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId
/dependency4.2、启动类添加EnableFeginClients
启动类上添加EnableFeignClients注解才能把使用FeginClient标记的类识别的fegin接口。
EnableSwagger2
SpringBootApplication
EnableDiscoveryClient
Slf4j
EnableFeignClients
public class UserApplication {public static void main(String[] args) throws UnknownHostException {ConfigurableApplicationContext application SpringApplication.run(UserApplication.class, args);Environment env application.getEnvironment();String ip InetAddress.getLocalHost().getHostAddress();String port env.getProperty(server.port);String path env.getProperty(server.servlet.context-path);// 未配置默认空白if (path null) {path ;}// 未配置默认空白if (port null) {port 8080;}log.info(\n----------------------------------------------------------\n\t 项目启动成功访问路径如下:\n\t 本地路径: http://localhost: port path /\n\t 网络地址: http:// ip : port path /\n\t 接口地址: http:// ip : port path /swagger-ui.html\n\t API文档: http:// ip : port path /doc.html\n ----------------------------------------------------------);}
}4.3、编写fegin接口
注意FeignClient中的value传入的是product模块在nacos上注册的服务名称。
FeignClient(value product-demo,path )
Service
public interface ProductService {RequestMapping(value /test/hello,method RequestMethod.GET)String hello();
}4.4、调用fegin接口
RestController
RequestMapping(/user)
public class UserController {Autowiredprivate ProductService productService;GetMapping(/test)public String test(){return productService.hello();}
}三、总结
使用OpenFeign可以让你更轻松地编写HTTP客户端代码并且无需手动处理底层的HTTP请求和响应。
如果本篇博客对您有一定的帮助大家记得留言点赞收藏哦。