一篇文章掌握SpringCloud与SpringCloud Alibaba的区别

目录

一、SpringCloud组件的升级与替换

二、服务注册中心的比较

1、根据CAP理论对注册中心进行分类

2、Zookeeper通过Zab协议保证强一致性

3、Eureka保证高可用性

4、Nacos既支持AP模式又支持CP模式

三、服务调用框架的比较

1、Ribbon

2、OpenFeign

3、Dubbo

四、服务降级框架的比较

Hystrix和Sentinel的比较


一、SpringCloud组件的升级与替换

由于SpringCloud Netflix原先的一些组件进入停更维护状态,因此这些组件逐渐被SpringCloud Alibaba一些新技术所替代。

SpringCloud Alibaba,实际上对我们的SpringCloud2.x和1.x实现拓展组件功能

1.Nacos=分布式配置中心+分布式注册中心=Eureka+Config

2.目的是为了推广阿里的产品,如果使用了SpringCloud Alibaba,最好使用alibaba整个体系产品。

序号组件SpringCloudSpringCloud Alibaba
1服务注册中心EurekaZookeeper、Consul、Nacos(推荐)
2配置中心ConfigNacos
3服务总线(消息总线)BusNacos
4负载均衡RibbonLoadBalancer
5服务调用FeignOpenFeign、Dubbo
6服务网关ZuulGateway
7服务降级(熔断降级)HystrixSentinel(流量控制、熔断降级、系统负载保护)
8服务跟踪(链路追踪)Sleuth&ZipkinSkyWalking
9分布式事务无(第三方替代方案:2pc)Seata
10分布式任务调度无(第三方替代方案:xxl-job)SchedulerX
11消息中间件无(第三方替代方案:RabbitMQ)RocketMQ
12批量任务Spring Cloud TaskSpring Cloud Task
13数据流Stream
14服务安全Security或(第三方替代方案:Shiro)Security

二、服务注册中心的比较

1、根据CAP理论对注册中心进行分类

  • 保证CP(注重一致性):ZookeeperConsul

  • 保证AP(注重可用性):Eureka

  • 既支持CP又支持APNacos

2、Zookeeper通过Zab协议保证强一致性

因此, Eureka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像Zookeeper

使整个注册服务瘫痪。

  • 所有的写请求必须经过leader节点传递给其他follower节点

  • 但是当leader节点因为网络故障与其他节点失去联系时,剩余节点会重新进行leader选举。问题在于,选举leader的时间太长,30 ~ 120s, 且选举期间整个zk集群都是不可用的,这就导致在选举期间注册服务瘫痪

  • 3、Eureka保证高可用性

  • Eureka各个节点都是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节点依然可以提供注册和查询服务。而Eureka的客户端在向某个Eureka注册或时如果发现连接失败,则会自动切换至其它节点,只要有一台Eureka还在,就能保证注册服务可用,只不过查到的信息可能不是最新的(不保证强一致性)。

  • 此外,Eureka还有自我保护机制:如果在15分钟内超过85%的节点都没有正常的心跳(短时间内丢失过多客户端),那么Eureka就认为客户端与注册中心出现了网络故障(如不是服务真的不可用了),此时会开启自我保护机制

  • Eureka不再从注册列表中移除因为长时间没收到心跳而应该过期的服务

  • Eureka仍然能够接受新服务的注册和查询请求,但是不会被同步到其它节点上(即保证当前节点依然可用)。

  • 网络稳定时,当前实例新的注册信息会被同步到其它节点中。

因此, Eureka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像Zookeeper那样使整个注册服务瘫痪。

4、Nacos既支持AP模式又支持CP模式

  • AP模式:不需要存储服务级别信息且服务实例是通过nacos-clinet注册,且能够保持心跳上报,可采用AP模式。如SpringCloud服务。AP模式下只支持注册临时实例。

  • CP模式:如需要在服务级别编辑或存储配置信息,则需使用CP模式,如K8S,DNS。AP模式下只支持注册持久化实例。

三、服务调用框架的比较

1、Ribbon

  • Ribbon是一套客户端负载均衡的工具,使用时需与RestTemplate配合使用。

  • 使用是需要模拟http请求然后使用RestTemplate发送给其他服务,步骤比较繁琐。

  • 负载均衡:支持轮询、随机、空闲策略、响应时间策略

