左耳听风 -- 性能设计
缓存 异步处理 数据库扩展 秒杀 边缘计算 参考资料左耳听风
左耳听风 -- 管理设计
分布式锁 配置中心 边车模式 Service Mash 网关模式 部署升级策略 参考资料左耳听风
左耳听风 -- 弹力设计
概述 隔离设计 异步通信设计 幂等性设计 服务状态 补偿事务 重试设计 熔断设计 限流设计 降级设计 总结 参考资料左耳听风
左耳听风 -- 分布式系统架构
冰与火 难点 技术栈 全栈监控 服务调度 流量和数据调度 PaaS平台的本质 经典资料 参考资料左耳听风
左耳听风 -- 技术基础
技术变现 技术领导力 Go + Docker 学习 + 职业 Leader 时间管理 故障处理 表象 + 本质 参考资料左耳听风
计算机组成 -- Disruptor
缓存行填充缓存行大小1234567$ sysctl -a | grep -E 'cacheline|cachesize'hw.cachesize: 17179869184 32768 262144 6291456 0 0 0 0 0 0hw.cachelinesize: 64hw.l1icachesize: 32768hw.l1dcachesize: 32768hw.l2cachesize: 262144hw.l3cachesize: 6291456 RingBufferPad1234abstract class RingBufferPad{ protected long p1, p2, p3, p4, p5, p6, p7;} 变量p1~p7本身没有实际意义,只能用于缓存行填充,为了尽可能地用上CPU Cache 访问CPU里的L1 Cache或者L2 Cache,访问延时是内存的1/15乃至1/100(内存的访问速度,是远远慢于CPU Cache的) 因此,为了追求极限性能,需要尽可能地从CPU Cache里面读取数据 C...
计算机组成 -- DMP
DMP系统 DMP(Data Management Platform,数据管理平台) DMP系统广泛应用在互联网的广告定向,个性化推荐 DMP系统会通过处理海量的互联网访问数据以及机器学习算法,给用户标注上各种各样的标签 然后在做个性化推荐和广告投放的时候,再利用这些标签,去做实际的广告排序、推荐等工作 对于外部使用DMP的系统或者用户来说,可以简单地把DMP看成一个Key-Value数据库 对Key-Value系统的预期,以广告系统为案例 低响应时间 一般的广告系统留给整个广告投放决策的时间大概是10ms 因此对于访问DMP系统获取用户数据,预期的响应时间都在1ms以内 高可用性 DMP系统常用于广告系统,如果DMP系统出问题,意味着在不可用的时间内,整个广告收入是没有的 因此,对于可用性的追求是没有上限的 高并发 如果每天要响应100亿次广告请求,QPS大概是12K 海量数据 如果有10亿个Key,每个用户有500个标签,标签有对应的分数 标签和分数都用4 Bytes的整数来表示,总共大概需要4TB的数据 低成本 广告系统的收入通常用CPM(Cost Per Mille,千次曝光...
计算机组成 -- DMA
背景 无论IO速度如何提升,比起CPU,还是太慢,SSD的IOPS可以达到2W,但CPU的主频有2GHz 对于IO操作,都是由CPU发出对应的指令,然后等待IO设备完成操作后返回,CPU有大量的时间都是在等待IO设备完成操作 在很多时候,CPU的等待是没有太多的实际意义的 对于IO设备的大量操作,其实都只是把内存里面的数据,传输到IO设备而已,此时CPU只是在傻等 当传输的数据量比较大的时候,如大文件复制,如果所有数据都要经过CPU,实在有点太浪费时间 因此发明了DMA技术,即直接内存访问(Direct Memory Access),来减少CPU等待的时间 协处理器 本质上,DMA技术就是在主板上一块独立的芯片 在进行内存和IO设备的数据传输的时候,不再通过CPU来传输数据 而直接通过DMA控制器(DMA Controller,DMAC),其实是一个协处理器(Co-Processor) DMAC最有价值的地方:当要传输的数据特别大,速度特别快,或者传输的数据特别小、速度特别慢的时候 用千兆网卡或者硬盘传输大量数据的时候,如果都用CPU来搬运的话,肯定忙不过来,可以选择DMAC 当数据传...
计算机组成 -- SSD
对比 访问类型 机械硬盘(HDD) 固态硬盘(SSD) 随机读 慢 非常快 随机写 慢 快 顺序写 快 非常快 耐用性(重复擦写) 非常好 差 读写原理 CPU Cache用的SRAM是用一个电容来存放一个比特的数据 对于SSD硬盘,由一个电容加上一个电压计组合在一起,就可以记录一个或多个比特 分类 SLC:Single-Level Cell MLC:Multi-Level Cell TLC:Triple-Level Cell QLC:Quad-Level Cell QLC 想要表示15个不同的电压,充电和读取的时候,对精度的要求就会更高,这会导致充电和读取的时候更慢 QLC的SSD的读写速度要比SLC慢上好几倍 PE擦写问题 控制电路 常用的是SATA或者PCI Express接口,里面有一个很重要的模块:FTL(Flash-Translation Layer),即内存转换层 FTL是SSD的核心模块,SSD性能的好坏很大程度上取决于FTL的算法好不好 实际的IO设备 新的大容量SSD都是3D封装的,即由很多裸片(Die)叠在一起(跟HDD有点类似)...
计算机组成 -- HDD
物理构造一块机械硬盘由盘面、磁头、悬臂三个部件组成 盘面 盘面(Disk Platter)是我们实际存储数据的盘片 盘面本身通常是用铝、玻璃或者陶瓷这样的材质去做成光滑盘片,然后在盘面上有一层磁性的涂层,数据就存储在磁性的涂层上 盘面中间有一个受电机控制的转轴(控制盘面去旋转),转速:RPM(Rotations Per Minute) 磁头 通过磁头(Drive Head),从盘面上读取数据,然后再通过电路信号传输给控制电路和接口,再到总线上 通常,一个盘面上会有两个磁头,分别是盘面的正反面,盘面在正反面都有对应的磁性涂层来存储数据 一块硬盘不会只有一个盘面,而且上下堆叠了很多个盘面,各个盘面之间是平行的,每个盘面的正反两面都有对应的磁头 悬臂 悬臂(Actutor Arm)链接在磁头上,并且在一定范围内去把磁头定位到盘面的某个特定磁道(Track)上 一个盘面通常是圆形的,由很多同心圆组成,每个同心圆都是一个磁道,每个磁道都有编号 随机读写 一个磁道,会分成多个扇区(Sector),上下平行的盘面的相同扇区,组成一个柱面(Cylinder) 数据读取的步骤 把盘面旋转到某个位置,在这个位...












