Spring Cloud介绍

引言:初识 Spring Cloud 及应用现状

Spring Cloud 是什么?

        Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的开发便利性简化了分布式系统的开发,比如服务发现、服务网关、服务路由、链路追踪等。Spring Cloud 并不重复造轮子,而是将市面上开发得比较好的模块集成进去,进行封装,从而减少了各模块的开发成本。换句话说:Spring Cloud 提供了构建分布式系统所需的“全家桶”。

Spring Cloud 现状

        目前,国内使用 Spring Cloud 技术的公司并不多见,不是因为 Spring Cloud 不好,主要原因有以下几点:

        1.Spring Cloud 中文文档较少,出现问题网上没有太多的解决方案。
        2.国内创业型公司技术老大大多是阿里系员工,而阿里系多采用 Dubbo 来构建微服务架构。
        3.大型公司基本都有自己的分布式解决方案,而中小型公司的架构很多用不上微服务,所以没有采用 Spring Cloud 的必要性。
        但是,微服务架构是一个趋势,而 Spring Cloud 是微服务解决方案的佼佼者,这也是作者写本系列课程的意义所在。

Spring Cloud 优缺点

其主要优点有:

1.集大成者,Spring Cloud 包含了微服务架构的方方面面。
2.约定优于配置,基于注解,没有配置文件。
3.轻量级组件,Spring Cloud 整合的组件大多比较轻量级,且都是各自领域的佼佼者。
4.开发简便,Spring Cloud 对各个组件进行了大量的封装,从而简化了开发。
5.开发灵活,Spring Cloud 的组件都是解耦的,开发人员可以灵活按需选择组件。

它的缺点:

1.项目结构复杂,每一个组件或者每一个服务都需要创建一个项目。
2.部署门槛高,项目部署需要配合 Docker 等容器技术进行集群部署,而要想深入了解 Docker,学习成本高。
        Spring Cloud 的优势是显而易见的。因此对于想研究微服务架构的同学来说,学习 Spring Cloud 是一个不错的选择。

Spring Cloud 和 Dubbo 对比


        Dubbo 只是实现了服务治理,而 Spring Cloud 实现了微服务架构的方方面面,服务治理只是其中的一个方面。下面通过一张图对其进行比较:

        可以看出,Spring Cloud 比较全面,而 Dubbo 由于只实现了服务治理,需要集成其他模块,需要单独引入,增加了学习成本和集成成本。

1、什么是微服务

1.1、架构演进

        架构的发展历程是从单体式架构,到分布式架构,到SOA架构,再到微服务架构。

图1:架构演进

1.1.1 单体架构

将业务的所有功能集中在一个项目中开发,打成一个包部署。

单体架构的优缺点如下:

优点:

  • 架构简单

  • 部署成本低

缺点:

  • 耦合度高(维护困难、升级困难)  

1.1.2 分布式架构

根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发,称为一个服务。

优点:

  • 降低服务耦合

  • 有利于服务升级和拓展

缺点:

  • 服务调用关系错综复杂

分布式架构虽然降低了服务耦合,但是服务拆分时也有很多问题需要思考:

  • 服务拆分的粒度如何界定?

  • 服务之间如何调用?

  • 服务的调用关系如何管理?

人们需要制定一套行之有效的标准来约束分布式架构。

1.1.3 SOA架构

        SOA是一种面向服务的架构。其应用程序的不同组件通过网络上的通信协议向其它组件提供服务或消费服务,所以也是分布式架构的一种。

图4:SOA架构示意图


1.2、微服务架构

        微服务架构在某种程度上是SOA架构的进一步的发展。微服务目前并没有比较官方的定义。微服务 Microservices 之父,马丁.福勒,对微服务大概的概述如下:
        就目前而言,对于微服务业界并没有一个统一的、标准的定义(While there is no precise definition of this architectural style ) 。
        但通常在其而言,微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行独立的自己的进程中,服务之间互相协调、互相配合,为用户提供最终价值。
        服务之间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API ) 。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。
        另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务。可以使用不同的语言来编写服务,也可以使用不同的数据存储。
图5:微服务定义思维导图

微服务的架构特征:

- 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责
- 自治:团队独立、技术独立、数据独立,独立部署和交付
- 面向服务:服务提供统一标准的接口,与语言和技术无关
- 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题


1.3、微服务解决方案

目前最流行的两种微服务解决方案是Spring Cloud和Dubbo。


2、SpringCloud概览


2.0 什么是SpringCloud

        Spring Cloud 作为 Java 言的微服务框架,它依赖于 Spring Boot ,有快速开发、持续交付和容易部署等特点。Spring Cloud 的组件非常多,涉及微服务的方方面面,井在开源社区 Spring、Netflix Pivotal 两大公司的推动下越来越完善。
Spring Cloud是一系列组件的有机集合。
图7:SpringCloud技术体系


图8:SpringCloud技术体系思维导图


2.1、SpringCloud主要组件

2.1.1、Eureka

        Netflix Eureka 是由 Netflix 开源的一款基于 REST 的服务发现组件,包括 Eureka Server 及 Eureka Client。


2.1.2、Ribbon

        Ribbon Netflix 公司开源的一个负载均衡的组件。


2.1.3、Feign

        Feign是是一个声明式的Web Service客户端。


2.1.4、Hystrix

        Hystrix是Netstflix 公司开源的一个项目,它提供了熔断器功能,能够阻止分布式系统中出现联动故障。


2.1.5、Zuul

        Zuul 是由 Netflix 孵化的一个致力于“网关 “解决方案的开源组件。


2.1.6、Gateway

        Spring Cloud Gateway 是 Spring 官方基于 Spring 5.0、 Spring Boot 2.0 和 Project Reactor 等技术开发的网关, Spring Cloud Gateway 旨在为微服务架构提供简单、 有效且统一的 API 路由管理方式。


2.1.7、Config

        Spring Cloud 中提供了分布式配置中 Spring Cloud Config ,为外部配置提供了客户端和服务器端的支持。


2.1.8、 Bus

        使用 Spring Cloud Bus, 可以非常容易地搭建起消息总线。


2.1.9、OAuth2

        Sprin Cloud 构建的微服务系统中可以使用 Spring Cloud OAuth2 来保护微服务系统。


2.1.10、Sleuth

        Spring Cloud Sleuth是Spring Cloud 个组件,它的主要功能是在分布式系统中提供服务链路追踪的解决方案。


 

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值