2、OpenFeign

  • 同样使用HTTP协议进行通讯。

  • 使用时只需创建一个接口并使用注解@FeignClient)的方式配置, 即可完成对服务提供方的接口绑定,是对Ribbon+RestTemplate的进一步封装。

  • OpenFeign内部集成了 Ribbon,本质上是通过Ribbon完成负载均衡功能。

3、Dubbo

  • 支持多种传输协议Dubbo、Rmi、http、redis。适合数据量小、高并发和服务提供者远远少于消费者的场景。

  • 负载均衡:支持随机、轮询、活跃度、Hash一致性,负载均衡的算法可以精准到某个服务接口的某个方法。

四、服务降级框架的比较

Hystrix和Sentinel的比较

  • Hystrix本身就是一个非常出色的熔断降级框架Sentinel则是在Hystrix的基础上对其进行进一步的升级

  • Sentinel使用更方便:Sentinel提供了一个非常简洁的控制台界面,在控制台界面中即可非常方便地配置限流降级规则。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/587153.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式之初始设计模式和UML图

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…

SSH远程登陆服务器

截取自文章:SSH简介及两种远程登录的方法_ssh -CSDN博客 SSH的安装 SSH分为客户端 openssh-client 和服务器 openssh-server,可以利用以下命令确认电脑上是否安装了客户端和服务器。 dpkg -l | grep ssh 如果只是想远程登陆别的机器只需要安装客户端&…

web播放rtsp流视频,使用webrtc毫秒级延迟

目录 一、zlmediakit环境搭建和编译 1)、下载zlmediakit 2)、安装依赖 3)、编译webrtc 4)、启动zlmediakit 二、播放webrtc视频 1)、动态添加拉流代理 2)、播放视频 三、嵌入到自己的vue项目中。 1)、拷贝demo到自己的vue项目中 2)、mkcert生成证书 背景&#xff1…

shell shell脚本编写常用命令 语法 shell 脚本工具推荐

shell 脚本 计算机语言 Shebang 定义解释器 主要定义,您的脚本是用什么语言写的 #!/usr/bin/python //定义这是一个python语言#!/bin/bash //定义这是一个shell语言 echo SHELL我们执行的 linux 命令的时候,其实是使用 /bin/bash 这个二进制文…

鸿蒙应用开发 应用内字体大小调节

1 数据管理概述 在移动互联网蓬勃发展的今天,移动应用给我们生活带来了极大的便利,这些便利的本质在于数据的互联互通。因此在应用的开发中数据存储占据了非常重要的位置,HarmonyOS 应用开发也不例外。 本文将为您介绍 HarmonyOS 提供的数据…

stm32 HAL库 4096线ABZ编码器

