Spring Cloud 系列之初识 Cloud

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 的版本,咋们可以去【 ☞ 对应版本】查看对应版本。
在这里插入图片描述
大体的版本对应为

CloudBoot
Hoxton2.2.x,2.3.x (Starting with SR5)
Greenwich2.1.x
Finchley2.0.x
Edgware1.5.x
Dalston1.5.x

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

在这里插入图片描述

在这里插入图片描述

1.3.3 技术选型

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

在这里插入图片描述




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值