如果你也打算学习 Spring Cloud
说到 Spring Cloud,那肯定要少不了提一下微服务框架,所谓的微服务框架就是把负责的功能拆分成比较小、功能比较单一的服务独立处理,例如单点登录服务、支付服务、订单服务等,当然如果订单功能比较复杂还可以独立出更具体的服务。
我在之前的文章中我所理解的SOA和微服务也提到过微服务的几个主要特点,个人感觉:
1、微服务在架构设计方面:可以帮助我们理清业务,更加清晰的设计系统架构。
2、微服务在开发方面:可以降低项目结构的复杂度,降低代码内部的耦合度。
3、在运维方面:可以清晰快速的定位排查问题。
微服务框架里 Dubbo 和 Spring Cloud 这两个用的最多。随着 docker 和 容器编排技术的成熟,最近用 Docker、Kubernetes 构建微服务架构的也越来越多了。
公司之前的项目中有一部分采用 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
欢迎关注,不定期更新本系列和其他文章
古时的风筝 ,进入公众号可以加入交流群

如果你也打算学习 Spring Cloud的更多相关文章
- 深入学习spring cloud gateway 限流熔断
前言 Spring Cloud Gateway 目前,Spring Cloud Gateway是仅次于Spring Cloud Netflix的第二个最受欢迎的Spring Cloud项目(就GitH ...
- Spring Boot 2.4发布了,但Spring Cloud用户不推荐着急升级
前段时间Spring Boot发布了本年度最后一个重要更新版本:Spring Boot 2.4.0. 最近在社群里也开始有讨论关于Spring Boot 2.4的一些使用问题.我发现有很多Spring ...
- spring cloud学习填坑笔记
最近在学习spring cloud,由于学习资料具有普遍性,部分应个人原因导致的小细节问题,往往很难找到解决的办法.这特别记录一下自己遇到的一些问题. 一.eureka-server加入securit ...
- Spring Cloud学习(一)
Spring Cloud是什么? Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线.负载 ...
- 推荐一个spring cloud 学习路线,绝对合理化
最近没有时间所有没用给大家更新spring cloud 系列学习,在这先给大家奉献上我学习spring cloud 的路线 当然第一步先学习springboot然后: spring cloud eur ...
- Spring Cloud学习笔记--Spring Boot初次搭建
1. Spring Boot简介 初次接触Spring的时候,我感觉这是一个很难接触的框架,因为其庞杂的配置文件,我最不喜欢的就是xml文件,这种文件的可读性很不好.所以很久以来我的Spring学习都 ...
- Spring Cloud Alibaba学习笔记(1) - 整合Spring Cloud Alibaba
Spring Cloud Alibaba从孵化器版本毕业:https://github.com/alibaba/spring-cloud-alibaba,记录一下自己学习Spring Cloud Al ...
- Spring Cloud 系列之 Spring Cloud Stream
Spring Cloud Stream 是消息中间件组件,它集成了 kafka 和 rabbitmq .本篇文章以 Rabbit MQ 为消息中间件系统为基础,介绍 Spring Cloud Stre ...
- Spring Cloud (十五)Stream 入门、主要概念与自定义消息发送与接收
前言 不写随笔的日子仿佛就是什么都没有产出一般--上节说到要学Spring Cloud Bus,这里发现按照官方文档的顺序反而会更好些,因为不必去后边的章节去为当前章节去打基础,所以我们先学习Spri ...
随机推荐
- 单台PC玩转NEUTRON(一:环境准备)
要开始从事云计算网络领域的技术研究.过去10年一直是从事传统网络相关的工作,新的事务在知识结构上还有一些差异,边学边写,作为个人总结,也共享给大家. 工欲善其事必先利其器,好的开发调测环境让人学习工作 ...
- python中线程和进程(二)
目录 线程同步 Event Lock RLock Condition Barrier semaphore GIL 线程同步 线程同步,即线程之间协同工作,一个线程访问某些数据时,其他线程不能访问这些数 ...
- Java进阶篇设计模式之六 ----- 组合模式和过滤器模式
前言 在上一篇中我们学习了结构型模式的外观模式和装饰器模式.本篇则来学习下组合模式和过滤器模式. 组合模式 简介 组合模式是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来 ...
- .Net 特性 attribute 学习 ----自定义特性
什么是特性? [Obsolete("不要用无参构造函数",true)] 放在方式上, 该方法就不能使用了 [Serializable]放在类上面.该类就是可以序列化和反序列化使用 ...
- 自学WEB前端能不能找到一份前端开发工作
关于自学WEB前端能不能通过社招找到一份互联网公司WEB前端开发的工作,有无数的人问出这样的问题,答案没有标准的,只能从概率去考虑.有的人可以,有的人不可以,有的人自学就业的概率就是高,有的概率就是低 ...
- (办公)springboot配置aop处理请求.
最近项目用到springboot,就是需要配置一些东西.比如用aop处理请求.方法前通知获取url,method,ip,类方法,参数,方法后通知,返回参数,而且还可以记录一下日志.下面是操作的代码. ...
- IIS网站部署后,程序常见错误记录
1.网站部署步骤 开启IIS服务.打开IIS管理器.添加网站.修改程序池(4.0).部署完成. 2.常见问题记录(问题记录比较模糊,仅做参考) (1).对于web.config连接数据库的配置为win ...
- [20190402]关于semtimedop函数调用2.txt
[20190402]关于semtimedop函数调用2.txt --//前几天做了sql语句在mutexes上的探究.今天看看_mutex_wait_time设置很大的情况下是否semtimedop会 ...
- 快速构建SPA框架SalutJS--项目工程目录 三
配置文件 在开始我们的第一个界面之前,我们需要把初始的html和config文件配置好.html非常简单,只需要一个div作为最外部的容器包裹着所有界面即可: <!DOCTYPE html> ...
- 【Python实践-1】求一元二次方程的两个解
知识点: import sys, sys模块包含了与Python解释器和它的环境有关的函数. “sys”是“system”的缩写.sys.exit() 中途退出程序, (注:0是正常退出,其他为不正常 ...