首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Spring Cloud 系列之初识 Cloud

Spring Cloud 系列之初识 Cloud

作者头像
Demo_Null
发布2020-10-30 10:31:18
发布2020-10-30 10:31:18
6780
举报
文章被收录于专栏:Java 学习Java 学习

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 等不更新依旧使用低版本也是没有问题的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/10/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1 系统架构的演变
    • 1.1.1 集中式
    • 1.1.2 垂直拆分
    • 1.1.3 分布式
    • 1.1.4 流动计算架构(SOA: 面向服务的架构)
    • 1.1.5 微服务架构
  • 1.2 服务调用方式
    • 1.2.1 RPC
    • 1.2.2 HTTP
  • 1.3 Spring Cloud
    • 1.3.1 概述
    • 1.3.2 版本选择
    • 1.3.3 技术选型
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档