微服务 Spring Cloud 4,分布式系统如何进行数据分区(文末送书)

Mamba-ST实战:用状态空间模型实现艺术风格迁移的5个关键步骤 本文详细介绍了如何使用Mamba-ST状态空间模型实现高效的艺术风格迁移,涵盖环境配置、数据预处理、模型架构、训练策略和推理优化等5个关键步骤。Mamba-ST基于SSM(状态空间模型)构建,在保持生成质量的同时显著降低计算复杂度,为风格迁移领域提供了新的解决方案。 阅读详情

在这里插入图片描述

大家好,我是哪吒。

21世纪以来,大规模分布式系统、云计算和云原生飞速发展,在短短20年间就成为各大企业信息技术基础架构的核心基石。

文末送5本《深入理解分布式系统》

一、企业迈向分布式的根本原因包括

  • 移动互联网时代,各大企业每天都在和巨大的流量和爆炸性增长的数据打交道;
  • 摩尔定律的失效,使得提升单机性能会产生很高的成本,同时网络速度越来越快,意味着并行化程度只增不减;
  • 此外,许多应用都要求7×24小时可用,因停电或维护导致的服务不可用,变得越来越让人难以接受;
  • 最后,经济全球化也导致了企业必须构建分布在多台计算机甚至多个地理区域的系统。

相较于单体应用或单机系统,分布式应用或分布式系统具有高性能、高可用性、容错性和可扩展性等优点。可见,未来所有的基础架构都会是分布式的。

然而分布式系统是一个相当复杂的领域,需要处理各种各样的异常,这些异常不仅难以排查和诊断,而且难以复现,这不是增加测试或采用DevOps就能解决的,有些异常是不可避免的,需要在软件架构中做取舍。

因此,想要构建一个健壮的分布式系统,必须先学习相关的基础知识,消化大量信息。

尽管学习分布式系统最好的方式是阅读大量的经典论文,但大部分关于分布式系统的资料,要么艰深太晦涩,要么散落在不计其数的学术论文中,对于初学分布式系统的从业者来说,门槛太高,学习曲线太陡峭;再加上相关知识点比较零散、不成体系,让人觉得云山雾罩、望而却步。《深入理解分布式系统》一书便可以很好地解决该问题!

二、分区

分布式系统带来的主要好处之一是实现了可扩展性,使我们能够存储和处理比单台机器所能容纳的大得多的数据集。

实现可扩展性的主要方式之一是对数据进行分区(Partition)。

分区是指将一个数据集拆分为多个较小的数据集,同时将存储和处理这些较小数据集的责任分配给分布式系统中的不同节点。数据分区后,我们就可以通过向系统中增加更多节点来增加系统可以存储和处理的数据规模。分区增加了数据的可管理性、可用性和可扩展性。

分区分为垂直分区(Vertical Partitioning)和水平分区(Horizontal Partitioning),这两种分区方式普遍认为起源于关系型数据库,在设计数据库架构时十分常见。

图1展示了垂直分区和水平分区的区别。

在这里插入图片描述
垂直分区是对表的列进行拆分,将某些列的整列数据拆分到特定的分区,并放入不同的表中。垂直分区减小了表的宽度,每个分区都包含了其中的列对应的所有行。垂直分区也被称为“行拆分(Row Splitting)”,因为表的每一行都按照其列进行拆分。例如,可以将不经常使用的列或者一个包含了大text类型或BLOB类型的列垂直分区,确保数据完整性的同时提高了访问性能。值得一提的是,列式数据库可以看作已经垂直分区的数据库。

水平分区是对表的行进行拆分,将不同的行放入不同的表中,所有在表中定义的列在每个分区中都能找到,所以表的特性依然得以保留。举个简单的例子:一个包含十年订单记录的表可以水平拆分为十个不同的分区,每个分区包含其中一年的记录(具体的分区方法我们会在后面详细讨论)。

列式数据库(Column-Oriented DBMS或Columnar DBMS)也叫列存数据库,是指以列为单位进行数据存储架构的数据库,主要适用于批量数据处理和即时查询。与之相对应的是行式数据库。一般来说,行式数据库更适用于联机事务处理(OLTP)这类频繁处理事务的场景,列式数据库更适用于联机分析处理(OLAP)这类在海量数据中进行复杂查询的场景。

