自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 2021-06-01

十、分布式数据库之自增主键1、自增主键的理想特征首先是唯一性,这是必须保证的,否则还能叫主键吗? 其次是单调递增,也就是后插入记录的自增主键值一定比先插入记录要大。 最后就是连续递增,自增主键每次加 1。有些应用系统甚至会基于自增主键的“连续递增”特性来设计业务逻辑。但很多情况下,这些特性无法同时满足。2、单体数据库的自增主键只能真正的满足唯一性的约束,单调和连续性无法得到满足。2.1、无法连续递增在多数情况下,自增主键确实表现为连续递...

2021-06-01 00:44:22 200

原创 2021-06-01

九、分布式数据库之隔离性1、读写冲突的处理图中事务 T1、T2 先后启动,分别对数据库执行写操作和读操作。写操作是一个过程,在过程中任意一点,数据的变更都是不完整的,所以 T2 必须在数据写入完成后才能读取,也就形成了读写阻塞(通过锁机制)。反之,如果 T2 先启动,T1 也要等待 T2 将数据完全读取后,才能执行写入。先执行写事务时,阻塞时间除了磁盘写入时间,还包括主备同步网络通讯的开销; 先执行读事务时,虽然不用考虑主备之间的数据复制,但是一方面读操作往往涉及多...

2021-06-01 00:43:36 550

原创 2021-06-01

八、分布式数据库之原子性1、定义关于事务的原子性,图灵奖得主、事务处理大师詹姆斯·格雷(Jim Gray)给出了一个更权威的定义:Atomicity: Either all the changes from the transaction occur (writes, and messages sent), or none occur.原子性就是要求事务只有两个状态:一是成功,也就是所有操作全部成功; 二是失败,任何操作都没有被执行,即使过程中已经执行了部...

2021-06-01 00:40:26 236

原创 2021-06-01

七、分布式数据库之基础和架构1、定义从外部特性上看,分布式数据库是服务于写多读少、低延时、海量并发 OLTP 场景的,具备海量数据存储能力和高可靠性的关系型数据库。 传统上,银行通过两种方法配合来实现高可靠。 第一种还是采购小型机和大型机,因为它们的稳定性优于 x86 服务器。 第二种是引入专业存储方案,例如 EMC 的 Symmetrix 远程镜像软件(Symmetrix Remote Data Facility, SRDF)。数据库采用主...

2021-06-01 00:36:39 311

原创 2021-06-01

六、一致性模型1、概念在“分布式系统”和“数据库”这两个学科中,一致性(Consistency)都是重要概念,但它表达的内容却并不相同。对于分布式系统而言,一致性是在探讨当系统内的一份逻辑数据存在多个物理的数据副本时,对其执行读写操作会产生什么样的结果,这也符合 CAP 理论对一致性的表述。 而在数据库领域,“一致性”与事务密切相关,又进一步细化到 ACID 四个方面。其中,I 所代表的隔离性(Isolation),是“一致性”的核心内容,研究的就是如何协调事务之间的冲突。...

2021-06-01 00:33:59 593

原创 2021-06-01

五、有人作恶怎么办?在第2章中,所有的节点都是好人,会不打折扣的执行领导者的指令。如果集群中出现了坏人,就需要其他办法了。是最复杂的一种分布式故障场景,除了存在故障行为,还存在恶意行为的一个场景。在存在恶意节点行为的场景中(比如在数字货币的区块链技术中),必须使用拜占庭容错算法(Byzantine Fault Tolerance,BFT)。常用的拜占庭容错算法有:PBFT 算法,PoW 算法。1、PBFT 算法PBFT 算法非常实用,是一种能在实际场景中落地的拜占庭容...

2021-06-01 00:30:57 76

原创 2021-06-01

四、在一致性和可用性之间平滑过渡在 AP 型分布式系统中(比如 Dynamo、Cassandra、InfluxDB 企业版的 DATA 节点集群),Quorum NWR 是通常都会实现的一个功能,很常用。对你来说,掌握 Quorum NWR,不仅是掌握一种常用的实现一致性的方法,更重要的是,后续用户可以根据业务的特点,灵活地指定一致性级别。实现自定义一致性级别,是通过组合Quorum NWR 中的三个要素,N、W、R来实现的。1、Quorum NWR 的三要素N 表示...

2021-06-01 00:29:50 44

原创 2021-06-01

