SpringCloud介绍

2023-11-02

一、认识SpringCloud

1.SpringCloud基本概念

官网说明:Spring Cloud 为开发人员提供了在分布式系统中快速构建一些常见模式的工具(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)。分布式系统的协调导致了样板模式,使用 Spring Cloud 开发人员可以快速建立实现这些模式的服务和应用程序。它们可以在任何分布式环境中很好地工作,包括开发人员自己的笔记本电脑、裸机数据中心和托管平台,如Cloud Foundry。

自我理解:Spring Cloud是一个基于Spring Boot实现的服务治理工具包,用于微服务架构中管理和协调服务的。Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。有了SpringCloud之后,让微服务架构的落地变得更简单。

2. SpringCloud常用组件

SpringCloud最核心的几大组件如下:

Netflix Zuul : 服务网关:微服务的访问入口,可以做(登录检查、权限检查、监控)有负载均衡

zuul作为服务网关,我们可以把它看作是微服务的大门,所有的请求都需要经过zuul之后才能到达目标服务,根据这一特性,我们可以把微服务公共的是事情交给zuul统一处理,如:用户鉴权,请求监控等。

Netflix Eureka: 注册中心:维护各个服务的通信地址的(服务名、IP、端口等)

当我们的微服务过多的时候,管理服务的通信地址是一个非常麻烦的事情,Eureka就是用来管理微服务的通信地址清单的,有了Eureka之后我们通过服务的名字就能实现服务的调用

Spring Cloud Config:分布式配置:将服务的配置文件进行统一管理

微服务架构中的服务实例非常的多,服务的配置文件分散在每个服务中,每次修改服务的配置文件和重新服务实例都是一个很麻烦的工作,Spring Cloud Config作为分布式配置管理中心就是用来统一的管理服务的配置文件。

Netflix Ribbon\Feign:客户端负载均衡:服务之间进行调用的

Ribbon和Feign都是客户端负载均衡器,它的作用是在服务发生调用的时候帮我们将请求按照某种规则分发到多个目标服务器上,简单理解就是用来解决微服务之间的通信问题。

注意:Feign针对Ribbon进行了封装

Netflix Hystrix:断路器:服务调用如果出现故障可以通过Hystrix来做一些处理

微服务的调用是非常复杂的,有的时候一个请求需要很多的微服务共同完成,那么一旦某个服务发生故障,导致整个调用链上的微服务全都出现异常,甚至导致整个微服务架构瘫痪。Hystrix就是用来解决微服务故障,保护微服务安全的组件。

Spring Cloud Bus:消息总线:给服务做消息广播的

消息总线是在微服务中给各个微服务广播消息的一个组件,我们使用消息总线构建一个消息中心,其他微服务来接入到消息中心,当消息总线发起消息,接入的微服务都可以收到消息从而进行消费。

Spring Cloud sleuth:微服务链路追踪:监控服务调用的线路、链路的

当我们的应用采用微服务架构之后,后台可能有几十个甚至几百个服务在支撑,一个请求请求可能需要多次的服务调用最后才能完成,链路追踪的作用就是来监控维护之间的调用关系,让程序员方便直观的感受到一个请求经历了哪些微服务,以及服务的请求时间,是否有异常等。

SpringCloud最核心的几大组件图解:

 

二、服务通信协议

1.RPC

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

2.Http

Http其实是一种网络传输协议,基于TCP,规定了数据传输的格式。现在客户端浏览器与服务端通信基本都是采用Http协议。也可以用来进行远程服务调用。缺点是消息封装臃肿。 现在热门的Rest风格,就可以通过http协议来实现

注意:我们可以认为SpringCloud就是基于Http协议实现服务之间的通信。

3.如何选择

如果架构师选择Dubbo作为微服务开发框架,通信方式自然就是RPC,

如果架构师选择了SpringCloud作为微服务开发框架,那么通信方式自然就是基于Http协议

当然,如果服务的通信方式成为了微服务的性能瓶颈,那么架构师自然需要去考虑更换微服务的通信协议。

SpringCloud与Dubbo

1.Dubbo简介

Dubbo最早是有阿里巴巴提供的一个服务治理和服务调用框架,现在已经成为Apache的顶级项目,Dubbo跟SpringCloud最显著的区别是Dubbo的定位只是一个RPC框架,相比SpringCloud来说它缺少很多功能模块,如:网关,链路追踪等,所以往往在使用Dubbo作为微服务开发框架的时候,还需要去配合其他的框架一起使用,如:加入zookeeper作为注册中心。

SpringCloud与Dubbo的区别

下面是网上比较流行的Dubbo和Spring Cloud功能对比表:

功能 Dubbo SpringCloud
服务注册中心 Zookeeper Spring Cloud Netfix Eureka
服务调用方式 RPC REST API
服务监控 Dubbo-monitor Spring Boot Admin
熔断器 不完善 Spring Cloud Netflix Hystrix
服务网关 Spring Cloud Netflix Zuul
分布式配置 Spring Cloud Config
服务跟踪 Spring Cloud Sleuth
数据流 Spring Cloud Stream
批量任务 Spring Cloud Task
信息总线 Spring Cloud Bus

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringCloud介绍 的相关文章

