Bigtable Paper Reading
Bigtable Paper Reading资料推荐: 深入浅出BigTable, B站似乎也有搬运, 看不了YouTube的小伙伴可以搜一下. Bigtable的设计目标是为了达到广泛的应用性, 可扩展, 高性能和高可用, 我将从这几个目标来谈谈我对这篇论文的理解. 可扩展Bigtable是一个稀疏的、分布式的、持久的多维有序map,该map是基于行键(row key), 列键(column key), 时间戳(timestamp)三者建立索引的, map中的每个值都是一个未解释的字节数组. 每一条数据有一个行键, 通过行键可以原子性地读写一条数据. 一条数据包含了多个列族(column family), 不同行数据的同一列族内, 可以定义不同的列. 每一个列不仅可以保存值,而且可以保存多个版本,每个版本包含了一个时间戳。 列键被组织成一个叫列族的集合, 作为访问控制的基本单位. 存储在同一列族内的数据通常具有相同的类型, 在存储任何列键的数据之前必须先创建列族. 创建列族完成后, 列族中的任意列键都可以使用. 从上图我们可以看出bigtable的表设计是一张灵活的,”稀疏”表, ...
最近的思考与选择
最近的思考与选择身体健康最重要这个月, 我的外婆被确诊为肺癌, 听到这个消息时, 我仿佛被重重击中, 本以为只是普通的肺结节或小肿瘤(大多数都是良性的). 她动完手术后虚弱的样子让我真正体会到了“奄奄一息”的含义, 一个七十多岁的老人, 肺部手术后的虚弱, 再加上医院的压抑氛围, 真的让人感受到人生的无奈与悲凉. 医生说后续她需要化疗或使用靶向药,这取决于她术后的恢复情况和意愿. 我意识到, 我生命中最亲近的一个人, 可能在未来几年内离我而去(五年生存率不到50%). 原本觉得人生是如此美好, 但现在的心情却充满了难过和无力. 最近还看到frs学长的水滴筹求助, 23岁就得了白血病, 唉. 希望看到这篇博客的你们, 能健康、平安、快乐. 身体健康, 是这世上最珍贵的财富. 无论未来有多不可预知, 我只愿每个人都能好好照顾自己, 珍惜当下. AI生成式AI是一项革命性的技术吗?从底层原理来说, 我认为不是, 其本质还是在做预测, 并且仍然是一个黑盒系统(虽然提高其可解释性的努力在持续进行, 但我觉得短时间可能不会有什么进展). 但从应用角度来说, 是的, 它能以极低的成本提高效率(虽然能 ...
HDFS Paper Reading
HDFS Paper Reading我认为HDFS是一个更加通用的开源的GFS, 其架构和设计思路与GFS非常相似, 但是HDFS在实现上更加简单, 更加通用, 所以我会关注常见的问题和显著不同的地方. HDFS写流程 客户端发送写请求, 通过RPC与NameNode建立通信, NameNode检查该用户是否有写权限, 以及写入的文件是否在HDFS对应的目录下重名, 如果这两者有任意一个不满足, 则直接报错, 如果两者都满足, 则授予客户端一个写入租约(lease) Client根据文件的大小进行切分, 默认128M一块, 切分完成之后给NameNode发送请求第一个block块写入到哪些服务器上 NameNode收到请求之后, 根据网络拓扑和机架感知以及副本机制进行文件分配, 返回可用的DataNode的地址 客户端收到地址之后与服务器地址列表中的一个节点进行通信, 建立pipeline, Client->DN0->DN1->DN2 Client向DN0以packet(64kb)形式传输数据, 然后沿着pipeline传输, ack响应会沿着pipeline逆序返回 ...
GFS Paper Reading
GFS Paper Reading架构(Architecture) GFS采用单Master架构, 由master和chunkserver这两类服务器组成, master是主控节点, 而chunkserver是存储数据的节点, 其实就是Linux服务器. GFS使用Linux上的文件作为基础存储层, 通过命名空间+文件名来定义一个文件. 文件按每64M划分为一个chunk, 每个chunk都自己的唯一标识(chunk handle). 为了确保数据不会因为某一个chunkserver坏了就丢失了,每个chunk都会有三份副本(replica). 其中一份是主副本(primary), 两份是次副本(secondary), 当三份副本出现不一致的时候, 就以主副本为准. 有了三个副本,不仅可以防止因为各种原因丢数据, 还可以在有很多并发读取的时候, 分摊系统读取的压力 Master会存放三种元数据: 文件和chunk的命名空间信息, 文件名和chunk handle的映射关系(文件被拆分成了哪几个chunk), chunk handle和chunkserver的映射关系(chunk被存储在 ...
应用密码学与网络安全实验通关指南
应用密码学与网络安全实验通关指南这是计科网络方向应用密码学与网络安全的随课实验, 占课程分数的20%. 第一次主要是介绍内容, 两周后的第二次实验主要是验收, 实验内容自己线下完成即可. 实验内容如下: 密码学及应用:熟悉云安全实验平台及环境,完成:实验1(古典密码算法)――>练习一Caesar密码,实验1(古典密码算法)――>练习二单表置换密码,实验1(古典密码算法)――>练习三仿射密码 密码学及应用:实验2(对称密码算法)――>练习一DES,实验2(对称密码算法)――>练习二AES 密码学及应用:实验3(非对称密码算法)――>练习一RSA,实验4( Hash算法) ――>练习一MD5 密码学及应用:实验5(密码应用)――>练习一文件安全传输 这个实验的目的是为了考察对于各个加密算法的流程的理解和掌握, 并不是要让你真的手搓这些算法(当然能手搓也是一种能力). 最后验收只要将结果展示出来并且能解释清楚(需要完整讲述算法流程, 主要验收DES, AES, RSA, MD5, 以及文件安全传输) DESDES 算法是在 Feiste ...
初学者眼中的Go语言
初学者眼中的Go语言最近花了一些时间过了一遍Go编程语言中的Go语言之旅, 也算是入门了, 下面谈谈我认知的Go语言 类型不像绝大数语言,类型定义在了变量名之前,Go中类型在变量名之后,如下: 1234567func add(x int, y int) int { return x + y}//等效于func add(x, y int) int { return x + y} 官方也在博客Go’s Declaration Syntax中给出了理由, 但可能是由于惯性, 我仍然不是很喜欢这种设计🤥 关于变量初始化: 123var i, j int = 1, 2//等效于var i, j = 1, 2 幸亏变量初始化时类型声明可以忽略, 不然真的看上去很怪, 忽略后一看, 这不是JavaScript吗🥰 Go没有while绝大多数编程语言都是有while循环的, 虽然while循环的本质还是for循环, Go说: for是Go中的while 1234567func main() { sum := 1 for sum < 100 ...