三、突破单点——从集中式到非集中式网络1、数据分片前面的Raft算法,是一个实现了强一致性的主从结构,逻辑上相当于是一个单点(当然,是一个高可用的单点),而单点的性能就会有上限,此时就需要使用数据分片等技术,将这些逻辑上的高可用单点再组成一个集群来提升性能。分片与分片存储的数据是不一致的,但为了高可靠,每个分片不能只存一份,需要若干个位于不同节点上的副本,此时分片与副本并存,如下是一个三节点三副本的集群(节点数可以不等于副本数,参见第四章笔记的Quorum NWR算法):...

2021-06-01 00:26:32 71

原创 2021-06-01

二、Raft算法在paxos算法笔记中说过,Multi-Paxos 算法是一个统称,它是指基于 Multi-Paxos 思想,通过多个 Basic Paxos 实例实现一系列值的共识的算法。Raft算法就是其中的一种。Raft 算法是现在分布式系统开发首选的共识算法。全新的系统大多选择了 Raft 算法(比如 Etcd、Consul、CockroachDB——《分布式数据库一》的4.1.3节却说由于节点数较多,CockroachDB采用了Gossip协议)。从本质上说,Raft...

2021-06-01 00:25:28 117

原创 2021-06-01

一、paxos算法1、Basic Paxos 算法描述的是多节点之间如何就某个值(提案 Value)达成共识。采用两阶段提交的分布式事物。在 Basic Paxos 中,有提议者(Proposer)、接受者(Acceptor)、学习者(Learner)三种角色提议者(Proposer)提议一个值,用于投票表决。粗略的,可以把访问集群的客户端也当做提议者。但在绝大多数场景中,集群中收到客户端请求的节点,才是提议者。二阶段提交的发起者。 接受者(Acceptor):...

2021-06-01 00:23:53 83

原创 重读C++ Primer——第七章笔记

1、数据抽象和封装数据抽象即接口和实现分离。接口即用户能执行的操作;实现包括类的数据成员、实现接口的函数体以及定义类所需的各种私有函数。 封装用来实现接口和实现的分离。实现数据抽象和封装,首先要定义一个抽象数据类型,只有数据成员的类不能算是抽象数据类型,只有在数据的基础之上定义操作才能封装(隐藏)它的数据成员。2、this和Python不同,c++中任何对类成员的直接访问都被看做对this的隐式引用,而Python对类成员的访问必须通过self,否则就是对一个局部变量的访问。this是一

2021-02-05 22:26:02 238

原创 重读C++ Primer——第六章笔记

1、如果函数形参使用非常量引用目录1、如果函数形参使用非常量引用,会大大限制函数可接受的参数的类型,即不能把const对象、字面值和需要转换的类型赋值给普通的引用形参(218页)。参见第二章笔记第九条。2、虽然不能以值传递的方式传递数组(219页,还可参见第三章笔记第11条),但是可以把形参写成类似数组的形式。3、传递多维数组4、函数调用的返回值5、函数的返回类型决定函数调用是否为左值,调用一个返回引用的函数得到左值,其它返回类型得到右值。可以为返回类型为非常量引用的函数结果赋值。(

2021-02-05 22:22:03 89

原创 重读C++ Primer——第五章笔记

1、语句表达式加上末尾的分号才能构成语句,即表达式语句。这里,表达式不是语句。2、for语句省略掉for语句头的条件部分,相当于在条件部分写了一个true。3、异常安全那些在异常发生期间正确执行了“清理”工作的程序被称作异常安全(exceptionsafe)的代码。​​​​...

2021-02-05 22:15:16 76

原创 重读C++ Primer——第四章笔记

0、表达式的定义表达式由一个或多个运算对象组成,可以对运算对象求值以得到一个结果。可以使用运算符组合多个运算对象组成一个复杂的表达式。​1、函数调用也是一种特殊的运算符,它对运算对象的数量没有限制。函数调用就是将调用运算符作用于一个表达式,这个表达式是函数或函数指针。调用表达式的类型就是函数的返回类型。进一步,函数调用也是一个表达式。字面值和变量是最简单的表达式,其结果就是字面值和变量的值。另外,一个变量加上括号时编译器就把它当做表达式,见第二章笔记第四条。​变量可以看做一个

2021-02-05 22:04:01 128

原创 重读C++ PRIMER——第三章笔记

《重看C++ PRIMER》第三章笔记1、头文件不应包含using声明,以避免名字冲突。2、getline会读取换行符,但不会将它存入string参数中,返回值是它的流参数。3、vector能容纳绝大多数类型的对象作为其元素,但因为引用不是对象,所以不存在包含引用的vector。4、声明vector的老式语法5、对vector进行列表初始化当使用列表初始化语法初始化vector时,如果使用了花括号的形式,但提供的值又无法进行列表初始化,编译器会尝试用默认值初始化..

2021-02-05 21:13:26 138

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除