Spring框架之我见(六)——Spring Cloud

聊完Spring Boot,咱们来看看Spring Boot最重要的一方面的应用——Spring Cloud。

Spring Cloud

再聊SpringCloud以前咱们先聊聊微服务。spring

什么是微服务?

微服务(Micro Service):微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被 独立部署,各个微服务之间是 松耦合的。每一个微服务仅关注于完成 一件任务并很好地完成该任务。在全部状况下,每一个任务表明着一个小的业务能力。

微服务为何会出现?

  • 大型总体式应用维护困难。
  • 传统架构升级困难。
  • 新的轻量级协议(RESTful)、容器化(Docker)的出现。

说完了什么是微服务,咱们在开来看Spring Cloud。安全

什么是Spring Cloud?

提到spring Cloud 你们可能觉得他是和云计算相关的框架。其实不是,Spring Cloud是一套用于微服务的、简单易懂、易部署和易维护的分布式系统开发工具包。
它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,均可以用Spring Boot的开发风格作到一键启动和部署。服务器

Spring Cloud如何实现微服务?

  • Eureka(注册中心):负责全部微服务的管理。
  • Ribbon(服务发现):主要负责客户端的负载均衡
  • Feign(接口假装):使微服务之间的调用像本地调用同样简单。
  • Hystrix(熔断处理):在微服务出现问题时防止出现雪崩效应。
  • Zuul(代理机制):安全认证、动态路由、流量管理、服务器负载均衡
  • Config(配置管理):管理全部微服务的配置文件(GIT/SVN)。

具体的实现流程以下:架构

Spring Cloud

  • 将使用Spring Boot写的用户微服务注册于Eureka,使其受Eureka统一的调度管理。
  • 在Eureka外部再包裹一个Ribbon组件,再用户去访问用户微服务的时候,由Ribbon负责多个用户微服务之间的负载均衡。Ribbon有一个‘心跳’机制,去检测用户微服务的状态,在用户微服务出现问题时可以及时发现,并处理。
  • 在Ribbon的外层,还有一个feign组件用于给微服务作接口假装,有了feign在用户调用微服务时就像调用本地的接口同样简单,彻底隐藏了微服务的存在。
  • 再聊Hystrix以前,咱们的先聊一下什么是雪崩效应?以及它有什么危害?先来看一张微服务之间相互调用的关系图:

Hystrix

假如说用户但愿调用一下微服务A,微服务A又会调用微服务B,微服务B又会去调用微服务C,这时候微服务C出现故障,不能被使用了,若是没有Hystrix,微服务B全部的调用微服务C的线程都会阻塞,直到把微服务B给拖垮,微服务B一挂,那么微服务A和微服务Y也就挂了。最后微服务X也挂了。这就是雪崩效应。Hystrix就是用来解决这个问题的,假若有了Hystrix,微服务B在调用微服务C出现问题,线程并不会一直等待,而是直接调用微服务B的一个CallBack的回调方法,直接给微服务A返回一个错误消息。再过一段时间以后,微服务B会再次尝试调用微服务C看微服务C是否已经恢复。这就给了整个微服务的集群一个自我恢复的能力。负载均衡

  • Zuul就是一个微服务的代理,咱们前面说到的代理能干的事它都能干。
  • Config是用于微服务的配置文件管理的,虽然在Spring Boot的加持下微服务的配置文件已经不多了,可是,在成百上千的微服务集群中,配置文件仍是应该有一个组件统一管理和部署。Config使用SVN或者GIT作到配置文件的统一管理,仍是十分的方便。

固然Spring Cloud不单单只有这几个工具,其余更有用的工具要靠你们本身发掘了。框架

相关文章
相关标签/搜索