垂直分区和列相关,而一个表中的列是有限的,这就导致了垂直分区不能超过一定的限度,而水平分区则可以无限拆分。
另外,表中数据以行为单位不断增长,而列的变动很少,因此,水平分区更常见。

在分布式系统领域,水平分区常称为分片(Sharding)。

需要说明的是,很多图书和文章会纠结分片和分区的具体区别,一种观点认为,分片意味着数据分布在多个节点上,而分区只是将单个存储文件拆分成多个小的文件,并没有跨物理节点存储。由于本书重点讨论的是分布式系统,因此无论是分区还是分片,本书都认为其数据分布在不同物理机器上。

分片在不同系统中有着各种各样的称呼,MongoDB和Elasticsearch中称为shard,HBase中称为region,Bigtable中称为tablet,Cassandra和Riak中称为vnode。

三、水平分区

水平分区算法用来计算某个数据应该划分到哪个分区上,不同的分区算法有着不同的特性。本节我们将研究一些经典的分区算法,讨论每种算法的优缺点。

为了方便讨论,我们假设数据都是键值对(Key-Value)的组织形式,通常表示为<Key, Value>。键值对数据结构可以通过关键字(Key)快速找到值(Value),基本上所有编程语言都内置了基于内存的键值对结构,比如C++ STL中的map、Python的dict,以及Java的HashMap,等等。

1、范围分区

范围分区(Range Partitioning)是指根据指定的关键字将数据集拆分为若干连续的范围,每个范围存储到一个单独的节点上。用来分区的关键字也叫分区键。前面介绍的按年拆分表数据就是一个范围分区的例子,对于2011年到2020年这十年的订单记录,以年为范围,可以划分为10个分区,然后将2011年的订单记录存储到节点N1上,将2012年的订单记录存储到节点N2上,以此类推。

图A中的数据可以按年龄进行范围分区,将数据划分成如图2所示的分区。

在这里插入图片描述
如何划分范围可以由管理员设定,或者由存储系统自行划分。通常会选择额外的负载均衡节点或者系统中的一个节点来接收客户端请求,然后根据范围分区算法,确定请求应该重定向(路由)到哪个节点或哪几个节点。

(1)范围分区的主要优点有:

  • 实现起来相对简单。
  • 能够对用来进行范围分区的关键字执行范围查询。
  • 当使用分区键进行范围查询的范围较小且位于同一个节点时,性能良好。
  • 很容易通过修改范围边界增加或减少范围数据,能够简单有效地调整范围(重新分区),以平衡负载。

(2)范围分区的主要缺点有:

  • 无法使用分区键之外的其他关键字进行范围查询。
  • 当查询的范围较大且位于多个节点时,性能较差。
  • 可能产生数据分布不均或请求流量不均的问题,导致某些数据的热点现象,从而某些节点的负载会很高。例如,当我们将姓氏作为分区键时,某些姓氏的人非常多(比如姓李或者姓王),这会造成数据分布不均。又例如前面的按年拆分订单的例子,虽然数据分布较为均衡,但根据日常生活习惯,最近一年的订单查询流量可能比前几年的查询流量加起来还要多,这就会造成请求流量不均。总的来说,一些节点可能需要存储和处理更多的数据和请求,一般通过继续拆分范围分区来避免热点问题。

使用范围分区的分布式存储系统有Google Bigtable、Apache HBase和PingCAP TiKV。范围分区适合那些需要实现范围查询的系统。

2、哈希分区

哈希分区(Hash Partitioning)的策略是将指定的关键字经过一个哈希函数的计算,根据计算得到的值来决定该数据集的分区,如图3所示。

在这里插入图片描述
哈希分区的优点是,数据的分布几乎是随机的,所以分布相对均匀,能够在一定程度上避免热点问题。

哈希分区的缺点是:

  • 在不额外存储数据的情况下,无法执行范围查询。
  • 在添加或删除节点时,由于每个节点都需要一个相应的哈希值,所以增加节点需要修改哈希函数,这会导致许多现有的数据都要重新映射,引起数据大规模移动。并且在此期间,系统可能无法继续工作。

