首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏ACM算法日常

    浅谈分布式算法

    限于精力有限,只能带大家了解一下分布式的基本算法,不过相信这些对于以后在思考服务器结构时会起到比较大的影响。 可是等会大家就知道,分布式算法的基础是很简单的,即使对于raft这种比较好的一致性算法,可能只需要一个下午时间就能理解整个流程,相较于算法竞赛中的网络流之类的较为麻烦的算法分布式的这些算法是比较简单的 分布式算法 分布式服务器的设计很多时候容易被程序员混淆,在我的理解上面,分布式服务器是能够横向扩展的,对于只是将功能分到不同模块的多进程做法,并不是分布式的做法。 但是在具体架构的时候又需要将功能划分为多个模块,每个模块可能是分布式结构,这个要具体问题具体分析。分布式通常分为分布式计算和分布式存储两大块,这两块的算法有比较大的差异,可以说是相互独立的。 总结 如果没有MapReduce和raft这些算法,自己去实现分布式的计算和存储,可能不怎么现实,看起来简单的东西,可能是数学行业几十年的沉淀与研究产生的结果,而且分布式算法并没有出现百花齐放的状况,也可以说明研究一种算法就已经很困难

    2.5K30发布于 2020-05-11
  • 来自专栏卡尼慕

    分布式共识算法

    那么这里可以把问题定性为如何设计一套算法让所有节点当遇到分歧的时候能够达成一致。也就是基于异步通信的分布式共识问题。 同样,拜占庭将军问题也是一个类似的问题。这里的图片来自ppt。 ? 分布式 结点之间互相独立,互相不信任,不受中央控制。 共识 目标是所有成员达成一致的意见。 解决拜占庭将军问题 FLP不可能性定理 “在分布式异步通信的网络里,即便存在一个故障的节点,不存在可解决一致性的算法。” ,FLP不可能原理实际上告诉人们,不要浪费时间,去为异步分布式系统设计在任意场景下都能实现共识的算法。 但是!!!不存在任意情景下都适用的算法。但我们可以进行一些假设,来进行限制来简化问题。 总结一下 去中心化交易模型容易导致类似双重支付或者拜占庭将军问题出现,这些问题的实质都是基于异步通信下的分布式共识算法,理论上这个问题是无解的,而在实际操作中可以尝试简化问题,限制条件来找到一种成功率较高的解法

    64420发布于 2019-09-09
  • 来自专栏java开发的那点事

    分布式ID生成算法-雪花算法

    原因:为什么需要雪花算法 为什么需要分布式全局唯一ID以及分布式ID的业务需求?集群高并发情况下如何保证分布式唯一全局Id生成? ID算法snowflake 概述 Twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移到Cassandra(由Facebook开发一套开源分布式NoSQL数据库系统 Twitter的分布式雪花算法SnowFlake ,经测试snowflake 每秒能够产生26万个自增可排序的ID Twitter的SnowFlake生成ID能够按照时间有序生成。 SnowFlake算法生成ID的结果是一个64bit大小的整数, 为一个Long型(转换成字符串后长度最多19)。 结构 雪花算法的几个核心组成部分: SnowFlake可以保证: 所有生成的ID按时间趋势递增。

    1.5K20发布于 2021-11-16
  • 来自专栏Lixj's Blog

    分布式id生成算法-snowflake算法

    snowflake 算法是 twitter 开源的分布式 id 生成算法,采用 Scala 语言实现,是把一个 64 位的 long 型的 id,1 个 bit 是不用的,用其中的 41 bit 作为毫秒数 snowflake 算法源码 以下是找到的snowflake 源码 /** * Twitter_Snowflake
    * SnowFlake的结构如下(每部分用-分开):
    * 0
    * SnowFlake的优点是,整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由数据中心ID和机器ID作区分),并且效率较高,经测试,SnowFlake每秒能够产生26万ID ID呈现趋势递增,后续插入索引树的时候性能较好(关于这点优点我还有待研究,没完全搞懂) 缺点 由于是依赖时钟的一致性,如果机器的时间回拨,则有可能造成ID冲突或ID乱序 随想 由于只是碰巧看到这个算法, Copyright: 采用 知识共享署名4.0 国际许可协议进行许可 Links: https://lixj.fun/archives/snowflake算法

    55320编辑于 2022-06-10
  • 来自专栏程序员升级之路

    分布式ID算法&实现

    一、为什么需要分布式ID 1、跨机房部署 如果数据库是跨机房部署,分布式ID是必须的,不然后续做数据分析和统计、跨机房路由会踩大坑。 2、海量数据 如果数据量可能会超出数据库自增ID类型最大值, 分布式ID也是必然面对的。 二、分布式ID的需求有哪些 先看下功能性需求 1、全局唯一 即不管是哪个机房生成的,全局必须唯一,不能和其它机房产生的值冲突 2、单调递增 保证下一个ID一定大于上一个ID 3、具有一定的安全性 三、常用算法有 1、snowflake(雪花)算法 生成一个64bit的数字,数字被划分成多个段:时间戳、机器编码、序号。 优点: 整个ID是趋势递增的。 高吞吐量。 在分布式环境下,每台机器上的时钟可能有偏差,有时候会出现不是全局递增的情况。 2、基于数据库 一般基于数据库,充分利用MySQL自增ID的机制。

    1.4K30发布于 2020-09-11
  • 来自专栏焱融科技

    分布式QoS算法解析

    我们今天就来讨论一下分布式存储系统中的QoS算法。进入正题之前,我们先来了解背景知识,即什么是QoS,分布式QoS又是什么,有哪些常见的QoS算法。 近年来基于x86服务器的分布式存储系统流行,即在多个x86服务器部署分布式存储软件,构建出一套分布式存储系统,对外提供一套统一的存储服务。 如果是分布式块存储,用户可以将这套分布式块存储集群看成一个集中的SAN设备。如果是分布式文件存储,用户则可以将这套分布式文件存储集群当成一个本地文件系统(如ext4, xfs)来用。 我们似乎也无法在存储端做QoS算法,尤其是分布式并行文件系统,因为存储端各节点是分布式的,业务数据从不同client端发起,直接流向不同的存储端节点。 我们将这种场景称之为分布式QoS场景。 04 总结 我们讨论了QoS、分布式QoS、令牌桶等常见QoS算法,最后举例分析了mClock和dmClock算法。 关于dmClock,我们思考一个进一步的问题。

    2.6K20发布于 2020-09-03
  • 来自专栏云计算与大数据

    分布式算法再认识

    CAP理论是Eric Brewer教授在2000年提出 的,是描述分布式一致性的三个维度,分别是指: (1)一致性(Consistency) 每次读操作都能保证返回的是最新数据;在分布式系统中,如果能针对一个数据项的更新执行成功后 CAP指出,一个分布式系统只能满足三项中的两项而不可能满足全部三项。 Raft 特性: 强领导者(Strong Leader):Raft 使用一种比其他算法更强的领导形式。例如,日志条目只从领导者发送向其他服务器。 这种方式仅仅是在所有算法都需要实现的心跳机制上增加了一点变化,它使得在解决冲突时更简单和快速。 从Paxos到Raft,分布式一致性算法解析 Paxos和Raft的前世今生

    37520编辑于 2022-03-14
  • 来自专栏面试

    分布式的共识算法

    共识算法(Consensus Algorithm)是分布式系统中一个关键的概念,主要用于确保多个节点在分布式环境中能够就某一状态达成一致。 本文将深入探讨共识算法的基本原理、常见类型及其在实际应用中的重要性。 一、共识算法的基本原理 共识算法的核心在于解决分布式系统中的一致性问题。 它有点像在开会时,每个人都要互相验证对方是不是在说谎 ZAB 算法 ZAB 是 ZooKeeper 的底层共识算法,用于实现分布式锁和协调服务。 其他节点切换到Follower状态,并与Leader同步数据,确保所有节点的数据一致 假设这些服务器从id1-5,依序启动: 三、共识算法的应用场景 分布式数据库 在分布式数据库中,共识算法确保各节点的数据一致性 分布式文件系统 分布式文件系统(如 Google File System 和 HDFS)通过共识算法实现元数据的同步和一致性,确保文件系统在大规模分布式环境中的可靠性。

    55010编辑于 2025-03-18
  • 来自专栏大数据成神之路

    分布式快照算法: Chandy-Lamport 算法

    算法,那么分布式快照算法可以用来解决什么问题呢? 下面就介绍一下在流式系统中广泛使用分布式快照算法:Chandy-Lamport 算法。Flink 使用的是 Chandy-Lamport 的改进算法。 1. 因为是分布式系统,也就是说,这些进程是运行在不同的物理机器上的。那么一个分布式系统的全局状态就是有进程的状态和 channel 中的 message 组成,这个也是分布式快照算法需要记录的。 Chandy-Lamport 算法 那么我们基于上面假设的分布式系统模型来看一下 Chandy-Lamport 算法具体的工作流程是什么样的。 总结 Chandy-Lamport 算法通过抽象分布式系统模型描述了一种简单直接但是非常有效的分布式快照算法。讨论 Chandy-Lamport 算法一定要注意算法的几个前提:网络可靠、消息有序。

    2.1K20发布于 2019-07-30
  • 来自专栏山海散人技术

    Memcached 分布式算法

    一致性 hash 算法应用领域 ---- 分布式数据存储场景:缓存、ES、Hadoop、分布式数据库 2. 常用缓存中间件 Memcached Redis 高并发问题 互联网公司的分布式高并发系统有什么特点? 高并发 海量数据 高并发问题如何处理?(应用集群) ? 方式二:一致性 hash 算法 ? hash 值一个非负整数,把非负整数的值范围做成一个圆环。 方式三:一致性 Hash 算法 + 虚拟节点 一致性 Hash 算法,只是解决缩容、扩容问题(程序员加班问题)。 引入虚拟节点解决数据分布不均衡问题。 ? 4. 一致性 Hash 算法需要考虑的问题 ---- Hash 算法选择 hashCode(),不够散列,会有负值(取绝对值即可) 其他 hash 算法:比如 CRC32_HASH、FNV1_32_HASH、

    64120发布于 2021-03-03
  • 来自专栏仙士可博客

    分布式学习九:Raft算法

    raft算法 由于paxos算法难以理解,今天来理解下 "易于理解的一致性算法"  raft raft本质是选举领导,领导进行管理日志,实现的一致性算法 选举领导 每个节点角色都会在以下几种切换: CD只能支持A 2:在投票僵持时,每个节点设置一个随机的超时时间并且重新选举, 例如A在选票相同时,100ms之后重新发起任期为2的选举,B在200ms之后发起任期为2的选举 日志复制 领导者负责整个分布式节点的数据复制同步 领导者向所有跟随者发送日志数据 3:跟随者记录数据更新,记录日志 4:跟随者确认接收数据,发送给领导者 5:领导者发送确认提交数据 如果领导者无法接收到半数以上的跟随者确认数据时,将判断这条数据插入失败 日志 在raft算法

    53540编辑于 2022-03-04
  • 来自专栏涓流

    分布式共识算法(Paxos、Raft)

    分布式共识算法 多个参与者针对某一件事达成完全一致:一件事,一个结论。 已达成一致的结论,不可推翻。 主流分布式共识算法 Paxos:被认为是分布式共识算法的根本,其他都是其变种,但是 paxos 论文中只给出了单个提案的过程,并没有给出复制状态机中需要的 multi-paxos 的相关细节的描述,实现 multi paxos basic paxos 的价值在于开拓了分布式共识算法的思路, 一般不会用于实践 basic paxos 存在的问题 只能对单个值形成决议 活锁(两个 proposer 频繁提出 : 如何选主(leader election) 日志同步(log replication) 过程安全(safety) Raft算法 Raft 也是一种共识算法, 可以理解为 multi paxos 上发展的一种派生实现 ”为题的论文提出了 Raft 算法, 成为了 etcd、consul 等重要分布式程序的实现基础 包括 Zookeeper 的 ZAB 算法与 Raft 思路也十分相似 Raft 特点与概念 特点: Strong

    4.1K21编辑于 2022-06-28
  • 来自专栏码上遇见你

    分布式基础概念-选举算法

    选举算法Quorum机制、WARO waro:一种简单的副本控制协议,写操作时、只有当所有的副本都更新成功之后,这次写操作才算成功,否则视为失败。 需要配合一个获取最新成功提交的版本号的metadata服务,这样可以确定最新已经成功提交的版本号,然后从已经读到的数据中就可以确认最新写入的数据 paxos算法 Paxos算法解决的是一个分布式系统如何就某个值 一个典型的场景是,在一个分布式数据库系统中,如果各个节点的初始状态一致,每个节点执行相同的操作序列,那么他们最后能够得到一个一致的状态。 为了保证每个节点执行相同的操作序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。 raft算法 基本概念: 分布式一致性算法:raft会先选举出leader,leader完全负责replicated log的管理。

    58840编辑于 2023-10-25
  • 来自专栏分布式

    分布式(计算机算法)

    以下概念来源于百度百科分布式计算分布式计算是近年提出的一种新的计算方式。所谓分布式计算就是在两个或多个软件互相共享信息,这些软件既可以在同一台计算机上运行,也可以在通过网络连接起来的多台计算机上运行。 这样可以节约整体计算时间,大大提高计算效率 分布式计算比起其它算法具有以下几个优点:1、稀有资源可以共享;2、通过分布式计算可以在多台计算机上平衡计算负载;3、可以把程序放在最适合运行它的计算机上;其中 分布式和集群首先,从定义上看,分布式是将一个复杂的业务系统拆分成多个子业务系统,这些子系统被部署在不同的服务器上,通过网络连接并交换信息以协作完成一个业务。 最后,在性能和扩展性方面,集群在速度上可能更快一些,并且在相同规模下,集群的规模可能比分布式更大。然而,分布式在稳定性方面可能表现更好。 集群分布式和集群的应用场景 分布式应用场景分布式的主要应用场景在于单台机器无法满足性能要求时,需要融合多个节点来协同完成任务。这种情况下,节点之间需要有交互,共同处理业务。

    75210编辑于 2024-08-09
  • 来自专栏技术客栈

    雪花算法分布式系统唯一ID生成算法

    一、由来 雪花算法(Snowflake Algorithm)是一种用于生成分布式系统中唯一ID的算法。起初由Twitter设计,用于解决分布式系统中唯一ID的需求。 四、应用场景与特点 雪花算法广泛应用于分布式系统,用于生成唯一标识符,如订单号、用户ID、消息ID等。在解决分布式系统中唯一ID生成需求时非常有效,已被众多大型互联网公司和开源项目采用。 主要有以下特点: 唯一性:雪花算法生成的ID在分布式环境下全局唯一,不会重复。 有序性:生成的ID有序,可根据ID大小排序。 高性能:ID生成速度快,适用于高并发的分布式系统。 7109423425214480386 Generated Unique ID: 7109423425214480391 Generated Unique ID: 7109423425214480390 六、总结 雪花算法是一种为分布式系统生成唯一 ID的算法,具备唯一性、有序性和高性能等特点,适用于各类分布式系统。

    9.2K31编辑于 2023-09-19
  • 来自专栏Cheng's Blog

    Twitter的分布式自增ID算法-->雪花算法(snowflake)

    (转换成字符串后长度最多19) snowflake生成的ID整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由datacenter和workerId作区分),并且效率较高。 优点: 整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由数据中心ID和机器ID作区分),并且效率较高,经测试,SnowFlake每秒能够产生26万ID左右。
    * SnowFlake的优点是,整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由数据中心ID和机器ID作区分),并且效率较高,经测试,SnowFlake每秒能够产生26万ID /** 数据标识id所占的位数 */ private final long datacenterIdBits = 5L; /** 支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数

    1.4K50编辑于 2022-02-25
  • 来自专栏JMCui

    分布式 ID 生成算法 — SnowFlake

    一、概述 分布式 ID 生成算法的有很多种,Twitter 的 SnowFlake 就是其中经典的一种。 SnowFlake 算法生成 ID 的结果是一个 64bit 大小的整数,它的结构如下图: ? 1 位,不用。 SnowFlake 可以保证: 所有生成的 ID 按时间趋势递增; 整个分布式系统内不会产生重复id(因为有 datacenterId 和 workerId 来做区分); 二、SnowFlake 算法的 如今的分布式部署都在强调无状态化,那么给每台机器绑定一个 hostid 显然不太现实,假设又是在容器化环境下,没有固定的 IP,并且容器实例每次重新启动后的唯一 ID 还不一致。 (可以参考百度分布式唯一 ID 生成器 UidGenerator) ? 四、SnowFlake 算法的问题思考 1.

    87620发布于 2021-01-26
  • 来自专栏CodingToDie

    分布式 | 常见的负载均衡算法

    常见负载均衡算法 为了提高项目整体的并发和可用性,我们往往会对同一个项目部署多个实例,这时就需要根据不同的算法来进行负载均衡,下面来介绍一下常见的负载均衡算法 静态负载均衡算法包括:随机、轮询、比率 这里我们学习一下正常算法,出错的情况就先不展开了。 4. P2C 算法 Power of Two Choices (P2C,两次随机选择) 负载均衡算法,主要用于为每个 RPC 请求返回一个 Server 节点以供调用,该算法策略出自论文 《The Power 这类算法都需要在负载的执行过程中记录对应的服务的一些监控指标来选择最合适的服务实例。 优点: 这类算法可以动态的根据服务状态来进行负载,其灵活性更好,更能达到最优负载 缺点: 因为要监控服务的一些状态信息,其算法复杂度大大提高,同时还要收集服务器信息 参考 Nginx 算法参考 https

    2.7K21发布于 2021-03-19
  • 来自专栏luozhiyun的技术学习

    常见的分布式协议与算法

    我这里将主要列举一致性Hash算法、Gossip协议、QuorumNWR算法、PBFT算法、PoW算法、ZAB协议,Paxos会分开单独讲,Raft算法已经写好了一篇文章,具体可以参考:从JRaft来看 由于谣言传播非常具有传染性,它适合动态变化的分布式系统 ? Quorum NWR算法 Quorum NWR 中有三个要素,N、W、R。 在上面的这个例子中: 可以将赵、魏、韩、楚理解为分布式系统的四个节点,其中赵是主节点(Primary node),魏、韩、楚是从节点(Secondary node); 将苏秦理解为业务,也就是客户端; PBFT 算法是O(n ^ 2) 的消息复杂度的算法,所以以及随着消息数 的增加,网络时延对系统运行的影响也会越大,这些都限制了运行 PBFT 算法分布式系统 的规模,也决定了 PBFT 算法适用于中小型分布式系统 Zookeeper 是通过 Zab 协议来保证分布式事务的最终一致性。ZAB 协议的最核心设计目标就是如何实现操作的顺序性。

    1.2K30发布于 2020-07-06
  • 来自专栏架构师成长之路

    Memcached的分布式算法-Consistent Hashing

    memcached的分布式算法-Consistent Hashing 前言: 我们知道以往资料要放到 M 台服务器上,最简单的方法就是取余数 (hash_value % M) 然后放到对应的服务器上,那就是当添加或移除服务器时 下面这篇文章写的非常好,结合memcached的 特点利用Consistent hasning 算法,可以打造一个非常完备的分布式缓存服务器。 我是Mixi的长野。 图1分布式简介:准备 首先向memcached中添加“tokyo”。将“tokyo”传给客户端程序库后, 客户端实现的算法就会根据“键”来决定保存数据的memcached服务器。 libmemcached本身支持几种分布式算法,也支持Consistent Hashing, 其Perl绑定也支持Consistent Hashing。 · TangentSoftware: libmemcached 总结 本次介绍了memcached的分布式算法,主要有memcached的分布式是由客户端函数库实现,以及高效率地分散数据的

    38120编辑于 2022-04-14
领券