[TOC]目录 ABZ编码器 4096线 买的是这个 AB相代表计数方向,Z代表过零点 cubemx配置 定时器Encoder 也可以选上DMA 中断 Z相GPIO中断 找一个空闲管脚 打开对应中断 代码 不用DMA int main(void) {short Enc_cnt 0;HAL_TIM_Encoder_Start_IT(&ht…

DrGraph原理示教 - OpenCV 4 功能 - 单通道图

通道 OpenCV的核心处理对象是Mat,大体是一个二维数组,加上了各种功能函数。 很多的图像处理,会在单通道或二值化的基础上进行,比如连通域、目标识别等。这里的通道就是channels。 不同的图像处理算法可能对通道数有特定的要求。例…

HTML5+CSS3+JS小实例:过年3D烟花秀

实例:过年3D烟花秀 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><…

前端需要学GraphQL 吗?

什么是GraphQL&#xff1f; GraphQL 是 Facebook 开发的一个数据查询语言&#xff0c;可以让前端开发者更具体地指定他们需要什么数据&#xff0c;从而使数据获取更加高效。GraphQL 是一种数据查询和操作语言&#xff0c;它主要被设计用来作为 API 的请求语言。与传统的 RESTf…

#前后端分离# 头条发布系统

头条业务简介 用户功能 注册功能登录功能jwt实现 新闻 新闻的分页浏览通过标题关键字搜索新闻查看新闻详情新闻的修改和删除 预览界面 开源上线 https://gitcode.net/NVG_Haru/NodeJS_5161447 数据库设计 数据库脚本 CREATE DATABASE sm_db;USE sm_db;SET NAMES utf8mb4…

半导体行业-SECS/GEM协议 JAVA与SECS/GEM通信 什么是配方?springboot集成SECS通信协议 配方管理S7FX

Java与SECS基础通信 Java实现SECS指令S2F17获取时间 Java实现SECS指令 S10F3 终端单个显示例子 Java实现SECS指令 S7FX配方管理 Java实现SECS指令 S5F1报警/取消报警上传 实例源码及DEMO请查阅 JAVA开发SECS快速入门资料&#xff0c;SECS S7F19 什么是半导体配方&…

C++ enum class 如何使用

enum class 是 C11 引入的一种新的枚举类型&#xff0c;它是对传统 C 风格的枚举的一种改进。enum class 提供了更强大的类型安全性和作用域限定。以下是关于 enum class 的详细介绍和用法说明&#xff1a; 1. 基本语法 enum class EnumName {Enumerator1,Enumerator2,// ...…

知识笔记(六十五)———css+js实现鼠标移动边框高亮效果

前言&#xff1a;效果是鼠标移入空白区域&#xff0c;边框高亮的效果。效果是在douyin的渡一教育袁老师的课程学习到的&#xff0c;观看以后是一个实用的小特效。想看的可以平台查询&#xff0c;自己也学到了知识。 <!DOCTYPE html> <html lang"en"> &l…

初识javaWeb

一、JavaWeb是什么&#xff1f; 1、概念 javaWeb指的是使用java语言进行互联网领域项目开发的技术栈——进行web项目开发所需的技术的集合。 -Web前端——在浏览器中用户可以看到的网页 -Web后端——为前端提供数据的程序 2、Web项目 java语言是可以进行多种类型的项目开发&a…

网大为卸任腾讯CXO;Midjourney 1 月训练视频模型;2023年马斯克赚了7700亿

投融资 • 2023 年大型科技公司在生成式 AI 初创企业上的投资远超风险投资集团• 恒信东方与无锡政府合作成立布局 MR/XR 技术及 3D 数字资产 AIGC 产业投资基金• 新公司法完善注册资本认缴登记制度• 网大为卸任腾讯CXO&#xff0c;曾促成南非MIH的投资• 宁波蔚孚科技完成数…

【VS】NETSDK1045 当前 .NET SDK 不支持将 .NET 6.0 设置为目标。

问题描述 报错 NETSDK1045 严重性代码说明项目文件行禁止显示状态错误NETSDK1045当前 .NET SDK 不支持将 .NET 6.0 设置为目标。请将 .NET 5.0 或更低版本设置为目标&#xff0c;或使用支持 .NET 6.0 的 .NET SDK 版本。RCSoftDrawMicrosoft.NET.TargetFrameworkInference.ta…

悟的数组匹配

题目&#xff1a; 描述 牛牛刚学会数组不久&#xff0c;他拿到两个数组 a 和 b&#xff0c;询问 b 的哪一段连续子数组之和与数组 a 之和最接近。 如果有多个子数组之和同样接近&#xff0c;输出起始点最靠左的数组。 输入描述&#xff1a; 第一行输入两个正整数 n 和 m &…

年度总结|存储随笔2023年度最受欢迎文章榜单TOP15-part2

TOP11&#xff1a;PCIe在狂飙&#xff0c;SAS存储之路还有多远&#xff1f; 随着科技的飞速发展&#xff0c;固态硬盘&#xff08;SSD&#xff09;已经成为现代计算机系统中不可或缺的一部分。它以其出色的性能和可靠性&#xff0c;改变了我们对于存储设备的期待。当前业内SSD广…

Java(算术,自增自减,赋值,关系,逻辑,三元)运算符,运算符的优先级,隐式转换,强制转换,字符串的+。

文章目录 1.运算符和表达式运算符&#xff1a;表达式&#xff1a; 2.算术运算符练习&#xff1a;数值拆分 3.隐式转换概念&#xff1a;简单记忆&#xff1a;两种提升规则&#xff1a;取值范围从小到大的关系&#xff1a; 4.隐式转换的练习案例一&#xff1a;案例二&#xff1a;…