2018年上半年

2018已经快过半,想总结一下,自己有哪些提高。

先把2017年补充一下:2017年年底,我之前做的东西被分配给其它组去做,我只剩下维护老流程的工作,无聊之下,想了想当前爬虫系统可改进的痛点(其实就是url输入kafka,爬虫从kafka消费,再把页面输出到kafka,而不是本地保存,再发往consumer,consumer这东西可以水平扩展,但是每次水平扩展都需要找运维同学手动改爬虫配置,有些恶心;并且,抓不同的页面,有不同的批次概念,每个批次对应一组consumer,线上批次非常多了,导致consumer也散布的到处都是,不好统一管理)。

我随后想到,kafka-->爬虫-->kafka,这种比较通用的结构估计早有人实现了,毕竟不是很难想到的结构。随后查了一下,发现github上果然后类似项目。随后开始了我走向分布式学习的路程。

在github上的项目,是kafka-->redis-->爬虫-->kafka的结构,之所以用redis,是因为redis有优先队列,并且很方便的为每个host设置一个队列。明显,单机的redis内存容易成瓶颈,于是我查看了redis-cluster,数据分片、主从备份、第一次对分布式系统有了模糊的认识。

后来老大看我周报写的简单,询问我情况,我告诉他我现在没什么事情做,并把我对爬虫改进的想法一并告诉他,起初他也挺感兴趣,但他和我思维不一致的地方在于,他的底线是不修改线上大规模爬虫(可能他认为这套爬虫已经用了很多年,不到迫不得已必须修改的境况),没有做这个改进。也让我对我们组彻底失去信心,2018年初我出去面试了。

看过redis-cluster后,又发现了ssdb,一个基于leveldb的,支持redis协议的磁盘数据库,还有类似的ledisdb,等等。很多kv都是在leveldb基础上的改进和封装。

2018年

2018年过完年,我去面试了一家中等规模的公司,结果惨不忍睹,项目一句话没问(人家不感兴趣),对照着掌握的技术,问了底层原理,比如结合yarn的资源管理,描述spark的启动流程;你会如何给分布式redis做分片,结合kafka的parition主从备份,大概描述一下paxos过程等,由于我基础掌握的太差了,有些问题没有系统,强化的学习,答得非常糟糕,面试后,我决定要把基础好好补一补。

回来后,先查了一下yarn是做什么的;又无意接触到了一本导论性质的大数据-分布式系统的书,网上评价很高,于是决定把这本书啃下来。这本书一上来就介绍基础的存储结构,主要有LSM和B-Tree,不得不说,LSM介绍的很浅显易懂,从一个最简单的log追加型kv,一步步优化到LSM结构,优化过程自然不唐突。比网上那些博客一上来就贴一张LSM结构图,容易理解的多。B-Tree由于主要用于关系数据库,就没有看。 (2018年下半年,抽空把B-tree也了解一下,LSM论文也要仔细看一遍,要做到能写一个LSM的轮子的地步,才算基本掌握)

你可能感兴趣的:(2018年上半年)