资讯专栏INFORMATION COLUMN

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

alighters / 3266人阅读

摘要:系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。传统架构升级困难。新的轻量级协议容器化的出现。熔断处理在微服务出现问题时防止出现雪崩效应。

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

再聊SpringCloud之前我们先聊聊微服务。

什么是微服务?
微服务(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 Boot写的用户微服务注册于Eureka,使其受Eureka统一的调度管理。

在Eureka外部再包裹一个Ribbon组件,再用户去访问用户微服务的时候,由Ribbon负责多个用户微服务之间的负载均衡。Ribbon有一个‘心跳’机制,去检测用户微服务的状态,在用户微服务出现问题时能够及时发现,并处理。

在Ribbon的外层,还有一个feign组件用于给微服务做接口伪装,有了feign在用户调用微服务时就像调用本地的接口一样简单,完全隐藏了微服务的存在。

再聊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不仅仅只有这几个工具,其他更有用的工具要靠大家自己发掘了。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68177.html

相关文章

  • Spring框架我见(五)——Spring Boot

    摘要:通过我们可以更轻松地入门,更简单的使用的框架。团队为了摆脱框架中各类繁复纷杂的配置,使用约定优于配置的思想,在基础上整合了大量常用的第三方库的开发框架。这里还要说的一点,的出现并不是单纯的为了简化开发,更是为做铺垫。 说完了Spring 我们来聊聊Spring的进阶版Spring Boot,如果你还不知道Spring Boot,那希望这篇文章能够为你指明方向。 Spring Boot ...

    张巨伟 评论0 收藏0
  • Spring框架我见(四)——Spring MVC

    摘要:是结构在框架中的一种表现形式。这句话听起来有点绕,我们可以看一下下面这张图,大家可以吧容器中的理解为全局变量,吧容器中的理解为局部变量。在方法体中可以访问局部变量和全局变量,但是在方法外,就只能访问全局变量,是不能访问局部变量的。 聊完了Spring,我们来看看Spring在web方面的应用Spring MVC。 MVC 首先我们来看什么是mvc? 大家知道在jsp里面也是可以写jav...

    shiina 评论0 收藏0
  • Spring框架我见(三)——IOC、AOP

    摘要:模块负责的所有面向切面的功能。总结的统一管理,降低了对象之间的耦合对主流的框架提供了很好的集成支持提供众多组件,事务管理,等具有高度可开放性,开发者可以自由选择部分或全部主要使用工厂模式和代理模式。 聊完了Spring框架中最重要的两种设计模式,我们来看一下Spring框架的模块和结构图。 Spring框架的结构 下图是Spring官方给出的Spring框架的结构图。 showImg(...

    khs1994 评论0 收藏0
  • Spring框架我见(二)——代理模式

    摘要:聊完了工厂模式,下面我们来说框架中的另一个核心设计模式代理模式。这里的外卖小哥就相当于是我们的代理。主要分为代理和代理。 聊完了工厂模式,下面我们来说Spring框架中的另一个核心设计模式——代理模式(Proxy Pattern)。 代理模式 大家可以先不用看概念,先举个吃饭的例子:比如说我们想吃饭,我们可以选择自己做饭吃、去饭店吃、叫外卖吃。如果我们选择自己做着吃,我们就需要去买菜、...

    oneasp 评论0 收藏0
  • Spring框架我见(一)——工厂模式

    摘要:相对于工厂模式,抽象工厂模式生产的对象更加具体,也更加丰富,但相对编码也更加复杂。具体的抽象工厂模式的实现大家可以参考菜鸟教程。知道了工厂模式和抽象工厂模式的区别,请大家使用的时候应该根据具体的情况进行选择。 大家好,今天给大家分享一些Spring的学习心得,在讲Spring之前,先和大家分享Spring中核心的设计模式。 工厂模式 在聊概念之前我先问问大家:什么是工厂? 这个很简单,...

    venmos 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<