0%

事务(TRANSACTION)

作为单个逻辑工作单元执行的一系列操作,这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行 。事务是一个不可分割的工作逻辑单元 ,事务必须具备以下四个属性,简称 ACID 属性:

  1. 原子性(Atomicity) :事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执行,要么都不执行。
  2. 一致性(Consistency) :当事务完成时,数据必须处于一致状态。
  3. 隔离性(Isolation) :对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务。
  4. 永久性(Durability) :事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的永久性。
阅读全文 »

应用程序要存储或访问数据时,只需读或者写”文件”的一维地址空间即可,而这个地址空间与存储设备上存储块之间的对应关系则由操作系统维护。说白了,文件就是基于内核态Page Cache的一层抽象。

阅读全文 »

01 天地之始,万物之母

道可道,非常道;
名可名,非常名。
无,名天地之始;
有,名万物之母。
故常无,欲以观其妙;
常有,欲以观其徼。
此两者,同出而异名,同谓之玄。
玄之又玄,众妙之门。

阅读全文 »

常用监控脚本

series

Series会被索引且存在内存中,如果量太大会对资源造成过多损耗,且查询效率也得不到保障。

1
influx -database 'telegraf' -execute 'show series' -format 'csv'|wc -l

或者使用如下sql:

1
SELECT * FROM "database" WHERE time > now() - 5m and "database"='telegraf' order by time desc

tag values

1
influx -database 'telegraf' -execute 'SHOW TAG VALUES FROM cpu WITH KEY = cpu' -format 'csv'|wc -l

每秒写数据量

1
influx -execute 'select derivative(pointReq, 1s) from "write" where time > now() - 5m' -database '_internal' -precision 'rfc3339'
阅读全文 »

解决的问题是一个分布式系统如何就某个值(决议)达成一致(共识问题)
一个典型的场景是,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点执行相同的操作序列,那么他们最后能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。

阅读全文 »

CAP

Consistency(一致性)

  1. 在分布式系统中的所有数据备份,在同一时刻是否同样的值
  2. 所有节点访问同一份最新的数据副本
  3. 强调数据的正确性,对于客户端而言,每次都能读取到最新写入的数据

Availability(可用性)

  1. 在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
  2. 强调服务可用,但是不保证数据正确

Partition tolerance(分区容错性)

  1. 以实际效果而言,分区相当于对通信的时限要求
  2. 系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在 C 和 A 之间做出选择。
  3. 强调的是集群对分区故障的容错能力

可用性和分区容错性的区别

  1. 可用性:节点出现故障时,系统可用
  2. 分区容错性:网络出现问题时,系统可用
阅读全文 »

背景

如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(又叫哈希表,Hash table)等等数据结构都是这种思路,存储位置要么是磁盘,要么是内存。很多时候要么是以时间换空间,要么是以空间换时间。

在响应时间要求比较严格的情况下,如果我们存在内里,那么随着集合中元素的增加,我们需要的存储空间越来越大,以及检索的时间越来越长,导致内存开销太大、时间效率变低。

此时需要考虑解决的问题就是,在数据量比较大的情况下,既满足时间要求,又满足空间的要求。即我们需要一个时间和空间消耗都比较小的数据结构和算法。Bloom Filter就是一种解决方案。

阅读全文 »

对象已死

引用计数算法(reference-counting)

定义:在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。

缺点:无法简单的处理对象循环引用

可达性算法(GC Roots Tracing)

定义:通过一系列称为“GC Roots”的根对象作为起始节点集,从这些节点开始,根据引用关系向下搜索,搜索过程所走过的路径称为“引用链”(Reference Chain),如果某个对象到GC Roots间没有任何引用链相连,或者用图论的话来说就是从GC Roots到这个对象不可达时,则证明此对象是不可能再被使用的。

阅读全文 »