mac命令行
man一条命令man解决所有问题。 man command-name进入命令指南页面,上箭头或下箭头上下移动,使用空格来翻页,输入 / 和关键字来按照关键字搜索,按 Q 来退出使用指南页面。 输入 man -k 和关键字来对整个使用指南数据库进行搜索。 以下都是可以用man查看具体用法的: 目录操作 命令名 功能描述 使用举例 mkdir 创建一个目录 mkdir dirname rmdir 删除一个目录 rmdir dirname mvdir 移动或重命名一个目录 mvdir dir1 dir2 cd 改变当前目录 cd dirname pwd 显示当前目录的路径名 pwd ls 显示当前目录的内容 ls -la dircmp 比较两个目录的内容 dircmp dir1 dir2 文件操作 命令名 功能描述 使用举例 cat 显示或连接文件,可以用>>来增加文本文件内容 cat filename pg 分页格式化显示文件内容 pg filename more 分屏显示文件内容 more filename o...
会议记录
2022.2.24lxy 尽力和新的论文做比较 ycsb我还没看 要表现自己不是精心构造的case,实验数据要具有说服力 ywqnetwork打破cpu隔离 高网络流量下隔离被打破 2022.3.10lxy 对于不同的workload可以说明是总的图,先展示总和的图 ycsb只是会跑了官方版本,但是对于魔改版本还没接触 强调自己的工作与相关工作的比较,体现自己的贡献 ywq混合部署下网络对于CPU隔离的打破 举例子要写清楚区别 zxz 在相同的物理机器上时延也会上升 别人做过的最好别做了,尽量提出新的解决方式 对比别人做的related work,体现自己的区别 qzh相当于加了cache 由被动缓存到冷热感知的主动缓存 创新点在哪,宏观上有把握 或者是细节上注意,宏观上没有相应的把握 2022.3.18lxyzxz 数据中心内部流量高 虚拟化技术使得东西方向的流量很大,以前南北方向流量很大(怎么定义东西南北) 客户端和服务器之间的流量被称为南北流量。简而言之,南北流量是server-client流量 不同服务器之间的流量与数据中心或不同数据中心之间的网络流被称...
GOmake函数和slice,map解析
make函数 首先看个例子 package main import ( "fmt" ) func main() { var i *int *i=10 fmt.Println(*i) } 这个例子会打印出什么?0还是10?。以上全错,运行的时候会painc,原因如下: panic: runtime error: invalid memory address or nil pointer dereference 从这个提示中可以看出,对于引用类型的变量,我们不光要声明它,还要为它分配内容空间,否则我们的值放在哪里去呢?这就是上面错误提示的原因 对于值类型的声明不需要,是因为已经默认帮我们分配好了 分配内存,Go提供了两种方式,分别是new和make newGo提供内建函数new func new(Type) *Type 它只接受一个参数,这个参数是一个类型,分配好内存后,返回一个指向该类型内存地址的指针。同时请注意它同时把分配的内存置为零,也就是类型的零值。那么上面的函数可以改写成 func main() { var i *int i=new(int)...
MIT 6.824 2022 notes 2 chinese version
Lecture 2:RPC and threads为什么用 Go 语法先进。在语言层面支持线程(goroutine)和管道(channel)。对线程间的加锁、同步支持良好。 类型安全(type safe)。内存访问安全(memory safe),很难写出像 C++ 一样内存越界访问等 bug。 支持垃圾回收(GC)。不需要用户手动管理内存(特别是shared memory),这一点在多线程编程中尤为重要,因为在多线程中你很容易引用某块内存,然后忘记了在哪引用过。 简洁直观。没 C++ 那么多复杂的语言特性,并且在报错上很友好。 线程(Threads)线程为什么这么重要?因为他是我们控制并发的主要手段,而并发是构成分布式系统的基础。在 Go 中,你可以将 goroutine 认为是线程,以下这两者混用。 每个线程可以有自己的内存栈、寄存器,但是他们可以共享一个地址空间。 使用原因IO concurrency(IO 并发):一个历史说法,以前单核时,IO 是主要瓶颈,为了充分利用 CPU,一个线程在进行 IO 时,可以让出 CPU,让另一个线程进行计算、读取或发送网络消息等。在这里...
MIT 6.824 2022 notes 1 chinese version
chinese version课程背景构建分布式系统的原因: Parallelism,资源并行(提高效率)。 Fault tolerance,容错。 Physical,系统内在的物理分散。 Security,不可信对端(区块链)。 分布式系统面临的挑战: Concurrency,系统构件很多,并行繁杂,交互复杂。 Partial failure,存在部分失败,而不是像单机一样要么正常运行,要么完全宕机。 Performance,精巧设计才能获取与机器数量线性相关的性能。 课程组成 Lectures,授课,一些案例学习。 Papers,论文。 包括一些经典的和前沿的、学术的和工业界的。 看其观点,学其实现,断其性能。 抓重要部分,略次要部分。 课程主页有所有论文链接。 Exams,期中期末两次考试。 Labs:四个实验 lab1: MapReduce lab2: Raft 容错 lab3: K/V server use Raft lab4: Shared K/V based on lab3分布式系统巨难调试,做好心理准备,早点开做。 Project,可以自选相关题目...
GFS chinese version
The Google File System中文版2020-04-18 | 论文 The Google File System GFS MapReduce BigTable关系GFS(2003年发表)使用商用硬件集群存储海量数据。文件系统将数据在节点之间冗余复制。MapReduce(2004)是GFS架构的一个补充,因为它能够充分利用GFS集群中所有低价服务器提供的大量CPU。它与GFS一道形成了处理海量数据的核心力量,包括构建Google的搜索索引。不过这两个系统都缺乏实时随机存取数据的能力,意味着尚不足以处理Web服务。 GFS的另一个缺陷就是,它适合存储少许非常非常大的文件,而不适合存储成千数万的小文件,例如社交平台上的图片,因为文件的无数据信息最终要存储在主节点的内存中,文件越多master的压力越大。 这时候需要一个能够驱动交互应用的解决方案,且能够同时利用以上两种基础架构和依靠GFS 存储的数据冗余和数据可用性较强的特点。存储的数据应该拆分成特别小的条目,然后由系统将这些小记录聚合到非常大的文件中,并提供一些索引排序,让用户可以查找最少的磁盘就能够获取到数据。最终,...
MIT 6.824 2022 notes 1
Lecture 1: Introductionwhy do we use distributed systems? connect physically seperated machines Usually shared increase capacity through parallelism tolerate faults achieve security/via isolate What are the challenges? Concurrency Partial failure High performance Infrastructure Abstractions storage communication Computation ImplementationRPC, threads, concurrency lock. performaceScalability Fault Tolerance Availability Recoverbility Solutions: NV storage(non-volatile storage)非易失性存储 ...
分布式学习资料
引子时下,随着通信技术的发展、移动互联网的普及、物联网车联网人工智能的兴起,每天所产生的数据呈爆炸性的增长。这种尺度的数据不是传统单机系统可以独立处理的,而只能借助于大规模的分布式系统,因而分布式系统渐渐的变成一门 “显学”。而作为一个分布式系统初学者,面对网上未加归类、浩如烟海的学习资料,很容易两眼抓瞎。 但分布式系统有其基本研究内容和独特发展脉络,比如: 一些基本研究问题:时序问题、一致性问题、容错技术、共识算法、并发控制等等。 一些基本定理:CAP、PACELC、FLP 渐次发展的工业系统:MapReduce、Spark、GFS、Dynamo、Cosmos 因此只需要在 “时空” 两个维度对分布式系统进行把握,就能提纲挈领,愈学愈明。“时” 表示分布式系统的演进脉络,可以通过阅读不同时期、学术界工业界的一些论文来把握。“空” 表示分布式系统中所研究的基本问题的拆解,可以通过阅读一些书籍建立分布式系统的知识体系。本文将我在学习分布式系统知识过程搜集到的一些资料,按类别简单汇总,以飨诸君。资料排名没有先后,请按需采用。 注:文中推荐的资料大多为英文,如果阅读有困难,推荐使用...
anna论文笔记
Anna(支持任意扩展和超高性能的KV数据库系统)阅读笔记 前言初略看了一眼Paper,似乎很是牛X。说是支持任意规模的扩展,并且性能不低于 pedis。于是抽空来看看并了解下这套系统的设计特点和这种夸张的单机性能和扩展性的来源。 主流分布式KVS的比较 系统名词 扩容设计 内存模型 针对单个Key的一致性策略 针对多个Key一致性策略 Masstree 多核 共享内存 线性(Linearizable) 无 Bw-tree 多核 共享内存 线性(Linearizable) 无 PALM 多核 共享内存 线性(Linearizable) 无 MICA 多核 共享内存 线性(Linearizable) 无 Redis 单核 N/A 线性(Linearizable) 串行化(Serializable) COPS, Bolt-on 分布式 消息队列 最终一致性(Eventual) 因果一致性(Causal) Bayou 分布式 消息队列 最终一致性(Eventual), 单调读/写, Read Your Writes 最终一致性(Eventual) ...
体制内还是体制外工作
看到这个我觉得就是经济学家纯纯傻逼, 经济学家向松祚表示: 我看到这些优秀的清北毕业生,都去考公,我觉得很遗憾。我觉得这是不应该的,就说中国这些顶级大学的学生出来,应该主要是去做科学家,企业家,思想家和艺术家。学生可以做这些,不能去当官,如果一窝蜂都去当官了,就是没有希望了。 要不是这些尸位素餐只会说大话的在占着位置,谁愿意内卷,不内卷为什么又去卷体制内,而且什么鬼依靠读的大学来决定,解决温饱才有可能做科学家企业家思想家艺术家,得有相应的生活保证才有心思去创造好不好。 民营企业的工作强度太大,那么去体制内工作未尝不是一个理性的选择。这种情况大概回到了8、90年代时候大学毕业生的情况,那时候的大学毕业生都喜欢去国有单位和事业单位,拿铁饭碗。 王朔在1984年就在小说里提到了多数人最喜欢的工作:“少干活,多拿钱;不干活,也拿钱。” 体制内的工作,实际上就是王朔所说的这种工作。 只能说是其他的工作压力导致大家的选择偏向了公职。
译Dynamo Amazon's Highly Available Key-value Store
转自arthurchiao.art /blog/amazon-dynamo-zh/ [译] [论文] Dynamo: Amazon’s Highly Available Key-value Store(SOSP 2007)39-49 minutes Published at 2019-07-06 | Last Update 2019-07-06 译者序本文翻译自 2007 年 Amazon 的分布式存储经典论文:Dynamo: Amazon’s Highly Available Key-value Store (PDF)。 标题直译为:《Dynamo:Amazon 的高可用键值仓库(存储)》。 对排版做了一些调整,以更适合 web 阅读。 Dynamo 是 Amazon 的高可用分布式键值存储(key/value storage)系统。这篇论文发表 的时候(2007)它还只是一个内部服务,现在(改名为 DynamoDB)已经发展成 AWS 最核心 的存储产品(服务)之一,与 S3 等并列。据了解,国内某一线大厂的公有云键值 存储服务,也是参考这篇文章设计和实现的。 现在提到键值...
redis哨兵sentinels
哨兵SentinelSentinel节点本质上是一个特殊的Redis节点 它可以监视任意多个主服务器以及这些主服务器属下的所有从服务器,并在被监视的主服务器进人下线状态时(根据ping的时间间隔判断是否是下线了), 自动将下线主服务器属下的某个从服务器升级为新的主服务器, 然后由新的主服务器代替已下线的主服务器继续处理命令请求 当 serverl 的下线时长超过用户设定的下线时长上限时, Sentinel 系统就会对server1 执行故障转移操作: 首先, Sentinel 系统会挑选 server1属下的其中一个从服务器, 并将这个被选中的从服务器升级为新的主服务器。 之后, Sentinel 系统会向 serverl 属下的所有从服务器发送新的复制指令, 让它们成为新的主服务器的从服务器, 当所有从服务器都开始复制新的主服务器时, 故障转移操作执行完毕。 另外, Sentinel 还会继续监视已下线的 serverl, 并在它重新上线时, 将它设置为新的主服务器的从服务器。 网络连接每个Sentinel实例会维护与所监测的主从实例之间的两个连接,分别是命令连...
