Spring Cloud 终于改了,为什么要用日期来做版本号?

Spring Cloud 终于改了

最近 Spring Cloud 把版本号从 A 到 Z 的伦敦地铁站,改成用日期命名了。

也就是从 Greenwich.SR6, Hoxton.SR9 这样的风格改成了 2020.0.0 的形式。广大人民终于不用为 Spring Cloud 的版本号烦恼了。

Spring Cloud 推广不力,固然有自身复杂的原因,版本号太复杂也是一个坑。

以日期为版本号,即所谓的 Calendar Versioning,可以参考这个网站:


使用 Spring Cloud Sleuth 实现链路监控

在服务比较少的年代,一个系统的接口响应缓慢通常能够迅速被发现,但如今的微服务模块,大多具有规模大,依赖关系复杂等特性,错综复杂的网状结构使得我们不容易定位到某一个执行缓慢的接口。分布式的服务跟踪组件就是为了解决这一个问题。其次,它解决了另一个难题,在没有它之前,我们客户会一直询问:你们的系统有监控吗?你们的系统有监控吗?你们的系统有监控吗?现在,谢天谢地,他们终于不问了。是有点玩笑的成分,但可以肯定的一点是,实现全链路监控是保证系统健壮性的关键因子。

介绍 Spring Cloud Sleuth 和 Zipkin 的文章在网上其实并不少,所以我打算就我目前的系统来探讨一下,如何实现链路监控。全链路监控这个词意味着只要是不同系统模块之间的调用都应当被监控,这就包括了如下几种常用的交互方式:

1 Http 协议,如 RestTemplate,Feign,Okhttp3,HttpClient…

2 Rpc 远程调用,如 Motan,Dubbo,GRPC…


从 Feign 使用注意点到 RESTFUL 接口设计规范

最近项目中大量使用了 Spring Cloud Feign 来对接 http 接口,踩了不少坑,也产生了一些对 RESTFUL 接口设计的想法,特此一篇记录下。

[TOC]

SpringMVC 的请求参数绑定机制

了解 Feign 历史的朋友会知道,Feign 本身是 Netflix 的产品,Spring Cloud Feign 是在原生 Feign 的基础上进行了封装,引入了大量的 SpringMVC 注解支持,这一方面使得其更容易被广大的 Spring 使用者开箱即用,但也产生了不小的混淆作用。所以在使用 Spring Cloud Feign 之前,笔者先介绍一下 SpringMVC 的一个入参机制。预设一个 RestController,在本地的 8080 端口启动一个应用,用于接收 http 请求。


对于 Spring Cloud Feign 入门示例的一点思考

Spring Cloud Feign

Spring Cloud Feign 是一套基于 Netflix Feign 实现的声明式服务调用客户端。它使得编写 Web 服务客户端变得更加简单。我们只需要通过创建接口并用注解来配置它既可完成对 Web 服务接口的绑定。它具备可插拔的注解支持,包括 Feign 注解、JAX-RS 注解。它也支持可插拔的编码器和解码器。Spring Cloud Feign 还扩展了对 Spring MVC 注解的支持,同时还整合了 Ribbon 和 Eureka 来提供均衡负载的 HTTP 客户端实现。

分布式应用早在十几年前就开始出现,各自的应用运行在各自的 tomcat,jboss 一类的容器中,他们之间的相互调用变成了一种远程调用,而实现远程调用的方式很多。按照协议划分,可以有 RPC,Webservice,http。不同的框架也对他们有了各自的实现,如 dubbo(x),motan 就都是 RPC 框架,本文所要讲解的 Feign 便可以理解为一种 http 框架,用于分布式服务之间通过 Http 进行接口交互。说他是框架,有点过了,可以理解为一个 http 工具,只不过在 spring cloud 全家桶的体系中,它比 httpclient,okhttp,retrofit 这些 http 工具都要强大的多。

入门

先用一个简单的例子,看看如何在项目中使用 Feign。示例项目使用 maven 多 module 构建,采用 springcloud 的 Dalston.SR1 版本


Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×