规划结构化
基础结构 LongRangePlan.xmind
操作系统导论 Three Easy Pieces
前言 本书的目的是厘清操作系统的发展脉络。有助于学生了解过去是什么、现在是什么、将来是什么。 无论如何,在试图解决问题时,我们首先要说明最重要的问题是什么。我们在书中明确提出关键问题(crux of the problem),并通过本书其余部分提出的技术、算法和思想来解决。 在许多地方,我们将通过显示一段时间内的行为来解释系统的工作原理。这些时间线(timeline)是理解的本质。例如,从页故障出发,我们可以理解虚拟内存的工作方式。 本书采用最古老的教学方法之一-对话(dialogue)。 我们应当首先呈现抽象,然后介绍具体。抽象是计算机科学各个方面的基础,因此它在操作系统中也是必不可少的。 作业模拟程序具有以下特点,通过提供不同的随机种子,产生近乎无限的问题。 本书使用 xv6 操作系统来编程。 学生很难理解并发问题是如何产生的,也很难理解人们试图解决它的原因。
数据中心
如何分层 按照在线-离线、对时延的要求,可以把数据存储分为: L0:T+0 L1:T+0 L2:T+1 其中 L1 是 L0 的穿透防御层,但延时会稍微更高。L0 是 10ms 查询层,不是全量数据。L1 是 100ms 查询层,是全量数据,L0 和 L1 都支持轻度分析操作。 L2 是全量数据,可以支持复杂大型查询。 设计 L 的分层要考虑数据的: 是否全量:数据量大小,这要求我们关注我们技术选型的 scale 能力,特别是数据线性增长以后,性能是否线性增长。 是否全维度:这要求我们关注我们技术选型的 schema 建模能力。 延时要求:这要求我们关注我们技术选型的查询执行模型。 查询复杂程度要求:这需要关注我们的技术选型支持的查询语言。 如何迁移数据 数据迁移问题 = 制造新从库问题 + 读写切换的问题 寻找一个时间点,使用备份进行冷启动,然后通过类似 binlog 制造新从库的机制进行追踪(对于 update 和 delete,都可以设置简单的幂等机制,insert 的幂等要防异常)。 框架进行数据校验:主键范围查询,md5 查询。因为数据迁移总是非事务性的最终一致性...
ElasticSearch 总结
ES 思维导图 ElasticSearch总结.xmind %% 完整的ES实战决策图 - 基于Leads系统真实案例 flowchart TD %% 字段设计部分 Start([开始ES字段设计]) --> FieldType{需要索引该字段吗?} FieldType -->|否| Skip[不索引该字段] FieldType -->|是| SearchType{需要分词搜索吗?} SearchType -->|是| TextType[text类型] SearchType -->|否| KeywordType[keyword类型] TextType --> TextConfig[配置text字段] TextConfig --> TextAnalyzer{选择分词器} TextAnalyzer -->|中文| IKAnalyzer[ik_max_word] Tex...
如何画架构图
前言 有意义且具备一致性(coherence)的架构图有助于为不同的利益相关者(stakeholder)澄清(illustrate)事实,并达成共识-反之,图表杂乱无章。 有意义的图表胜过建模(建模指的是With modelling, you're building up a non-visual model of something (e.g. the software architecture of a software system), and then creating different views (e.g. diagrams) on top of that model. ),在架构沟通上,visualization 胜过千言万语。 一致性要求我们有足够好的指导原则,让我们知道标准的图元是什么。 “架构是一项复杂的工作,只使用单个图表来表示架构很容易造成莫名其妙的语义混乱”。 在同一个架构图里添加不同层级的抽象可能会导致冲突的出现,因为它们是从不同的角度描述问题的。 应该在架构图旁边加上图例(legend),沟通者应该懂得图元(key)是什么。key 和 legen...
MySQL 存储引擎 InnoDB 技术内幕
这本书的电子版的一个博客。 InnoDB.xmind 前言 MySQL 是处理海量数据(尤其 是OLTP 写入)时仍能获得最佳性能的最佳选择之一,它的 CPU 效率可能其他任何基于磁盘的关系型数据库所不能匹敌的-但它应该能够匹敌 Redis。 Think Different 而不是 Think Differently,这意味着要思考不同的东西,而不只是思考不同的方式。 不要相信网上的传言,去做测试,根据自己的实践做决定。很多伟大的作者写的伟大的书里面,关于性能的说法都来源于他们个人的随身电脑的直观测试。 change buffer 是 inert buffer 的升级版本。 MySQL 体系结构和存储引擎 定义数据库和实例 数据库:物理操作系统文件或其他形式文件类型的集合。 实例:操作系统后台进程(线程和一堆共享内存)。 存储引擎:基于表而不是基于库的,所以一个库可以有不同的表使用不同的存储引擎。 InnoDB 将数据存储在逻辑的表空间中,这个表空间就像黑盒一样。 存储引擎不一定需要事务。比如没有 ETL 的操作,单纯的查询操作不需要考虑并发控制问题,不需要产生一致性视图。...
数据库容灾体系的演变
什么是容灾 备份的分类 备份方式 说明 逻辑备份 数据库对象级备份,备份内容是表、索引、存储过程等数据库对象,如MySQL mysqldump、Oracle exp/imp。 物理备份 数据库文件级备份,备份内容是操作系统上数据库文件,如MySQL XtraBackup、Oracle RMAN。 快照备份 基于快照技术获取指定数据集合的一个完全可用拷贝,随后可以选择仅在本机上维护快照,或者对快照进行数据跨机备份,如文件系统Veritas File System,卷管理器Linux LVM,存储子系统NetApp NAS。 规划 要结合业务,产生多维立体的解决方案。
从美元周期看大国经济战
FROM: https://mp.weixin.qq.com/s/0gusyuzn3TFuXjtuTcOAog https://mp.weixin.qq.com/s?__biz=MzU4OTQyNTAyNw==&mid=2247485531&idx=1&sn=2b835832db2b44cea3f6aad657b9bcdd 一个新的世界秩序通常在国家内部(通过革命)和国家之间(通过战争)发生根本变化之后开始。通常在爆发战争(热战)之前,通常会有一场经济战争。 严重的经济衰退、巨大的贫富差距、巨额债务以及无效的货币政策,构成了一种易燃的组合,通常会导致国家内部的重大冲突和革命性变革。 在大冲突时期有一种趋势,即走向更专制的领导,导致原有世界秩序混乱。 典型的萧条期现象 专制、民粹主义和民族主义:在经济极度紧张的时期,转向更加专制、民粹主义和民族主义的领导人和政策是很典型的,因为人们希望强有力的领导能给混乱带来秩序,并强有力地对付外部敌人。 扩张的货币政策:通货紧缩或者萧条是由于债务人手中没有足够的钱来偿还债务而导致的危机。这不可避免地...
MySQL 压缩
压缩算法 Table Compression InnoDB存储引擎是按照索引组织表(index-organized table)的方式组织数据的,数据存储在B-tree索引(clustered index/primary key & secondary index)中。Table Compression是针对整个表,和相关索引进行的,而不是单独的数据行。 B-tree页经常被更新,InnoDB会尽量减少B-tree节点的分裂(split),减少不必要的压缩和解压页。为此,InnoDB在每个B-tree页中都预留了未压缩的“modification log”空间,记录页的变更。对于update和insert的数据量较小时,会先写入“modification log”,不用立刻重构整个页。当“modification log”空间用完了,InnoDB解压该页,应用变更(apply),然后重新压缩。如果压缩失败,该B-tree叶节点就要进行分裂了。在写入量比较大的场景,比如某些OLTP应用,为了避免频繁压缩失败,InnoDB会在页中保留一些额外空间(padding),在“mod...
分库分表
业界方案问题 垂直拆分 优点:降低负载,提高可用性 缺点: 无法降低单表数据量 不能无限扩容 存在单点故障 join 等多表操作受限 存在跨库事务 水平拆分 优点: 降低单表数据量 理论上可无限扩容(NoSQL 通常采取这种方案) 不存在单点故障 缺点: join 等多表操作进一步受限 存在跨库事务 扩容成本高 如何分 hash 分表 常见的分表方案。 range 分表 建立时间 range,按 range 分表。 混合分表 先 hash,再 range。 怎么查 SQL 路由(route)和结果合并(merge) 多表 join 多维度查询 跨库事务 路由要定义 dsl,用语言解析表达式。 做广播表的查询的结果就是一张逻辑表查询转成多张表查询。 如果要做无分表键的查询,不如做影子表做侧维度。但影子表依赖于数据迁移服务。数据迁移服务的存在在日常的数据库运维中非常重要,它可以支持任意的 etl 的形式来同步异构数据。但这会带来成本上的坑。