随机推荐

  • mysql mvcc

    mysql MVCC MVVC 实现 排他锁 undolog 版本事务链 一致性read view视图 版本事务链匹配规则 一致性非锁定读 在 InnoDB 存储引擎中 多版本控制 multi versioning open in new
  • switch语句判断范围_Linux C语言: switch语句的范围判断!

    在C语言中 除了循环结构 还有的就是分支结构 分支结构中有if分支与switch分支 一般地 需要判断的条件情况少时 就使用if分支 当判断的情况复杂时 就会使用switch语句 假设有一道题目 要求用户输入一个整数 如果该整数为100 则
  • (C++)将引用用作函数参数——讲解+程序例子

    引用经常被用作函数参数 使得函数中的变量名成为调用程序中的变量的别名 通俗易懂的讲 就是将形参变成实参的别名 这种传递参数的方法称为按引用传递 C语言只能按值传递 按值传递导致被调用函数使用程序的值的拷贝 因此C语言采用按指针传递的方式 避
  • Mac在命令行中打开Finder

    在当前目录下 使用如下代码 open 即可打开当前Finder 并定位当当前目录
  • PowerDesigner V16.5 安装文件 及 破解文件

    之前在网上找个假的 只能看 不能创建自己的DB 或者 不能破解的 比较伤脑筋 偶在这里提供一个 可长期使用的版本 PowerDesigner165 破解文件 rar http pan baidu com s 1hqEDUCG 636KB P
  • 微信小程序涉嫌通过中断用户体验、限制用户操作的方式,收集与服务无关的用户个人信息,包括但不限于,手机号、

    微信小程序涉嫌通过中断用户体验 限制用户操作的方式 收集与服务无关的用户个人信息 包括但不限于 手机号 身份证号 生日 住址等 违反 微信小程序平台运营规则 及相关规则 建议尽快整改 具体运营规范 xxxxxxx 解决方法 增加同意协议 如
  • HBase RowKey设计和实现

    HBase由于存储特性和读写性能 在OLAP即时分析中发挥重要作用 Rowkey的设计好坏关乎到HBase的使用情况 我们知道HBase中定位一条数据需要四个维度的限制 RowKey Column Family Column Qualifi
  • Vue 3.3 新特性-defineModel

    Vue 3 3 新特性 defineModel使用 定义子组件 将原来的defineProps改为defineModel 当子组件变化是 父级组件也会变化 修改对应值
  • Assembler messages error gcc and clang build

    Assembler 错误 Assembler messages 除了自己写的汇编程序会报 Assembler Error外 编译GCC Clang等公开的计算机语言 也会报此错误 自己的汇编 修改自己程序代码 编译GCC Clang等 查看
  • sql: Oracle 11g create procedure

    CREATE OR REPLACE PROCEDURE proc Insert BookKindList temTypeName nvarchar2 temParent int AS ncount number begin SELECT C
  • 关于Navicat连接MySQL出现2059错误解决方法

    一 进入Navicat连接MySQL出现下面的2059界面 原因 mysql8之前版本中加密规则为mysql native password mysql8以后的加密规则为caching sha2 password 将mysql用户登录加密规
  • AI鸟类识别实现自然生态环境数字化监测

    判断一个城市是否生态 是否环保 鸟类往往比人类更加客观公正 更有 发言权 在东营人眼里 鸟类生存繁衍就是生态文明典范城市建设的 晴雨表 和 试金石 现在 很多鸟儿来到保护区都不想走 刘静说 在工作人员细致入微的保护下 很多候鸟都变成了 留鸟
  • 验证码的制作(Canvas)

    目录 画布的知识点 1 绘图 创建画布 2 获取画步 3 获取画笔 4 绘制直线 5 设置描边颜色 6 设置闭合路径 7 填充路径 8 设置填充颜色 9 画弧线 arc x y r 开始角 结束角 方向 10 绘制矩形 rect x y w
  • Windows下获取视频设备的一种改进实现

    之前在https blog csdn net fengbingchun article details 102806822中介绍过在Windows下获取视频设备列表的方法 其实那种实现方法是有缺陷的 当PC机上连接多个视频设备 并且其中有设
  • vite+react搭建人力管理系统项目(2)

    一 登录页面以及相关信息存储 api gt path gt user ts登陆人要请求的api import Get Post from server interface FcResponse
  • 从0开发一个Django博客系统

    目录 一 项目准备 1 1 项目分析 1 2 工程创建和配置 二 注册 2 2 定义用户模型类 2 3 图形验证码 2 4 短信验证码 2 5 用户注册实现 2 6 展示首页 2 7 状态保持 三 登录 3 1 手机登录 3 2 首页用户名
  • Linux下面跑.NET程序

    mono环境的部署 介绍再多也不过是纸上谈兵 实战才是硬道理 工欲善其事必先利其器 要实操 还必须先要有这个环境 下面进入本回合的重点环节 Mono环境的配置 网上也有大量关于mono环境搭建的帖子 基本上都是搭配以下这两种类型的mono环
  • ue4 解决界面不能自动对焦问题

    在UE4界面的制作中遇到了一个小问题 在ue4选中视口的模式中的按钮点击是正常的但是在独立进程游戏模式下或者打包好的项目中点击就出现问题了 界面中的按钮需要点击两次才能够触发响应事件 这问题虽然不是大问题但是很别扭 按钮需要点击两次才行 首
  • 记一次Kafka消费能力低,重新分配节点问题优化

    目前在做一个车联网APP项目 项目中历史轨迹的处理模式为kafka推送给我车辆报文 然后我自行判断车辆熄火点火来进行历史轨迹行程的保存 项目开始车辆较少 每次kafka推送到我的后端 然后我进行处理轨迹开始的插入和轨迹结束的保存就行了 但是
  • SpringCloud介绍

    一 认识SpringCloud 1 SpringCloud基本概念 官网说明 Spring Cloud 为开发人员提供了在分布式系统中快速构建一些常见模式的工具 例如配置管理 服务发现 断路器 智能路由 微代理 控制总线 一次性令牌 全局锁