3、一致性哈希

一致性哈希(Consistent Hashing)是一种特殊的哈希分区算法,在分布式存储系统中用来缓解哈希分区增加或删除节点时引起的大规模数据移动问题。

一致性哈希算法将整个哈希值组织成一个抽象的圆环,称为哈希环(Hashing Ring)。哈希函数的输出值一般在0到INT_MAX(通常为232-1)之间,这些输出值可以均匀地映射到哈希环边上。举个例子,假设哈希函数hash()的输出值大于/等于0小于/等于11,那么整个哈希环看起来如图4所示。

在这里插入图片描述
接下来将分布式系统的节点映射到圆环上。假设系统中有三个节点N1、N2和N3,系统管理员可以通过机器名称或IP地址将节点映射到环上,假设节点分布到哈希环上,如图5所示。

在这里插入图片描述
接着,将需要存储的数据的关键字输入哈希函数,计算出哈希值,根据哈希值将数据映射到哈希环上。假设此时要存储三个键值对数据,它们的关键字分别为a、b和c,假设经过哈希函数计算后的哈希值分别为1、5和9,则数据映射到环上后如图6所示。

在这里插入图片描述
那么数据具体分区到哪个节点上呢?

在一致性哈希算法中,数据存储在按照顺时针方向遇到的第一个节点上。例如图6中,关键字a顺时针方向遇到的第一个节点是N2,所以a存储在节点N2上;同理,关键字b存储在节点N3上,关键字c存储在节点N1上。数据分布方法如图7所示。

在这里插入图片描述
接下来我们继续看一下,向集群中添加一个节点会发生什么。假设集群此时要添加一个节点N4,并添加到如图8所示的哈希环位置。那么,按照顺时针计算的方法,原本存储到节点N2上的关键字a将转移到N4上,其他数据保持不动。

在这里插入图片描述
可见,相比于普通的哈希分区添加或删除节点时会导致大量映射失效,一致性哈希很好地处理了这种情况。

对于添加一台服务器这种情况,受影响的仅仅是新节点在哈希环上与相邻的另一个节点之间的数据,其他数据并不会受到影响。例如图8中,只有节点N2上的一部分数据会迁移到节点N4,而节点N1和N3上的数据不需要进行迁移。

一致性哈希对于节点的增减只需要重新分配哈希环上的一部分数据,改善了哈希分区大规模迁移的缺点。此外,一致性哈希也不需要修改哈希函数,直接将新节点指定到哈希环上的某个位置即可。相比简单的哈希分区,一致性哈希有着更好的可扩展性和可管理性。

但是,一致性哈希仍然有明显的缺点,当系统节点太少时,还是容易产生数据分布不均的问题。另外,一个较为严重的缺点是,当一个节点发生异常需要下线时,该节点的数据全部转移到顺时针方向的节点上,从而导致顺时针方向节点存储大量数据,大量负载会倾斜到该节点。

解决这个问题的方法是引入虚拟节点(Virtual Node),虚拟节点并不是真实的物理服务器,虚拟节点是实际节点在哈希环中的副本,一个物理节点不再只对应哈希环上一个点,而是对应多个节点。我们假设一个物理节点要映射到哈希环中的三个点,引入虚拟节点后的哈希环如图9所示。

在这里插入图片描述
可以很直观地发现,虚拟节点越多,数据分布就越均匀。当节点发生异常被迫下线时,数据会分摊给其余的节点,避免某个节点独自承担存储和处理数据的压力。

如果系统中有不同配置、不同性能的机器,那么虚拟节点也很有用。例如,系统中有一台机器的性能是其他机器的两倍,那么我们可以让这台机器映射出两倍于其他机器的节点数,让它来承担更多的负载。

不过,在不额外存储数据的情况下,一致性哈希依然无法高效地进行范围查询。任何范围查询都会发送到多个节点上。

以上内容来源于《深入理解分布式系统》一书,作者唐伟志曾工作于腾讯微信事业部,在分布式系统方面有着深入的研究。

四、《深入理解分布式系统》

