Spring Cloud 系列之初识 Cloud

男娘i 2022-11-20 08:28 302阅读 0赞

1.1 系统架构的演变

1.1.1 集中式

  当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是影响项目开发的关键。集中式架构的优点是:系统开发速度快、维护成本低、适用于并发要求较低的系统。缺点是:代码耦合度高,后期维护困难、无法针对不同模块进行针对性优化、无法水平扩展、单点容错率低,并发能力差。

在这里插入图片描述

1.1.2 垂直拆分

  当访问量逐渐增大,单一应用无法满足需求,此时为了应对更高的并发和业务需求,我们根据业务功能对系统进行拆分。垂直架构的优点:系统拆分实现了流量分担,解决了并发问题、可以针对不同模块进行优化、方便水平扩展,负载均衡,容错率提高。缺点:系统间相互独立,会有很多重复开发工作,影响开发效率。

在这里插入图片描述

1.1.3 分布式

  当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式调用是关键。分布式架构的优点:将基础服务进行了抽取,系统间相互调用,提高了代码复用和开发效率。缺点:系统间耦合度变高,调用关系错综复杂,难以维护。

在这里插入图片描述

1.1.4 流动计算架构(SOA: 面向服务的架构)

  当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。流动计算架构的优点:服务注册中心,实现服务自动注册和发现,无需人为记录服务地址;服务自动订阅,服务列表自动推送;服务调用透明化,无需关心依赖关系;动态监控服务状态监控报告,人为控制服务状态。缺点:服务间会有依赖关系,一旦某个环节出错会影响较大;服务关系复杂,运维、测试部署困难。

在这里插入图片描述

1.1.5 微服务架构

  微服务架构是使用一套小服务来开发单个应用的方式或途径,每个服务基于单一业务能力构建,运行在自己的进程中,并使用轻量级机制通信,通常是 HTTP API,并能够通过自动化部署机制来独立部署。这些服务可以使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理。

    在这里插入图片描述

  API Gateway 网关是一个服务器,是系统的唯一入口。为每个客户端提供一个定制的 API。API 网关核心是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。如它还可以具有其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。通常,网关提供 RESTful / HTTP 的方式访问服务。而服务端通过服务注册中心进行服务注册和管理。
  微服务架构与 SOA 都是对系统进行拆分;微服务架构基于 SOA 思想,可以把微服务当做去除了 ESB 的 SOA。ESB 是 SOA 架构中的中心总线,设计图形应该是星形的,而微服务是去中心化的分布式软件架构。两者比较类似,但其实也有一些差别:































功能 SOA 微服务
组件大小 大块业务逻辑 单独任务或小块业务逻辑
耦合 通常松耦合 总是松耦合
管理 着重中央 管理着重分散管理
目标 确保应用能够交互操作 易维护、易扩展、更轻量级的交互

1.2 服务调用方式

1.2.1 RPC

  Remote Produce Call 远程过程调用,类似的还有 RMI。自定义数据格式,基于原生 TCP 通信,速度快,效率高。早期的 webservice,现在的 dubbo,都是 RPC 的典型代表。

1.2.2 HTTP

  HTTP 其实是一种网络传输协议,基于 TCP,规定了数据传输的格式。现在客户端浏览器与服务端通信基本都是采用 HTTP 协议,也可以用来进行远程服务调用。缺点是消息封装臃肿,优势是对服务的提供和调用方没有任何技术限定,自由灵活,更符合微服务理念。现在热门的 REST 风格,就可以通过 HTTP 协议来实现。

1.3 Spring Cloud

1.3.1 概述

  Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot 的开发风格做到一键启动和部署。Spring Cloud 并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过 Spring Boot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

1.3.2 版本选择

  在创建项目时我们应该根据 Spring Cloud 的版本来选择 Spring Boot 的版本,咋们可以去【 ☞ 对应版本】查看对应版本。
在这里插入图片描述
大体的版本对应为






























Cloud Boot
Hoxton 2.2.x,2.3.x (Starting with SR5)
Greenwich 2.1.x
Finchley 2.0.x
Edgware 1.5.x
Dalston 1.5.x

  在 Spring Cloud 官网可以看到现在的稳定版是 H.SR8,那么 Spring Boot 的版本是不是可以在可选版本之间随便选择呢,理论上是可以的,但是我们点到参考文档中会发现它推荐我们使用 2.3.3.RELEASE。

在这里插入图片描述

在这里插入图片描述

1.3.3 技术选型

  经过长时间的技术迭代,有许多技术已经停止维护了,如今创建新项目建议使用阿里巴巴提供的 Nacos,Nacos 可以充当注册中心、消息总线、配置中心,一挑三强大无比。当然 Eureka 等不更新依旧使用低版本也是没有问题的。

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,302人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Spring Cloud 系列 Cloud

    1.1 系统架构的演变 1.1.1 集中式   当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问

    相关 1.Spring-Cloud

    部分来自微信公众号:纯洁的微笑 一:读《SpringCloud微服务实战》 1.Spring-Cloud其目标构建一套标准化的微服务解决方案,让架构师,开发者在使用微服务理