springcloud是微服务架构的集大成者,将一系列优秀的组件进行了整合。基于springboot构建,对我们熟悉spring的程序员来说,上手比较容易。
通过一些简单的注解,我们就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。
SpringCloud的组件相当繁杂,拥有诸多子项目。重点关注Netflix
springcloud项目是由多个独立项目集合而成的,每个项目都是独立的,各自进行自己的迭代和版本发布。所以springcloud不方便使用版本号来管理,而是使用版本名。以避免和子项目版本号的冲突。
SpringCloud分布式开发五大组件详解
- 服务发现——Netflix Eureka(星图(系统名)中有使用,可以在界面上看到相关服务是否启动)
- 客服端负载均衡——Netflix Ribbon (项目中只配置了ribbon.ServerListRefreshInterval可以调整刷新server list的时间间隔参数)
- 断路器——Netflix Hystrix(星图中有使用,在对接数据中心接口中封装成切面,实现熔断)
- 服务网关——Netflix Zuul(部门内部没用网关,因为项目之间没有请求,公司层面后来统一封装了api gateway 。网关服务很多,比如:Zuul、Kong、spring cloud gateway ……,公司封装的Kong,Kong是一个基于Apache License 2.0的开源项目,是一个云原生的快速可扩的分布式微服务抽象层,应用场景为微服务的API网关,类似于spring cloud的zuul。)
- 分布式配置——Spring Cloud Config(星图中有使用,将几个项目的配置都统一起来,公司封装了一个配置中心使用的是TARS, TARS 是由腾讯捐赠给 Linux 基金会的开源微服务治理框架)
- 服务间的通信——spring cloud feign:Feign 的初衷是:feign makes writing java http clients easier ,可以理解为一个Http Client。只不过这个http client 对http 请求进行了一个封装。到了Spring Cloud 2.XX 系列版本后,feign 才成为Spring Cloud 下的一级项目
Spring Cloud 中的微服务都是以Http 接口的形式向外提供服务。
提供Http 服务的形式有多种:
- JDK 原生的URLConnctio