本书主要讲解分布式系统常用的基础知识、算法和案例,经笔者对文献海洋中晦涩艰深的原理和算法进行提炼,辅以图示和代码,并结合实际经验进行分析总结而成。通过阅读本书,读者可以快速、轻松地掌握分布式系统的基本原理,以及Paxos或Raft共识算法,并通过典型的案例学习如何设计大型分布式系统。

本书首先介绍什么是分布式系统、分布式系统带来的挑战,以及如何对分布式系统进行建模,这部分内容偏向概念性介绍。接着介绍了分布式数据的基础知识,包括数据分区技术、数据复制技术、CAP定理、一致性模型和隔离级别,尝试厘清一些十分容易混淆的术语,比如一致性、线性一致性、最终一致性和一致性算法等。本书还介绍了分布式系统的核心算法——Paxos和Raft算法,不仅补充了大量图示进行讲解,还从零实现了一个Paxos算法。此外,本书分析了常见的分布式事务,并讨论了分布式系统中的时间问题,整理了一些实际发生的编程陷阱。最后结合一些对工业界产生重大影响的论文或开源系统,学习前人在设计大型分布式系统时的思路、取舍和创新。

在这里插入图片描述

参与方式

图书数量:本次送出 5 本《深入理解分布式系统》 !!!

活动时间:截止到 2023-11-06 21:00:00

🏆抽奖方式:

⭐️⭐️点击下方名片,回复1106,即可参与⭐️⭐️

🏆哪吒会在朋友圈公布中奖名单。

名单公布时间:2023-11-06 21:10:00

京东购买链接:深入理解分布式系统(博文视点出品)

手把手教你用示波器抓取MIPI D-PHY波形:从LP11到HS Burst的完整信号解析 本文详细介绍了使用示波器精准捕获MIPI D-PHY信号的关键技巧,包括探头选择、示波器参数设置、信号状态解析及高级触发配置。通过实战案例和波形分析,帮助工程师快速识别从LP11到HS Burst的各种信号状态,解决常见的信号完整性问题,提升调试效率。 阅读详情

相关推荐

博途 V15.1安装步骤

温馨提醒:安装此软件电脑配置至少应满足以下要求 处理器 CoreTM i5-3320M 3.3 GHz 或相当 内存 至少8G 硬盘 300 GB SSD 显示器 15.6' 宽屏显示 (1920 x 1080) 1.双击打开【Siemens v15.1】文件夹。 2.鼠标右击【STEP 7 BasicProfess...

谢谢关注“小鱼教你模数电”,各平台同号 9万+

带着问题学习分布式系统之数据分片

  在前文中,提出了分布式系统(尤其是分布式存储系统)需要解决的两个最主要的问题,即数据分片和数据冗余,下面这个图片(来源)形象生动的解释了其概念和区别:      其中数据即A、B属于数据分片,原始数据被拆分成两个正交子集分布在两个节点上。而数据集C属于数据冗余,同一份完整的数据在两个节点都有存储。当然,在实际的分布式系统中,数据分片和数据冗余一般都是共存的。   本文主要讨论数据分片的三...

weixin_34023982的博客 758

RT-Thread Studio与CubeMX联合编程(超级详细)

RT-Thread Studio与CubeMX联合编程 本文章参考以下文章: https://blog.youkuaiyun.com/qq_40824852/article/details/122596043 https://zhuanlan.zhihu.com/p/395106066 https://blog.youkuaiyun.com/m0_37697335/article/details/108890584 一、简介 经过上次对RT-Thread Studio的初步尝试,发现RT-Thread Studio中存在官方支

zhuzhu的博客 3万+

Redis集群之数据分布

加减节点会造成哈希环中部分数据无法命中,如之前n1-n2之间的4个数据,由于n5节点的加入,当应用读取n5-n2之间的数据时,Redis会先去n5获取,获取不到就只能去存储层去获取,然后回写到n2节点。节点取余分区使用hash(key)%nodes(使用特定的数据,如Redis的键作为key和节点数量nodes)来计算哈希值,以决定数据映射到哪一个节点上。当节点数量变化时,如扩容或收缩节点,数据节点映射关系需要重新计算,会导致数据的重新迁移,其示意图如下所示。节点伸缩:数据节点关系变化,导致数据迁移。

