分布式集群架构场景化解决⽅案

CDN:Hexo-LiveForCode主题静态资​​源 jsDelivr CDN Hexo-LiveForCode静态资源CDN加速 立即下载

一致性 Hash 算法

  1. 直接寻址法

    优点:效率肯定是最高的

    缺点:浪费空间,没办法处理重复数据

  2. 除留余数法

    使用取模的方法,以一定的效率从而达到减少空间使用的目的

  3. 开放寻址法

  4. 拉链法

    在 Java 当中最经典的实现就是 HashMap

Hash 算法应用场景

  1. 请求的负载均衡

    Nginx 的 ip_hash 策略

  2. 分布式存储

    分库分表,集群中的数据 ID

普通 Hash 算法存在的问题

在空间发生变化的时候,会导致大部分的 Hash 值重新计算。

一致性 Hash 算法

一致性 Hash 算法的范围是 0 - 2 ^ 32 -1 的圆。计算每个请求 Hash 值顺时针方向最近的服务器,需要注意转一圈的情况。

存在的问题:数据(请求倾斜问题)

解决方案:虚拟节点。添加一些虚拟节点,每个虚拟节点映射一个真实节点,相当于一层路由。

Nginx 配置一致性 Hash 负载均衡策略

upstream login {
	consistent_hash $request_uri;
}

集群时钟同步问题

不同的场景使用不同的方案。

  1. 服务器全都可以连接互联网
  2. 部分服务器可以连接互联网或都不可以连接互联网

第一种情况,如果都可以连接互联网,那么所有的服务器都与同一个时间服务器同步即可。

# 使用 ntpdate 网络时间同步命令
ntpdate -u ntp.api.bz # 从一个时间服务器同步时间

可以使用定时任务,间隔一定时间,同步一次服务器时间。

第二种情况,如果部分服务器可以连接互联网,或者是全部都不能够连接互联网,那么,只需要选择一台服务器当作时间服务器即可,其他的服务器都与这台服务器进行时间同步。

配置为时间服务器(修改 /etc/ntp.conf ⽂件)

1、如果有 restrict default ignore,注释掉它
2、添加如下⼏⾏内容
restrict 172.17.0.0 mask 255.255.255.0 nomodify notrap # 放开局
域⽹同步功能,172.17.0.0是你的局域⽹⽹段
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
3、重启⽣效并配置ntpd服务开机⾃启动
service ntpd restart
chkconfig ntpd on

分布式 ID 解决方案

  1. UUID

    UUID 是指 Universally Unique Identifier,翻译为中⽂是通⽤唯⼀识别码 产⽣重复 UUID 并造成错误的情况⾮常低,是故⼤可不必考虑此问题。

  2. 独⽴数据库的⾃增 ID

    使用一张表记录 ID,每一次先像表中添加一条记录,然后通过数据库 LAST_INSERT_ID() 方法获取添加记录的 ID

  3. 雪花 ID

    通过 SnowFlake 雪花算法生成 ID。

    雪花算法是 Twitter 推出的⼀个⽤于⽣成分布式 ID 的策略。 雪花算法是⼀个算法,基于这个算法可以⽣成 ID,⽣成的 ID 是⼀个 long 型,那么在 Java 中⼀个 long 型是8个字节,算下来是 64bit,如下是使⽤雪花算法⽣成的⼀个 ID 的⼆进制形式示意:

在这里插入图片描述

另外,⼀切互联⽹公司也基于上述的⽅案封装了⼀些分布式ID⽣成器,⽐如滴滴的 tinyid(基于数 据库实现)、百度的 uidgenerator(基于 SnowFlake)和美团的 leaf(基于数据库和 SnowFlake) 等

  1. 借助 Redis 的 Incr 命令获取全局唯⼀ ID

分布式调度

在分布式环境下的定时任务调度。

Elastic-job 当当网开源的分布式调度框架。

Session 共享问题

