Spring Cloud Edgware新特性之:解决Eureka中Jersey 1.x版本过旧的问题-不使用Jersey
时间:2022-05-06
本文章向大家介绍Spring Cloud Edgware新特性之:解决Eureka中Jersey 1.x版本过旧的问题-不使用Jersey,主要内容包括背景、寻求方案、废弃Eureka Client的Jersey、收益、原理及代码、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
Spring Cloud是当前炙手可热的微服务开发框架。它的功能强大,组件丰富,设计优雅。目前Spring Cloud还在不断发展之中。
Spring Cloud即将发布 SpringCloudEdgware
版本。该版本解决了不少Bug,新增了不少新特性,本系列博客将为大家详细阐述在Spring Cloud Edgware中新增的特性。
为了让描述更加的贴合实际,本文将结合笔者所在团队遇到的实际情况进行讲解。
背景
Eureka服务器与客户端之间默认使用 Jersey1.x
进行基于HTTP协议的交互。然而我们团队,需使用 docker-client
(https://github.com/docker-java/docker-java) 。这货只支持 Jersey2.x
,而Jersey 1.x与2.x并不兼容。
寻求方案
于是,我们团队面临如下几种选择:
- 使用Eureka提供的
eureka-client-jersey2
模块,即使用Jersey2.x
来代替Jersey1.x
https://github.com/Netflix/eureka/tree/master/eureka-client-jersey2。然而,这种方式不够稳妥,原因是eureka-client-jersey2
是由社区提供,并非由Eureka官方团队维护,并且已经很久不更新了。 - 放弃使用
docker-client
,使用其他的Docker客户端,例如https://github.com/spotify/docker-client (该项目支持Jersey 1.x以及Jersey 2.x)。 - 升级
SpringCloudNetflix
到1.4.x,即:SpringCloudEdgware
【笔者认为的最佳方案】。
本文探讨的就是在 SpringCloudEdgware
中Eureka的点点滴滴。
废弃Eureka Client的Jersey
SpringCloudEdgware
中,Jersey并非必选。可为Eureka Client禁用掉Jersey,转而使用我们想要的HTTP客户端,例如RestTemplate。只需将Jersey的包从依赖中删除,Spring Cloud就会自动配置一个基于 SpringRestTemplate
的传输客户端。操作如下:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<exclusions>
<exclusion>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-apache-client4</artifactId>
</exclusion>
</exclusions>
</dependency>
收益
简单的操作后,有两个好处:
- 再也不用烦Jersery的版本冲突问题
- 依赖减少了一些。
原理及代码
详见:https://github.com/spring-cloud/spring-cloud-netflix/issues/1849 。简单来说,就是Eureka提供了一个抽象,允许用户为Eureka Client定制自己的HTTP客户端,而不像老版本,强制使用Jersery。
- centos6下ActiveMQ+Zookeeper消息中间件集群部署记录
- 发布一个轻量级的滑块控件
- as3:sprite作为容器使用时,最好不要指定width,height
- openssl版本升级操作记录
- 清除浮动(clearfix hack)
- Linux下环境变量配置方法梳理(.bash_profile和.bashrc的区别)
- 小程序火爆的因素
- Log4Net使用心得
- nginx通过https方式反向代理多实例tomcat
- Linux系统下yum镜像源环境部署记录
- 特斯拉vs凯迪拉克vs奔驰:三大汽车自动驾驶系统比拼
- Centos下添加静态路由(临时和永久有效)的操作记录
- python如何保证输入键入数字
- 微信小程序自定义数据分析试水
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释