zzy7075的专栏 626

AutoSAR EcuM系列01- EcuM模块的功能概述和变体类型

在【ECU的软硬件架构】文章中我们了解ECU的功能和组成,那么ECU具体是怎么启动的呢?我们知道,AutoSAR标准架构有三层,即APPL应用层、RTE层和BSW层。而这些层又被进一步划分为更多单独的组件,如BSW层可能有80多个组件。在ECU启动时,这些组件必须相互交互,有时也必须以某种顺序交互。这些组件的启动顺序由ECU管理器模块或EcuM处理。EcuM负责整个ECU的初始化和去初始化,包括对一些系统模块如。......

1766

零基础入门simulink仿真--通信领域的调制解调技术:基于Simulink的PM信号调制与解调仿真建模示例

PM的基本原理是将基带信号(如语音或音乐信号)加载到高频载波信号的相位上。通过改变载波的瞬时相位,可以实现信息的传输。PM的优点包括抗噪声能力强、频谱利用率较高等,但其解调过程相对复杂。通过Simulink,我们可以通过模块化的建模方式实现PM信号的调制和解调过程,并观察信号在信道中的传输效果。通过本指南,我们介绍了如何基于Simulink搭建一个完整的PM信号调制与解调仿真模型,并进行仿真和性能评估。背景介绍:理解PM信号调制与解调的基本原理及其应用。所需工具和环境:列出进行PM仿真所需的工具和环境。

amy_mhd的博客 604

你真的理解分布式数据的分区吗?

分布式数据存储是指将数据分散存储在多个节点或服务器上的技术。而分区是将数据划分为逻辑上的片段或部分,每个分区可以在分布式系统中的不同节点上存储。分区主要是为了可扩展性。不同的分区可以放在不共享集群中的不同节点上,可以帮助实现负载均衡、高可用性、并行处理、数据本地性优化以及系统的扩展性和灵活性。通过合理的分区策略,可以充分发挥分布式存储系统的优势,提供高效、可靠的数据存储和处理能力。分区通常与复制结合使用,使得每个分区的副本存储在多个节点上。

sky_format的博客 891

PyTorch深度学习实战(41)——循环神经网络与长短期记忆网络

循环神经网络 (Recurrent Neural Network, RNN) 通过将前一个时间步的隐藏状态作为当前时间步的输入,实现对序列数据的建模,由于循环连接的存在,RNN 能够捕获时间依赖关系,然而,RNN 在处理长期依赖性问题时会遇到困难。为了解决这个问题,提出了 LSTM,通过引入门控机制改进 RNN 来有效地处理长期依赖关系。在本节中,了解了 LSTM 和 RNN 的基本原理,并介绍了如何在 PyTorch 中实现 LSTM。

盼小辉丶的博客 1万+

了解mysql分库分表

mysql分库分表(理论) 1. mysql分区 1.1 什么是分区 mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可以通过my.cnf中的 datadir来查看),一张表主要对应着三个文件(8.0对应两个,往期版本三个)一个是frm存放表结构的,一 个是myd存放表数据的,一个是myi存表索引的(innodb同理)。 如果一张表的数据量太大的话,那么myd,myi就会变的很大,查找数据就会变的很慢,这个时候我们可以利 用mysql的分区功能,在物理上将这一张表对应

wjy的博客 338

【推荐100个unity插件】动画重定向,快速在不同角色间共享动画,共用非人形Humanoid(泛型generic)动画——Retarget Pro

Retarget Pro是一款高效的Unity动画重定向工具,可快速在不同角色间共享动画。主要特点包括:1分钟快速设置,支持编辑器和运行时重定向;适用于人形、动物、武器等各类角色;提供基础重定向、IK重定向和FPS专用重定向三种功能模块;通过Rig组件和骨架资产实现骨骼链匹配,支持批量处理。插件包含示例项目和预设资源,操作简便且效果优于Unity原生Humanoid系统,特别适合处理手指等精细动画。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 547

【Android调试】高通adb识别不到设备的完整排查指南:从驱动到端口一步到位