因为在集群环境下,有可能存在同一个 Session(用户) 每一次请求访问不同的服务器,但是有些信息,又不希望反复操作。

  1. 通过相同 IP 每次访问相同服务器的方案(Nginx 的 IP_Hash 策略)
    优点:配置简单,不入侵应用(不需要额外修改代码)
    缺点:服务器重启 Session 丢失,存在单点负载高的风险,单点故障问题。
  2. 多服务器间进行 Session 同步
    Tomcat 可以通过组播机制实现 Session 同步
    优点:不入侵应用,便于服务器水平扩展,使用各种负载均衡策略,服务器重启或者宕机不会造成 Session 丢失。
    缺点:性能低,内存消耗打,有延迟。
  3. Session 集中存储
    使用缓存中间件对 Session 数据进行缓存。
    优点:适应各种负载均衡策略,服务器重启或宕机不会造成Session 丢失,扩展能力强,适合大集群数量使用。
    缺点:对应用又入侵,需要引入相关代码。
告别卡顿!用U盘给你的MacBook Pro 2015+来一次macOS Monterey的‘大扫除’式安装 每次系统升级后,老款MacBook Pro用户最常抱怨的就是"怎么比之前更卡了?"——这不是错觉。系统迭代过程中积累的缓存文件、残留配置和隐形服务,就像房间角落堆积的灰尘,拖慢了整台机器的响应速度。而通过U盘进行的macOS Monterey全新安装,本质上是一次彻底的"数字大扫除":它不仅替换系统文件,还会重建所有索引、清理磁盘碎片,甚至能解决某些玄学般的卡顿问题。对于2015款及之后的MacBook Pro用户,这种安装方式能让老设备重获新生。 阅读详情

相关推荐

土地利用数据从1972到2023:如何利用Landsat和Sentinel数据构建长期变化监测模型

本文详细解析了如何利用1972至2023年的Landsat和Sentinel遥感数据构建土地利用长期变化监测模型。通过多源数据融合策略、时间序列预处理流程和深度学习算法,实现高精度的土地利用分类与变化检测,为生态评估和城市规划提供科学依据。文章还探讨了验证方法和实际应用案例,展示了长期遥感数据在环境建模中的独特价值。

weixin_28720573的博客 446

Cannot read property ‘LongCang’ of undefined

原因:路径不对 解决:把liveforcode里的liveforcode文件夹移到themes文件夹下 Hexo主题LiveForCode介绍/#常见问题

君王羔羊 205

如何实现SOLIDWORKS阵列的“智能变更”?

有时,我们在设计一个零件时,零件上有一排阵列孔,同时零件有不同的长度,我们又希望可以做到零件长度改变时,这排孔可以按长度等距增减孔阵列的个数;或是零件长度加长或缩短时,这排孔保持个数不变,按零件长度增减孔距。 那具体要怎么做呢?接下来,我们一起来看看怎么用SOLIDWORKS中简单的操作来实现这两种智能的变更: 零件长度加长或缩短时,这排孔要按长度等距增减孔阵列的个数。 零件长度加长或缩短时,这排孔保持个数不变,按零件长度增减孔距。 那接下来,我们一起来看看怎么用简单的操作来实现这两种智能的

SOLIDWORKS艾金米 2080

【亲测免费】 Hexo-LiveForCode: 实时预览的Hexo博客搭建利器

Hexo-LiveForCode: 实时预览的Hexo博客搭建利器 是一个专为Hexo框架设计的强大插件,它实现了在编写Markdown时的实时预览功能,极大地提升了博客创作者的工作效率和创作体验。 项目简介 Hexo是一个快速、简洁且高效的静态站点生成器,广泛用于个人博客或者文档站点的构建。而Hexo-LiveForCode则是Hexo生态中的一个创新性工具,它的主要目标是提供一个无缝的写作环境...

gitblog_00031的博客 686

论文阅读《Eigen-GNN: A Graph Structure Preserving Plug-in for GNNs》

好久没看论文了,感觉好生疏 关于这篇文章的大致脉络,这篇文章已经介绍过了。

且视他人之疑目如盏盏鬼火,大胆地去走你的夜路 462

23.501中英对照(46):5QI到Qos特征的映射

注4:对于UPF终止N6与5G-AN之间的延迟,CN PDB的静态值为1毫秒,应从给定的PDB中减去该值以得出适用于无线接口的分组延迟预算。注5:对于UPF终止N6与5G-AN之间的延迟,CN PDB的静态值为2毫秒,应从给定的PDB中减去该值以得出适用于无线接口的分组延迟预算。注6:对于UPF终止N6与5G-AN之间的延迟,CN PDB的静态值为5毫秒,应从给定的PDB中减去该值以得出适用于无线接口的分组延迟预算。注:建议为任何新的非GBR资源类型的标准化5QI分配小于64的值。

