- 推荐序一
- 推荐序二
- 推荐序三
- 推荐语
- 前言
- 第1章 基础知识
- 第2章 微服务构建:Spring Boot
- 第3章 服务治理:Spring Cloud Eureka
- 第4章 客户端负载均衡:Spring Cloud Ribbon
- 第5章 服务容错保护:Spring Cloud Hystrix
- 第6章 声明式服务调用:Spring Cloud Feign
- 第7章 API网关服务:Spring Cloud Zuul
- 第8章 分布式配置中心:Spring Cloud Config
- 第9章 消息总线:Spring Cloud Bus
- 第10章 消息驱动的微服务:Spring Cloud Stream
- 附录 A Starter POMs
- 后记
跨平台支持
在“Eureka详解”一节中,我们对Spring Cloud Eureka的源码做了较为详细的分析,在分析过程中相信大家已经发现,Eureka的通信机制使用了HTTP的REST接口实现,这也是Eureka同其他服务注册工具的一个关键不同点。由于HTTP的平台无关性,虽然Eureka Server通过Java实现,但是在其下的微服务应用并不限于使用Java来进行开发。
跨平台本身就是微服务架构的九大特性之一,只有实现了对技术平台的透明,才能更好地发挥不同语言对不同业务处理能力的优势,从而打造更为强大的大型系统。
目前除了 Eureka 的 Java 客户端之外,还有很多其他语言平台对其的支持,比如eureka-js-client、python-eureka等。若我们有志于自己为一门语言来开发客户端程序,也并非特别复杂,只需要根据上面提到的那些用户服务协调的通信请求实现就能实现服务的注册与发现,需要了解更多关于Eureka 的REST API内容可以查看Eureka官方WiKi 中的Eureka-REST-operations一文https://github.com/Netflix/eureka/wiki/Eureka-REST-operations。
通信协议
默认情况下,Eureka使用Jersey和XStream配合JSON作为Server与Client之间的通信协议。你也可以选择实现自己的协议来代替。
- Jersey是JAX-RS的参考实现,它包含三个主要部分。
- 核心服务器 (Core Server):通过提供 JSR 311 中标准化的注释和 API 标准化,你可以用直观的方式开发 RESTful Web 服务。
- 核心客户端 (Core Client):Jersey 客户端 API 帮助你与 REST 服务轻松通信。
- 集成 (Integration):Jersey 还提供可以轻松集成 Spring、Guice、Apache Abdera 的库。
- XStream是用来将对象序列化成XML(JSON)或反序列化为对象的一个Java类库。XStream在运行时使用Java反射机制对要进行序列化的对象树的结构进行探索,并不需要对对象做出修改。XStream可以序列化内部字段,包括private和final字段,并且支持非公开类以及内部类。默认情况下,XStream 不需要配置映射关系,对象和字段将映射为同名XML元素。但是当对象和字段名与XML中的元素名不同时,XStream支持指定别名。XStream支持以方法调用的方式,或是Java 标注的方式指定别名。XStream 在进行数据类型转换时,使用系统默认的类型转换器。同时,也支持用户自定义的类型转换器。
JAX-RS 是将在 Java EE 6中引入的一种新技术。JAX-RS 即 Java API for RESTful Web Services,是一个Java 编程语言的应用程序接口,支持按照表述性状态转移(REST)架构风格创建Web服务。JAX-RS使用了Java SE 5引入的Java标注来简化Web服务的客户端和服务端的开发和部署。包括:
- @Path,标注资源类或者方法的相对路径。
- @GET、@PUT、@POST、@DELETE,标注方法是HTTP请求的类型。
- @Produces,标注返回的MIME媒体类型。
- @Consumes,标注可接受请求的MIME媒体类型。
- @PathParam、@QueryParam、@HeaderParam、@CookieParam、@MatrixParam、
@FormParam,标注方法的参数来自HTTP请求的不同位置,例如,@PathParam
来自URL的路径,@QueryParam来自URL的查询参数,@HeaderParam来自
HTTP请求的头信息,@CookieParam来自HTTP请求的Cookie。
之前在分析Eureka Server端源码的时候,查看请求处理时可以看到很多上面这些注解的定义。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论