本文系统梳理高通(Qualcomm)平台Android设备adb无法识别的完整排查流程。从最基础的USB连接检查开始,到Windows设备管理器中驱动状态的判断、高通USB驱动的正确安装与更新方法,再到adb端口被占用、USB调试未开启、驱动签名校验失败等高频场景的解决方案。每一步均配截图和操作命令,文末附常见报错速查表,适合做系统开发、刷机调试或者Android Framework bringup时遇到adb不通的工程师快速定位。

weixin_44081096的博客 281

分布式数据库难题(一):数据分区

面对海量数据或者非常高的查询压力,我们需要将数据拆分成分区,采用分区的目的主要是提高可扩展性,将数据和查询负载均匀分布在所有节点上。如果节点平均分担负载,那么理论上10个节点应该能够处理10倍的数据量和10倍于单个节点的读写吞吐量。而如果分布不均匀,则会出现某些分区节点比其它分区承担更多的数据量或查询负载,称之为写倾斜。......

蓬莱道人的博客 1031

【ARM Trace32(劳特巴赫) 使用介绍 13 -- Trace32 Var 变量篇】

例如我们已经知道一个符号(可能是变量或者函数)的地址,怎么确定这个地址是一个变量还是一个函数呢?如果是变量的话,变量名是啥?变量定义的位置在哪?如果是函数,函数名是啥?函数定义的位置又在哪呢?查看结构体变量 str_t32 的值。例如我们已经知道了一个符号的地址为。在map文件中的地址为。

CodingCos的博客 2349

什么是 Spring Cloud?| 文末赠书

Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的开发便利性,巧妙地简化了分布式系统基础设施的开发,如服务注册、服务发现、配置中心、消息总线、负载均衡、...

武培轩 569

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

浅谈什么是 Spring Cloud,快速学习与使用案例

Spring Cloud 是一个用于构建分布式系统的开发工具包,它基于 Spring Framework 提供了一系列的解决方案和工具,用于帮助开发者快速构建和部署云原生应用。Spring Cloud 主要关注的是分布式系统中常见的配置管理、服务注册与发现、熔断器、负载均衡、路由、微服务追踪等问题,提供了一套简单而强大的解决方案。

黛琳ghz的博客,期待你的关注。 2066

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

19 张图解说 Spring Cloud

大家好,我是老田,今天我给大家分享:Spring Cloud 整体预览另外,文末有周六奖,送书活动,没参加的速度参加。进入下面公众号,回复“高考”即可参与:原文:http://q7ipd....

田维常 963

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

服务化、微服务及Spring Cloud

作为职场老手的你,也许对服务化(SOA)并不陌生。当今 Web 2.0 架构如火如荼,越来越多的企业正在进行着服务化的改造,最为著名莫过于 Amazon 。 服务化 早在2002年,Amazon 就已经开始进行服务化的改造了。Amazon 的 CEO杰夫·贝索斯对市场有着超乎常人的理解和预见: 从今天起,所有的团队都要以服务接口的方式,提供数据和各种功能。 团队之间必须通过接口来通信。...

老卫的技术站 2295

USB2.0移动硬盘掉盘真相:不是硬盘坏,是供电在说谎

USB接口供电能力是影响外置存储设备稳定性的底层基础技术要素。USB2.0协议虽标称5V/500mA(2.5W),但受线材压降、接口接触电阻、主机控制器限流及LDO稳压效率等多重物理限制,实际抵达硬盘的电压常低于4.7V、电流不足420mA——这已逼近机械硬盘主控芯片的欠压锁定阈值(UVLO)。当遭遇启动浪涌电流(800–1200mA)或温漂导致功耗微升时,极易触发USB协议层复位机制,表现为‘device descriptor read error -71’等典型掉盘现象。该问题广泛存在于笔记本直连、Y型

weixin_33843409的博客 358

福利继续:赠书《Spring Cloud微服务-全栈技术与案例解析》

《Spring Cloud微服务-全栈技术与案例解析》在互联网时代,互联网产品的最大特点就是需要快速发布新功能,支持高并发和大数据。传统的架构已经慢慢不能支撑互联网业务的...