51学通信的博客 1299

分布式集群架构场景化解决⽅案课程笔记

一、⼀致性Hash算法 Hash算法应⽤场景 Hash算法在很多分布式集群产品中都有应⽤,⽐如分布式集群架构Redis、Hadoop、ElasticSearch,Mysql分库分表,Nginx负载均衡等 主要的应⽤场景归纳起来两个 ① 请求的负载均衡(⽐如nginx的ip_hash策略) Nginx的...

weixin_44615693的博客 211

ESP32水墨屏日历实战:低功耗自动更新与HTTPS数据解析

本文详细介绍了ESP32水墨屏日历项目的开发实践,重点讲解了低功耗自动更新与HTTPS数据解析的实现方法。通过ESP32的自动休眠功能和水墨屏的零功耗特性,结合HTTPS请求安全获取网络数据,实现了高效节能的桌面日历应用。项目代码开源,适合物联网开发者参考。

xx56789的博客 778

分布式集群架构场景化解决⽅案(三)分布式ID解决⽅案

目录 一. UUID(可以⽤) ​ 二. 独⽴数据库的⾃增ID(不推荐) 三. SnowFlake 雪花算法(可以⽤,推荐) 四. 借助Redis的Incr命令获取全局唯⼀ID(首选) (一)Redis安装: (二)Java代码中使⽤Jedis客户端调⽤Reids的incr命令获得⼀个全局的id 1. 引⼊jedis客户端jar 2. Java代码(此处我们就是连接单节点,也不使⽤连接池) 为什么需要分布式ID(分布式集群环境下的全局唯⼀ID) 一. UUID(可以...

舞鹤白沙编码日志 530

用VASP计算GW+BSE

VASP在5.3以后的版本都能用解BSE方程的方法,在计算光吸收的过程中考虑激子效应。 下面就来写一个用BSE计算bulkSi的例子 首先,介电函数的计算是在GW计算的基础之上的。这里首先介绍G0W0的计算(我们这里直接在PBE的波函数基础上进行G0W0计算)。 1.PBE自恰计算,写WAVECAR System= Silicon groundstate occupied

ultra1989的专栏 2万+

Vofa+使用笔记(1):用Vofa+通过串口连接显示波形

1. 介绍 Vofa+有三种协议设置 rawdata:你发什么就显示什么,跟普通的串口助手一样 firewater:最简单在VOFA+里绘制波形的协议,建议仅在通道数量不多、发送频率不高的时候使用。 justfloat:有一定的数据格式,此协议非常适合用在通道数量多、发送频率高的时候。 2. 使用步骤 设置号下面三个地方,使用的协议以及传输的方式 拉出控件 (最开始上位机没有识别到你的数据的时候,右边是没有数据显示的,如果你想要y轴显示什么数据,右边设置显示也可以,右键波形图然后Y轴设置也行) 把进

苏释州的博客 5万+

分布式集群架构场景化解决⽅案(集群时钟同步)

什么是分布式和集群以及实现 二、集群时钟同步问题 1、时钟不同步导致的问题 时钟此处指服务器时间,如果集群中各个服务器时钟不⼀致势必导致⼀系列问题,试想 “集群是各个服务器⼀起团队化作战,⼤家⼯作都不在⼀个点上,岂不乱了套!” 举⼀个例⼦,电商⽹站业务中,新增⼀条订单,那么势必会在订单表中增加了⼀条记录,该条记录中应该会有“下单时间”这样的字段,往往我们会在程序中获取当前系统时间插⼊到数据库或者直接从数据库服务器获取时间。那我们的订单⼦系统是集群化部署,或者我们的数据库也是分库分表的集群化部署,然⽽他们的系

weixin_43118617的博客 308

基于STM32设计的ECG+PPG人体参数测量系统(华为云IOT)(217)

该系统的核心是基于STM32F103RCT6微控制器,这是一种高性能、低功耗的嵌入式处理器,适用于各种复杂的控制和数据处理任务。系统利用先进的传感器技术,如光电传感器PulseSensor模块来准确测量人体脉搏血氧饱和度及心率(PPG),同时采用AD8232生物电信号采集模块捕捉并处理人体的心电图信号(ECG),从而全面反映用户的心脏活动状态。

1万+

分布式集群架构场景化解决⽅案(⼀致性Hash算法)

一、什么是分布式和集群 分布式和集群是不⼀样的,分布式⼀定是集群,但是集群不⼀定是分布式(因为集群就是多个实例⼀起 ⼯作,分布式将⼀个系统拆分之后那就是多个实例;集群并不⼀定是分布式,因为复制型的集群不是拆 分⽽是复制) 二、⼀致性Hash算法 Hash算法,⽐如说在安全加密领域MD5、SHA等加密算法,在数据存储和查找⽅⾯有Hash表等, 以上都应⽤到了Hash算法。 为什么需要使⽤Hash? Hash算法较多的应⽤在数据存储和查找领域,最经典的就是Hash表,它的查询效率⾮常之⾼,其中的哈希算法如果设

weixin_43118617的博客 230

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

分布式集群架构场景化解决⽅案(四)分布式调度问题

调度—>定时任务,分布式调度—>在分布式集群环境下定时任务这件事 Elastic-job(当当⽹开源的分布式调度框架) 一. 定时任务的场景 定时任务形式:每隔⼀定时间/特定某⼀时刻执⾏ 例如: 订单审核、出库 订单超时⾃动取消、⽀付退款 礼券同步、⽣成、发放作业 物流信息推送、抓取作业、退换货处理作业 数据积压监控、⽇志监控、服务可⽤性探测作业 定时备份数据 ⾦融系统每天的定时结算 数据归档、清理作业 报表、离线数据分析作业 二. 什么是分

舞鹤白沙编码日志 362

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

分布式集群架构场景化解决⽅案(五)Session共享问题

Session共享及Session保持或者叫做Session⼀致性 一. Session问题原因分析 出现这个问题的原因,从根本上来说是因为Http协议是⽆状态的协议。客户端和服务端在某次会话中产⽣的数据不会被保留下来,所以第⼆次请求服务端⽆法认识到你曾经来过, Http为什么要设计为⽆状态 协议?早期都是静态⻚⾯⽆所谓有⽆状态,后来有动态的内容更丰富,就需要有状态,出现了两种⽤于 保持Http状态的技术,那就是Cookie和Session。⽽出现上述不停让登录的问题,分析如下图: 场景:.

舞鹤白沙编码日志 188

分布式集群架构场景化解决⽅案(一)集群时钟同步配置

一.集群时钟同步思路 (一)分布式集群中各个服务器节点都可以连接互联⽹ 1. 思路: 2. 操作方式 #使⽤ ntpdate ⽹络时间同步命令 ntpdate -u ntp.api.bz #从⼀个时间服务器同步时间 windows有计划任务 Linux也有定时任务,crond,可以使⽤linux的定时任务,每隔10分钟执⾏⼀次ntpdate命令 (二)分布式集群中某⼀个服务器节点可以访问互联⽹或者所有节点都不能够访问互联⽹ 1. 思路: 2. 操作方式 : .

舞鹤白沙编码日志 174

分布式集群架构场景化解决⽅案(一)一致性Hash问题及解决方案

目录 一. 分布式与集群概念回顾 二. Hash算法介绍 三. Hash算法应⽤场景 (一)请求的负载均衡(⽐如nginx的ip_hash策略) (二)分布式存储 三. 普通Hash算法存在的问题 四. ⼀致性Hash算法 五. 手写实现一致性Hash算法 (一)普通Hash算法实现 (二)⼀致性Hash算法实现(不含虚拟节点) (三)⼀致性Hash算法实现(含虚拟节点) 六. Nginx 配置⼀致性Hash负载均衡策略 一. 分布式与集群概念回顾 参考:分布式系统架构解决.

舞鹤白沙编码日志 303

分布式集群架构场景化解决⽅案(Session共享,分布式ID,集群时钟同步)

1.时钟不同步导致的问题 时钟此处指服务器时间,如果集群中各个服务器时钟不⼀致势必导致⼀系列问题, 试想 “集群是各个服务器⼀起团队化作战,⼤家⼯作都不在⼀个点上,岂不乱了套. 举个例⼦: 2.集群时钟同步配置 ...

FDXCG_X的博客 269
上一篇: URLClassLoader
下一篇: 自增 ID 与 UUID
LiveForCode
博客等级 码龄5年 2粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值