Paxos在大型系统中的应用场景

https://timyang.net/distributed/paxos-scenarios/

在分布式算法领域,有位非常重要的短发叫Paxos,它的重要性有多高呢?Google的Chubby【1】中提到:

all working protocols for asynchronous consensus we have so far encountered have Paxos at their core.

关于Paxos短发的橡树在维基百科中有介绍,中文版介绍是choose value 的规则【2】。英文版介绍的是Paxos 3 commit 的流程【3】,中文版不是从英文版而是独立写的,所以非常具有互补性。 Paxos算法是由Leslie Lamport提出的,他在Paxos Made Simple[4]中写道:

The Paxos when presented in plain English is plained in a plain English,it very simple.

当你研究了很长一段时间Paxos算法还是有点迷糊的时候,看到上面这句话可能会有点沮丧。但是公认的它的算法还是比较繁琐的,尤其是要用程序员严谨的思维将所有细节理清的时候,你的脑袋里更是会充满了问号。LesLie Lamport也是用了长达9年的时间来完善这个算法的理论。

实际上对于一般的开发人员,我们并不需要了解Paxos所有细节及其如何实现,只需要知道Paxos是一个分布式选举算法就够了。本文主要介绍一人Paxos常用的应用场合,或许有一天当你的系统增加到一定规模,你知道这样的一个技术,可以帮助你正确及优雅的解决技术架构上一些难题。

时间: 2024-11-12 21:25:07

Paxos在大型系统中的应用场景的相关文章

一个新人如何学习在大型系统中添加新功能和Debug

文章背景: 今年七月份正式入职,公司主营ERP软件,楼主所在的组主要负责二次开发,使用的语言是Java. 什么叫二次开发呢?ERP软件的客户都是企业.而这些企业之间的情况都有所不同,一套标准版本的企业资源管理系统必然难以百分之一百地满足每一家公司的所有要求.所以,在客户提出需求之后,程序员对系统进行增减修改,这就是二次开发. 另外,我们组还负责修复客户报上来的各种漏洞. 学会如何添加新模块新功能 为什么说从头到尾只看代码是不可行的? 基本上,财务系统跨越的年限都会有十几二十年,代码数千万级别,更

大型系统中使用到的用户类

<?php class user { var $usertable; function get_oneuser($field,$value) { $field_array=array("id","name"); //查询方式 if(in_array($field,$field_array)) { $sql="SELECT * FROM `$this->usertable` FROM $field='$value'"; $db=new

开发人员学Linux之终结篇:大型系统开发经验谈

1.前言这篇文章来源于我的一个ppt,而这个ppt是源于一个朋友的一次邀请,朋友邀请我为一个公司做一堂大约2小时的技术讲座,我选定的方向是如何开发一个大型系统,在这里我对大型系统的定义为日均PV在千万级以上,而京东和淘宝这类则属于巨型系统了.因此在本篇中讲述的都是基于一些开源免费的技术实现,至于那些通过F5硬件加速.DNS来实现负载均衡.CDN加速等需要花钱购买的技术或者服务则不再本篇介绍范围之类.本来此篇是作为<开发人员学Linux>系列的终结篇最后出现的,但是考虑到在此过程中我可能会由于时

Apache Kafka 在大型应用中的 20 项最佳实践

原标题:Kafka如何做到1秒处理1500万条消息? Apache Kafka 是一款流行的分布式数据流平台,它已经广泛地被诸如 New Relic(数据智能平台).Uber.Square(移动支付公司)等大型公司用来构建可扩展的.高吞吐量的.且高可靠的实时数据流系统. 例如,在 New Relic 的生产环境中,Kafka 群集每秒能够处理超过 1500 万条消息,而且其数据聚合率接近 1Tbps. 可见,Kafka 大幅简化了对于数据流的处理,因此它也获得了众多应用开发人员和数据管理专家的青

“大型票务系统”中地恶意訪问的处理——“接入管理”部分

讨论请移步:http://www.zhiliaotech.com/ideajam/idea/detail/462 相关文章: <今天你买到票了吗?--从铁道部12306.cn站点漫谈电子商务站点的"海量事务快速处理"系统> 不能简单套用"实物电商系统"对"大型票务系统"做需求分析 "大型票务系统"和"实物电商系统"在不能提供商品(服务)时给消费者带来的影响有巨大差异 "大型票务系统&q

【分布式】Zookeeper在大型分布式系统中的应用

一.前言 上一篇博文讲解了Zookeeper的典型应用场景,在大数据时代,各种分布式系统层出不穷,其中,有很多系统都直接或间接使用了Zookeeper,用来解决诸如配置管理.分布式通知/协调.集群管理和Master选举等一系列分布式问题. 二. Hadoop Hadoop的核心是HDFS(Hadoop Distributed File System)和MapReduce,分别提供了对海量数据的存储和计算能力,后来,Hadoop又引入了全新MapReduce框架YARN(Yet Another R

中小型商城系统中的分类/产品属性/扩展属性的数据库设计

声明:之所以定位在"中小型"商城系统,而非“大型”(指淘宝.拍拍这类巨无霸),理由很简单----我一直都呆在(创业型的)小公司,没见过这些大家伙是怎么设计的:) 正文: 之前发表过一篇"商城系统中[商品扩展属性]的表单生成及客户端验证",部分童鞋对于后台数据库的设计比较感兴趣,于是今天把这部分也补上. 一.产品分类设计越来越多的商城系统都热衷于选择“无限级分类”的设计,我也不例外,因为它方便扩展.这部分就不详细展开了,详见 无限级分类(非递归算法/存储过程版/GUI

论火车票订单系统中并发问题和锁机制的探讨

问题由来 假设在一个订单系统中(以火车票订单系统为例),用户A,用户B都要预定从成都到北京的火车票,A.B在不同的售票窗口均同时查询到了某车厢卧铺中.下铺 位有空位.用户A正在犹豫订中铺还是下铺,这时用户B果断订购了下铺.当用户A决定订下铺时,系统提示下铺已经被预订,请重新选择铺位.在这个系统场景 中,我们来探讨一下,火车票系统是怎样处理并发事件以及怎么利用锁机制来避免重复订票的. 设想的方案 方案1: 为了避免重复订票,大部分人会想到在做订票操作前,去数据库查询该铺位是否已经被预订,假设“铺位

在IT系统中使用多租户技术提供人员跨部门及虚拟团队的解决方案(草稿)

1 前言 经过多年企业信息化建设,逐步形成的办公系统中还有9个部门业务网站子系统.9个专业应用子系统.20个独立信息模块.330个流程.这些系统或模块分别搭建在Microsoft IIS.Apache Tomcat.Weblogic.Cordys BOP上,相互彼此独立.互不影响. 在不考虑重复投资.资源共享.便于运维的情况下,仍存在一些长期很难解决的问题: (1).各个系统的组织.账号不统一,维护困难: (2).在一些系统或模块中,对于人员跨部门的情况,仍以两个及以上账号的方式处理,不仅业务不