若是你也打算学习 Spring Cloud

说到 Spring Cloud,那确定要少不了提一下微服务框架,所谓的微服务框架就是把负责的功能拆分红比较小、功能比较单一的服务独立处理,例如单点登陆服务、支付服务、订单服务等,固然若是订单功能比较复杂还能够独立出更具体的服务。html

我在以前的文章中我所理解的SOA和微服务也提到过微服务的几个主要特色,我的感受:算法

一、微服务在架构设计方面:能够帮助咱们理清业务,更加清晰的设计系统架构。spring

二、微服务在开发方面:能够下降项目结构的复杂度,下降代码内部的耦合度。docker

三、在运维方面:能够清晰快速的定位排查问题。架构

微服务框架里 Dubbo 和 Spring Cloud 这两个用的最多。随着 docker 和 容器编排技术的成熟,最近用 Docker、Kubernetes 构建微服务架构的也愈来愈多了。app

公司以前的项目中有一部分采用 Spring MVC 方式开发,因此一直在用 Dubbo。新的系统所有采用 Spring Boot,顺便也就使用了 Spring Cloud 技术栈。我倒不以为二者有什么高下之分,只要可以知足业务需求,使用哪一种技术倒无所谓,何况 Dubbo 用下来也没什么问题。负载均衡

今天就是说一下 Spring Cloud,Spring Cloud 就是一个大集合,包括了配置中心、注册中心、负责均衡、熔断处理等等一些成熟的框架,并用 Spring boot 的形式包装好,方便开发者使用。Spring boot 相信你们确定都不陌生,应该作 Java 开发的几乎或多或少都使用过。它比起 Spring MVC 来,省去了繁杂的配置文件,可谓是开发微服务项目的不二选择。框架

Spring Cloud 包括众多的子项目,可谓是微服务行业一条龙服务。只有你想不到,没有你找不到的。运维

Spring Cloud Config

配置中心,将系统中用到的一些配置信息存储到配置中心,方便维护,不用每次修改配置都重启服务。用的比较多的配置中心还有etcd、携程的 Apollo、Disconf 。分布式

Spring Cloud Netflix

Netflix OSS 是一组开源的框架和组件库,是Netflix公司开发出来解决分布式系统的一些有趣的可扩展类库。Spring Cloud 把他们都放到 Spring Cloud Netflix 下,这是一个框架集合,它包括 Eureka 、Ribbon、Zuul、Hystrix 等。

Eureka

服务中心,这能够说是微服务架构的核心功能了,微服务部署以后,必定要有服务注册和发现的能力,Eureka 就是担任这个角色的。若是你用过 dubbo 的话,那必定知道 dubbo 中服务注册和发现的功能是用 zookeeper 来实现的。

目前官方已中止升级,若是你的项目中尚未使用而且打算使用注册中心的话,能够直接使用 Spring Cloud Consul。

Ribbon

提供客户端负责均衡功能,例如一个服务提供者部署了 3 个实例,那么使用 Ribbon 能够指定负载均衡算法请求其中一个实例,Ribbon 若是配合 Eureka ,使用起来很是简单。

Hystrix

熔断器,假设有 3 个服务提供实例,其中有一个实例因为某中缘由挂掉了,那么当再有请求进来的时候,若是仍是向这个实例上发请求,那将会致使请求积压阻塞,这个时候,熔断器就要发挥它的做用,将这个有问题的实例下线,这样一来,再有新的请求进来,就不会再发到这个有问题的实例上了。

Zuul

服务网关。主要实现了路由转发和过滤器功能,对于处理一些数据聚合、鉴权、监控、统计类的功能很是好用。

Gateway

也是服务网关,能够认为它是 Zuul 的下一代,不管从易用性和性能方便都有所提升,若是你的系统中尚未使用 Zuul ,而且准备上网关,能够直接选择 Gateway 。

Spring Cloud Consul

Consul 让服务注册和服务发现(经过 DNS 和 HTTP 接口)更加简单,甚至对于外部服务(例如SaaS)注册也同样。Spring Cloud Consul 可替代已有的 Spring Cloud Eureka。Eureka 2.x 版本也已经中止开发,而且 Spring Cloud 官方也建议用 Spring Cloud Consul 来替代,固然若是已经用了 Eureka 在项目中也没有关系,Eureka 已经足够稳定,正常使用没有任何问题。

Spring Cloud Consul 可替代已有的 Spring Cloud Config ,当作配置中心使用。

Spring Cloud Stream

Spring Cloud Stream 是消息中间件组件,它集成了 kafka 和 rabbitmq 。若是你的系统中打算集成 kafka 或 rabbitmq,能够考虑使用 Stream 。

Spring Cloud Bus

消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。集成了 Rabbitmq 和 kafka 。刚刚上面说到的 Stream 好像也是这个功能。没错,咱们能够认为 Bus 是 Stream 的进一步封装,使用更简单。而 Stream 的灵活性更高。

Spring Cloud Feign

Feign是一种声明式、模板化的HTTP客户端。它能够用注解的方式简化 HTTP 请求,能够快速简单的请求服务提供接口。若是你还在使用 restTemplate 或者其余方式,不妨考虑一下 Feign。

Spring Cloud Sleuth

服务日志收集和链路追踪模块,封装了 Dapper 和 log-based 追踪以及 Zipkin 和 HTrace 操做。与之功能相同的框架还有 skywalking、Pinpoint,另外国内还有美团开源的 CAT,只不过 CAT 属于代码侵入的,须要开发人员在系统中作代码埋点,不过也更加灵活,更加精细。

Spring Cloud Security

可用作受权服务、单点登陆等。若是服务须要作权限控制,那除非你本身实现。否则用到最多的就是 shiro 和 Spring Security 。Spring Boot 中用的比较多的就是 Security,众多受权机制中属于 OAuth2 最为流行。Spring Cloud Security 就是将 Security、OAuth2 作了集成,方便使用。

除了以上的这些经常使用功能外,Spring Cloud 还提供了一些其余的模块,具体的能够到 Spring Cloud 官网一看。官网上介绍的更加详细。官网地址:https://spring.io/projects/spring-cloud

欢迎关注,不按期更新本系列和其余文章
古时的风筝 ,进入公众号能够加入交流群

相关文章
相关标签/搜索