存储——分布式存储底座
分布式存储底座包括分布式文件系统和分布式一致性KV存储。对外满足的条件 1. 提供数据可靠性,底座之上不需要担心数据损坏 2. 提供数据可用性,节点崩溃不影响数据读写 3. 集群级接口,多机节点可访问
分布式存储底座包括分布式文件系统和分布式一致性KV存储。对外满足的条件 1. 提供数据可靠性,底座之上不需要担心数据损坏 2. 提供数据可用性,节点崩溃不影响数据读写 3. 集群级接口,多机节点可访问
写完了代码第一件事是编译,编译失败只能根据编译器通知修改代码;编译通过了第二件事是跑UT,UT不过需要进行调试。调试包括debug和release包的调试,线上进程的运行问题有时候也需要调试,调试的主要方式是调试工具和日志(包括print大法)。为了发现问题,有时候还需要添加报警日志。
提高代码的健壮性,编译器、静态检查和格式化工具、调试、单元测试、日志等是开发必不可少的
缓存存放的是临时数据,相比主存,缓存往往速度更快,容量更小。
缓存往往是多级的,由内而外,cpu cache -> 内存 -> ssd -> hdd(单机) -> 服务器/多节点/oss/nas等
缓存需要淘汰,因此缓存往往由链表组成,根据LRU算法淘汰
只要有缓存就会有一致性问题
并发可分成并发对象和并发协调两部分。并发对象可以是进程、线程、协程、以及多机并发。并发协调包括锁(进程锁、线程锁、协程锁、分布式锁),信号,信号量,条件变量,通信队列等。
并发编程的三个特点是原子性、有序性、可见性。原子性要求写操作要么执行完要么不执行,不能中途执行一半被干扰,并发编程中需要保证所有操作都是原子的;完全要求顺序的程序无法并发,因此并发编程的特点是原子性+部分有序。可见性是针对并发读共享变量,如果并发对象之间读共享变量,就要维护共享变量的可见性,一个并发对象修改另一个并发对象可以看到。(如果只有并发写,只要考虑原子性和顺序性,不需要可见性)
并发编程是提高程序处理能力的重要手段,也是编程语言必备的能力。并发的对象是函数,函数作为任务被多个并发计算对象执行。
并发的单位可以是进程、线程和协程(用户态线程),并发需要保证的三个特点:原子性、顺序性和可见性。
映射是最重要的数据结构之一,动态数组也可以看做特殊的映射。映射的优势是,它的增删改查性能都很好。增->增加key,删->删除key,改->更改某key的vakue,查->给定key查询value。
本文介绍linux系统的监控工具和问题排查的一般步骤,文章大体内容