程序猿DD 1514

【架构设计】SpringCloud和Dubbo的区别?

先说说Spring Cloud,Spring Cloud是一种基于Spring Boot的微服务框架,它提供了一系列工具和技术来支持微服务架构,包括服务发现、断路器、负载均衡和配置管理。Feign是SpringCloud中一种远程调用方式,采用成熟的Http协议作为基础,接口规范统一,实现微服务的语言或技术可随意选择。然而,由于http协议本身的特点,请求和响应格式较为臃肿,通信效率相对较低。而Dubbo是一个高性能、轻量级的服务框架,提供了服务治理、负载均衡、服务注册、服务消费者等功能。

分享Java硬核干货 1万+

SpringCloud配置sharding-jdbc 千万级别的数据进行数据拆分

原理不多说 ,直接上代码吧。 1: 执行方法 一次只查1000条数据,当总数达到一万的时候 进行线程执行。 //获取原有数据 进行数据拆分 @TrackingTime //自己实现的接口实现时间记录 public Integer getAllVisit(){ String id="0"; List<UserVisitorEntity> tem...

weixin_35282902的博客 984

【SpringCloudAlibaba专题】Springcloud gateway之分流、限流、熔断、动态路由(G版本)

Springcloud Gateway Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。 Spring Cloud Gateway 作为 Spring Cloud 生态系统...

batman 1680

分布式数据库分区概念(Redis Cluster分区概念)

bulingma的博客 592

分布式数据库之数据分区

分布式数据库之数据分区 顺序分布 比如:1-100个数字,要保存到3个节点上,每个节点平均存储,1-33存储在第1个节点,34-66存储到2节点,剩余存储到3节点。 顺序存储常用在关系型存储上 hash分布 节点取余分区 比如100个数据,对每个数据进行hash运算之后,再于节点数进行取余运算,根据余数保存在不同节点上。 缺点:当节点扩容或缩容时需要迁移的数据量较大 一致性hash分区 将所有0-2的32次方的所有数据进行hash运算,结果组成一个hash环,对数据进行hash找到在环上的位置,顺时针方

weixin_44052482的博客 646

分布式数据库中间件对比总结 数据库(分库分表)中间件对比

分布式数据库中间件对比总结2016年08月28日 11:19:22阅读数:11082摘要:目前数据库中间件有很多,基本这些中间件在下都有了解和使用,各种中间件优缺点及使用场景也都有些心的。所以总结一个关于中间件比较的系列,希望可以对大家有帮助。 分布式数据库中间件对比总结(1)目前数据库中间件有很多,基本这些中间件在下都有了解和使用,各种中间件优缺点及使用场景也都有些心的。所以总结一个关于中间件比...

许恒的博客 1万+

AI分布式Token中转站网关底层实现-东方仙盟

在终端优先同步架构下,所有终端智能体请求不再直连上游 MaaS 平台(千帆、百炼、DeepSeek 等),全部经由分布式 Token 中转站网关统一中继。网关承担虚拟客户密钥签发、上游子账号路由、前置内容安全审计、事务路由调度、可控网络震荡多上游链路容灾、SSE 流式透传、用量记账、封禁熔断、原始 IP 封包签名溯源等核心职责。本文基于 Go 实现分布式网关核心底座,复用架构原有无状态 Token 穿透、事务 ID 幂等、链路探活、多节点中继能力;区分两层密钥体系:面向终端客户的虚拟 Key。

cybersnow精通 28 门计算机语言,凭借其超凡的技术能力,成功开发过上万个应用,广泛涉及政府、商业、个人等众多领域,甚至在检察院、环保局、公安局等专业场景中也大放异彩。不仅熟练掌握单片机和物联网开发,在软件架构设计方面更是独树一帜,自创了跨平台软件 242
上一篇: 微服务 Spring Cloud 1,服务如何拆分?使用微服务的注意事项?
下一篇: 华为OD机试 - 寻找身高相近的小朋友 - 双指针(Java 2025 A卷 100分)
哪 吒
哪 吒 2022年度博客之星TOP 1 2022年度博客之星TOP 1 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 59万+粉丝 2953原创
评论 19
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哪 吒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值