checkpoint源码分析 发表于 2021-09-08 | 分类于 大数据 字数统计: 4.4k | 阅读时长 ≈ 18 流程Flink分布式快照流程首先我们来看一下一个简单的Checkpoint的大致流程: 暂停处理新流入数据,将新数据缓存起来。 将算子子任务的本地状态数据拷贝到一个远程的持久化存储上。 继续处理新流入的数据,包括刚才缓存起来的数据。 Flink是在Chandy–Lamport算法[1]的基础上实 ... 阅读全文 »
pae选项 发表于 2021-09-07 | 分类于 操作系统 字数统计: 1.9k | 阅读时长 ≈ 6 [TOC] 32位系统通过物理地址扩展可以使用超过4Gib的物理内存,怎么做到的呢? 众所周知一个32位进程的虚拟地址最多能表示2^20个页,用虚拟地址里剩下的12bits表示4k的偏移量。其能表示的内存大小上限为2^20*2^12=2^32byte=4Gib 如实际物理内存恰好等于进程中能寻址的虚 ... 阅读全文 »
task_struct剖析 发表于 2021-09-07 | 分类于 操作系统 字数统计: 793 | 阅读时长 ≈ 2 [TOC] Linux 中task_struct和文件系统的关系。 mm指向进程的虚拟内存,files指向一个数组,装载进程打开文件的指针。ffiles【0】标准输入,files【1】标准输出,files【2】标准错误输出。如果需要其他资源,比如打开一个文件进行读写,就进行一个系统调用,让内核把文件 ... 阅读全文 »
Linux 64位和32位的区别 发表于 2021-09-07 | 分类于 操作系统 字数统计: 1.5k | 阅读时长 ≈ 5 地址映射 64位地址采用4层地址映射,如下图: pgd、pud、pmd、pte各占了9位,加上12位的页内index,共用了48位。即可管理的地址空间为2^48=256T。而在32位地址模式时,该值仅为2^32=4G。 另外64位地址时支持的物理内存最大为64T,见e820.c中MAX_ARCH_P ... 阅读全文 »
C++和Go相关 发表于 2021-09-04 | 分类于 其他 字数统计: 5.7k | 阅读时长 ≈ 19 C++链接 静态链接静态链接静态链接器以一组可重定位目标文件为输入,生成一个完全链接的可执行目标文件作为输出。链接器主要完成以下两个任务:符号解析:每个符号对应于一个函数、一个全局变量或一个静态变量,符号解析的目的是将每个符号引用与一个符号定义关联起来。重定位:链接器通过把每个符号定义与一个内存位置 ... 阅读全文 »
设计思路 发表于 2021-09-04 字数统计: 15.7k | 阅读时长 ≈ 63 作者:路人zhang链接:https://www.nowcoder.com/discuss/729493?type=0&order=7&pos=35&page=2&source_id=discuss_center_0_nctrack&channel=1009& ... 阅读全文 »
如何设计一个·排行榜 发表于 2021-09-02 字数统计: 5.9k | 阅读时长 ≈ 21 这是why哥的第89篇原创文章 前两天,有一个读者给我发了一张图片。 我问:发什么肾么事了? 于是有了这样的对话: 他发的图,就是微信运动步数排行榜的截图: 其实扯了这么多,这就是个常见的面试场景题:如何设计一个排行榜? 这个题吧,其实就是考你面试准备范围的广度,见过就会答,没见过…就难说了。 当然 ... 阅读全文 »
消息队列 发表于 2021-08-31 字数统计: 2.7k | 阅读时长 ≈ 9 消息队列 消息队列堆积?MQ消息堆积,一般都是由消费侧能力不足导致的。可能的原因如下: 生产侧流量暴涨,消费侧消费速度不变 生产侧流量不变,消费侧消费速度下降 针对原因1,可以通过横向扩容实例的方式来提升消费速度,解决积压问题; 针对原因2,横向扩容只能临时缓存消费积压问题,根本原因在于消费服务 ... 阅读全文 »
字节实习经历 发表于 2021-08-30 字数统计: 566 | 阅读时长 ≈ 2 [TOC] 线上线下表现不一致?1.查看日志方式1 通过日志查看:通过 LogID 查询调用链,查看上下游调用耗时,详细查看包括上游 call log 和下游 access log 上游 call log 在实例的 /opt/tiger/toutiao/log/rpc/ 路径下,日志中包含了: ... 阅读全文 »