Giter Club home page Giter Club logo

awesome's Issues

Paper 阅读记录

以后的 paper 阅读记录都放在这个 issue 下,尽量每篇 paper 都输出一篇笔记或者一段话做总结,优秀、经典的论文要参考这篇文章( 一起读 paper )的方式来阅读。

下面有几个分布式相关的论文列表:

  1. 这有个不错的系列:https://www.cnblogs.com/baiboy/p/100p.html
  2. 知乎上有个不错的系列:https://zhuanlan.zhihu.com/db-readings
  3. 这里还有一个机器学习的经典论文:https://github.com/LuckyZXL2016/Machine-Learning-Papers
  4. 分布式系统相关论文:https://www.cnblogs.com/superf0sh/p/5754283.html
  5. 读完这100篇论文 就能成大数据高手
  6. Readings in Streaming Systems
  7. My Top 10 Deep RL Papers of 2019
  8. 分布式系统领域经典论文翻译集深度探索分布式理论经典论文
  9. 计算机史上最重要的 35 篇论文
  10. A Distributed Systems Reading List

分布式系统的一些课程:

2020 技术博客记录

今年打算,每个月至少输出一篇技术博客,争取超额完成目标,重点会涉及下面几块:

  1. Flink 系列文章;
  2. Calcite 系列文章;
  3. 论文阅读总结;
  4. K8s 及云原生相关;
  5. 分布式相关。

Kafka 源码分析系列

  • 内容:这近一年的时间,对 Kafka 的源码看了很多,但是并没有系统地去总结,希望自己在未来的半年到一年里能完成对 Kafka 源码分析的文章;
  • 指定一个小目标:每两周输出一篇 Kafka 分析的相关文章。(2017.6.11立)
  • 每篇文章都要用一张图表现出来(从第三篇开始,2017.7.17)。

这个系列以 0.10.2.0 为例(最新的版本 2.0.0 增加了事务性、重构了 Controller,代码变动很大)

Kafka 事务性实现机制

这里有一些关于 Kafka New Feature 的讨论,也是非常值得深入的:

  1. producer 端如何实现不重(1.0.0代码)KIP-98 - Exactly Once Delivery and Transactional Messaging
  2. kafka 能否做到完全不丢(腾讯开源的一个 mq:微信开源PhxQueue:高可用、高可靠、高性能的分布式队列),或者有没有什么情况下kafka 即使做了不丢的设置,还是会有丢失的风险?

这个issue主要讨论kafka事务性(包括不重不丢的机制)

餐馆米其林排名

想法来源

个人一直比较喜欢听《晓松奇谈》,有几期讲到日本料理,中间提到过日本一些入选米其林的料理店,但在网上搜了一下发现大陆入选米其林的餐馆少之又少,而且目前只有上海加入米其林评选。

每当到一个地方去玩时,吃货们都会让当地人去推荐一些本地餐馆,或者在美团和点评上去找一些评价较好的餐馆,但是美团、点评上的餐馆即使按好评优先得到的排名依然不尽如人意。

因此,我就想写一个小程序,首先抓去美团点评上的评论数据,根据一个模型来得到这个餐馆的分数,根据分数获取一些餐馆米其林排名。

技术准备

  • 爬虫
  • 机器学习算法

通过源码看 Kafka 的容错是如何设计的

在对 Kafka 的源码整体有一定的深入理解后,立下这个 issue,主要是想通过源码来学习 Kafka 是如何做容错设计,Kafka 这个系统在开源系统中稳定性是口碑非常高的,在代码页随时可以看到对各种异常的处理,这一点是很值得学习的。

  • 看下各个组件是如何进行相应的容错设计的,对于一些比较大容错实现,要看下系统为什么这么设计,有没有更好的实现方案;

YANR 学习

  • 分布式调度系统是大数据场景下重要的组成部分,而 YARN 又是其中最优秀的代表,当然现在 K8s 也非常热,但是在大数据场景下,目前还是 yarn 主流,但未来这快不排除会被 k8s 挤占;

本 issue 主要是记录关于 Yarn 学习的内容

第一阶段:基本内容学习

计划梳理三篇相应的博客:

  1. Yarn 基本架构学习,YARN 架构学习总结,完成时间:2018-09-01;
  2. app on yarn 如何实现,以 Flink on yarn 代码实现为例;
  3. cgroup 实现及应用;

第二阶段:学习公司 Yarn 团队的 CaseStudy

深入了解 Yarn 在生产环境遇到过什么问题、以及相应的解决方案,有条件的梳理出相应的博客(抽象出来)。

预计时间:2018-08-28 ~ 2018-09-30(DONE,实际完成时间:2018-09-24);

第三阶段:学习 Kubernetes

  • 学习 Docker 的基本概念及架构;
  • 学习 Kubernetes 的基本概念及架构;

预计:2018-09-20~2018-10-10

读书记录

去年读了 11 本非技术类的书,之前说的读书笔记,也只完成了 3 篇,2020 年要加油,还是要多读一些书,正所谓 读万卷书,行万里路

2020 年读书记录

今年看了 14 本书,看书的时间比以前少了很多。

2021 读书记录

Flink 源码分析

近段时间会花时间研究 Flink 源码实现相关的内容,这个 issue 会记录相关的总结文章(2019.3.19立,计划半年左右把 core、runtime、table&sql 部分的内容梳理完,这个系列的文章大概会叫做【Flink 原理与实现分析】)。

最近半年工作比较忙,这个系列一直没有开始,上周 Flink 1.9 正式发布了,后面会以 Flink 1.9 的代码为例,整理一下 Flink 相关的内容,计划元旦前把几个核心的模块整理完。--- 2019.8.25 立

以 Apache Flink 1.9 的代码为例,来系统全面地分析一些 Flink 的实现,虽然 Google 上已经可以搜到很多 Flink 的内容,但是我还是准备自己再开一个系列,出发点有两点:

  1. 自己更好地理解这个系统,别人梳理再好,也不如自己梳理一遍,这个过程肯定会让自己更好地掌握这套系统;
  2. 给其他想学习 Flink 的同学多个参考,不同人写的博客他们的理解是不同的,大家可以多看一些,可以更好、更快地熟悉这个系统。

之前写过 Kafka 源码分析的系列博客,说实话,这个系列写得整体并不是很满意,其他同学看的时候并不是那么容易理解,所以对于 Flink 这个系列文章还是期望能完成得更好一些。对于这个系列的博客,希望做到以下几点:

  1. 文章的质量的把控:逻辑性、叙述得准确性,最好每篇文章能单独成一个模块,既能让初学者可以很清晰看明白这篇文章要讲述的内容,又要有一定的深度(深入分析是必不可少的,不能蜻蜓点水),让进阶者也能有一定的收获;
  2. 单篇文章篇幅不要太长,如果太长,最好拆成多篇文章来讲述;
  3. 图 & 示例 & 思考:尽量多用图来表达,可以举示例的地方举出一些示例,每篇文章最后总结也要多一些思考总结、多想一些为什么(这个是要解决什么问题、你来解决的话你会怎么解决这个问题、Flink 在实现的时候为什么要这么设计、这个代码实现有更好的实现方式或者有没有什么可借鉴的地方);
    最后,希望自己能很好地完成这个系列,希望能在 20 年前完成这个系统,到现在也就不到三个月了,加油,挑战一下试试~ -- 2019.10.20 立

2022 Plan

最近几年确实变动得懒惰了一些,连续两年没有写年终总结了,等到今年年底的时候再写吧,在这里简单列一些今年的计划:

工作

工作这块依然是今年的重中之重,关于工作,个人是这么看的,在工作中需要锻炼出自己的职业化以及专业化能力,这两个维度对当前阶段的自己是比较重要的、是今年需要有所突破的方向,今年也打算给自己下面的这些年度目标:

  1. 在工作上的软能力上:
    1. 关于技术管理这块,今年需要在思维和认知上做出突破,逐步改变自己偏执行的思维和行为模式,向技术管理者的思维模式转变,对整个小方向的现在和未来负责;
    2. 平时还需要多思考、多总结,现在的自己在面对一些项目时,整体的思考还有所欠缺的、思考的深度也不够,这样就会导致做出的决策大概率不是最优选择,现在的自己很多情况都需要 leader 去帮助,这块自己需要逐渐弥补短板,正如《遥远的救世主》里所说的,”自己悟到的才是自己的“,日常工作中,还要跳出自己所处的位置去思考问题,可能最开始会比较花时间,但这一步是必须要迈过去的;
    3. 关于工作中一些规划和目标这里就不多说了;
  2. 在技术上:
    1. 需要挤出时间多参与社区, 自己需要在团队中做出表率;
    2. 在大数据这块,针对最近一两年比较热门的技术热点,投入一些时间了解和调研,输出一些文章和博客,这里暂时把目标设置为 10 篇。

生活

生活上,就不多说了,主要是期望家人朋友健健康康,宝贝女生健健康康长大。

个人兴趣

运动 & 户外

身体是革命的本钱,平时工作比较繁忙,这就更需要加强运动锻炼、提高免疫力和身体素质了。
户外,是自己的一个个人兴趣爱好,今年还是期望再去看看雪山、湖泊、银河星空,具体到时间再看安排了。

给自己定几个小目标:

  1. 19 年的时候跑了 800km,21 年跑了 500km,今年的目标继续放在 800km,跑步基本上是自己唯一能一直坚持的运动了,它对时间和场所都没有要求;
  2. 户外:今年计划去贡嘎徒步走一下环线或七藏沟,具体就看时间了,当然也有可能两个都会去;
  3. 哈哈,体重这块,定个小目标,BMI 降到正常值 24 以下;

写作/博客 & 摄影

上面也提到了一部分,这里简单列出一些计划:

  1. 关于技术的总结和调研类的文章至少输出 10 篇以上(可以是论文或系统某个模块);
  2. 摄影这块,这几年基本上没有什么投入了,今年如果有机会,专攻学习一下星空/银河拍摄,如果有机会能经常出去走走的话。

《从Paxos到Zookeeper分布式一致性原理与实践》阅读

ZooKeeper 的应用非常广泛,去年写过《ZooKeeper 学习笔记》的文章,但是并未涉及 ZooKeeper 内部机制的分析,未来 ZooKeeper 有以下几块内容需要学习:

  1. Zookeeper 的一致性协议——zab 协议、2PC、Paxos 协议(包括 leader 选举、数据同步之类的内容);
  2. ZooKeeper 的使用与应用;
  3. Zookeeper watcher 机制的实现;
  4. Zookeeper 分布式锁的实现;
  5. Zookeeper 技术内幕;
  6. ZooKeeper 运维;

在学习的过程中,主要以官方文档及《从Paxos到Zookeeper分布式一致性原理与实践》这本书为参考,按照这几个部分总结几篇文章,计划完成时间2017.10.31。

Kafka 目录检测

这样一个场景:如果 kafka 的一台 broker 宕机了,对其数据迁移完成后,现在该机器修复了,需要重新加入到 Kafka Cluster 中,但其目录下还有一些旧的 partition 目录,而 Kafka 不会自动删除这些并不使用的目录。

  • 查看源码如何实现;
  • 如果没实现,向官网提交一个 pr;

团队分享总结

跟几个朋友组建一个学习小组,大概每两周进行分享一次,目前主要集中在 Kafka、Spark Streaming、Flink、es 方向,听完分享后,应该自己操作实践一下,总结一下,这个 issue 用于总结相关的内容。

HDFS 学习

  • 背景:作为大数据分布式存储部分最重要的内容,这块还是值得深入研究下,至少需要深入学习一下内部的实现原理、在应用过程中遇到过什么问题已经其对应的解决方案。
  • 学习步骤:
  1. 学习内部的实现原理,总结两到三篇博客;
  2. 结合公司 HDFS 团队在实践中遇到的 case,深入了解一下 HDFS 在实践中会遇到什么问题,以及在业界其对应的解决方案是什么?
  • 计划时间:2018.6.1 - 2018.8.30,两个月时间。

Epoll bug 问题

Java NIO有著名的 epoll bug

  • 现象:导致 Selector 空轮询,最终导致 CPU 100%,JDK1.7依然没有解决这个问题,只是降低了这个问题发生概率;
  • 目的
  1. 研究 Kafka 是如何解决这个问题;
  2. 研究 Netty 是如何解决这个问题;
  • 输出:一篇Wiki,也可以组内做一个分享。

【Kafka Streams】实践与学习

计算是数据平台核心模块,这也是 Kafka 目前正在发力的地方,因为公司规模比较大,目前并不会去使用 Kafka Streams,但是这并不意味不需要去学习这块的内容,这个 issue 主要是为应用和学习 Kafka Steams 为开,再对 Kafka Steams 有了相应的深入学习之后,才能去更好地学习 KSQL 的相关内容(立于2018-06-09)。

2019 paper阅读记录

Paper阅读要按照 如何阅读paper 的方法去阅读,每次要输出对应的文章,这个issue将会记录今年的Paper阅读情况。

序号 Paper Paper阅读完成时间 输出文章 备注
1 Apache Calcite: A Foundational Framework for Optimized Query Processing Over Heterogeneous Data Sources 2019.2
2 The Dataflow Model: A Practical Approach to Balancing Correctness, Latency, and Cost in Massive-Scale, Unbounded, Out-of-Order Data Processing 本月计划这篇
3 Lightweight Asynchronous Snapshots for Distributed Dataflows 2019.10.12 Paper 阅读 Flink Snapshot 算法的文章
4 Real-Time Machine Learning: The Missing Pieces 2019.10.18 Paper 阅读
5 distributed snapshots determining global states of distributed systems 2019.10.30 Paper 阅读 Chandy-Lamport 算法

【为什么这么设计】的系列文章

作为技术人员,对技术还是要有一定的信仰,这里准备开一个新的系列 —— 为什么这么设计,开这个系列的原因有两个:

  1. 是参考 为什么这么设计系列文章 ,个人感觉这个系列还是相当不错的,针对某个问题,追根究底,并且要能够给大家讲清楚;
  2. 是通过这个系列,对于平时常见的、具体的某个问题,做一下总结思考,很多设计和解决方案都是相通的。

期望这个系列,每个月能至少输出一篇文章。

学习和总结 Java NIO 部分内容

  • 背景:Kafka 在其实现机制上,client 及 server 端使用 selector 模型,要想对 kafka 进行更加深入的理解,需要先对 Java NIO 模型有较深的理解。
  • 输出:一篇或多篇关于 Java NIO 的总结博客。

2017 读书更新

2017年读书记录

1月份

2月记录

3月记录

  • 《你一定爱读的极简欧洲史》,欧洲简史,20170315~20170402;

4月记录

7月读书记录

  • 《未来简史》,20170722;
  • 《三体1》,201707;
  • 《三体2》,201717;

8月读书记录

  • 《智能时代》;

10月读书记录

  • 《三体3》;
  • 《信息简史》;
  • 《解忧杂货店》;

11月读书记录

  • 《走出帝制》20170412~20171112;
  • 《白夜行》;
  • 《中产阶级如何保护自己的财富》;

12月读书更新

Calcite 学习与总结

近端因为看 Flink SQL 相关,所以深入看了一下 Calcite 相关的内容,还好公司有一些关于 Calcite 的资料,自己在看的时候少走了很多弯路,而目前外网上关于 Calcite 的资料并不多,准备把自己看的内容整理一下,与大家共同学习。

计划整理的文章有:

  1. Calcite 的介绍(基本架构、流程、特性等讲述),计划:2019.3.10;
  2. Calcite 流程详解(会从解析、验证、优化器详细讲述),计划:2019.3.10,见 Apache Calcite 处理流程详解(一),完成时间:2019.3.7,包括1、2两个部分;
  3. Calcite 的两种 Planner:HepPlanner 和 VolcanoPlanner,重点关注 Calcite 的优化器部分,计划:2019.3.24,见 Apache Calcite 优化器详解(二),完成时间:2019.3.16;
  4. Rule 详解:主要介绍如何实现一个 Rule、以及 Rule 相关的基本内容(可以顺便梳理一下 Calciter 常用的 Rules);
  5. Catalog 详解:主要介绍 Schema 注册相关的内容,配合 Flink 如何利用 Calcite 的 Catalog 来讲解;
  6. Javacc 使用详解:javacc 语法及应用,如何在 Calcite 中添加一个关键字(并实现相应的功能)。

2018 读书记录

1 月份

  • 《人为什么活着》,王小波,201801;
  • 《分身》,东野圭吾,201801;

2月

  • 《幻夜》,东野圭吾,201802;

3月

  • 《嫌疑人 X 的现身》,201803;

四月

五月

六月

八月

九月

十一月

2019 读书记录

1月

2月

3月

4月

7月

8月

10 月

11 月

Kafka 时间戳问题

简答描述一下问题:
kafka topic 中的一个 partition,可以由来自多个 client 来写入。假设这个 topic 的时间戳索引设置的是 create time,在这个 topic 的 prodcuer client 中,有一个 client 网络延迟非常大,这种情况下,可能会遇到当前 partition 时间戳索引记录到100,下面突然来了一个时间戳为90的数据,这时候如果是直接忽略,那么可能导致 server 记录时间戳与 offset 对应不准确,这种情况应该怎么处理。

分布式理论学习

这里重点还是关注分布式系统的基础理论学习,要深入理解,如果可以的话,最好能够自己用代码实现一下。

一致性协议

这里也会涉及到分布式存储的内容。

  1. CAP;
  2. 2PC 和3PC,分布式系统的一致性协议之 2PC 和 3PC
  3. raft 协议;
  4. zab 协议;
  5. 分布式一致性协议 Paxos;

分布式快照算法

  1. Flink 的 Chandy-Lamport 算法;

大数据数据处理架构

  1. 大数据的:Lambda、DataFlow、Kappa 架构学习;

《Computer System》学习

计划每半年左右定一个专题去学习,借鉴于这篇文章技术大牛养成指南,一篇不鸡汤的成功学实践的方法论,从今年的9.11到12.31准备去学习操作系统这个方向的内容,这也是自己年初给自己定的计划。

理论学习

工作中,面对更多的是应用场景,业务来驱动技术,此时理论知识的匮乏就会对技术有很大的限制,这也是很多公司招人的时候为什么喜欢招一些理论很扎实和广泛的学生,以后在工作可能接受到理论理论知识的机会会越来越少,所以给自己定一个任务,督促自己多学习一些基本理论与方法论,突破一些基本的限制。

要求:

  1. 前期每个月要看一篇高水平的英文论文,输出一篇论文的总结;
  2. 每两个月要看一本技术方面的书籍,每个月要输出两篇技术类书籍的读书笔记。

开始时间:2017.6.11.

  • 论文参考
  1. 读完这100篇论文 就能成大数据高手;
  2. Readings in Streaming Systems.

TiDB 相关内容学习

BookKeeper 学习与调研

近段 Pulsar 在业内受到很多关注,Pulsar 与 Kafka 最核心的区别还是在于底层的存储层实现不同,Pulsar 使用的 BookKeeper,准备花2-4周时间对 BookKeeper 做一下相应的学习与调研,需要输出的文章:

  1. BookKeeper 集群搭建与简单使用(参考官方文档,并实践相应的示例),计划完成时间:2018-10-14;
  2. BookKeeper 架构实现原理(参考论文与官方文档,论文及官方文档很多细节问题并没有说明),计划完成时间:2018-10-21;
  3. 关于分布式存储中的核心问题(如:一致性、容错、分区等),BookKeeper 是如何做的?有什么优缺点,计划完成时间:2018-10-31。

准备2和3放在一起,总计一篇 BK 内核实现解析的文章。

paper1:MapReduce vs. Spark for Large Scale Data Analytics

  • 目的:
  1. 更深入一些了解学习 MapReduce 与 Spark 的区别;
  2. 学习和思考作者写论文叙述流程、实验的设计方法以及作者如何去找到一个可切入的点;
  3. 训练英语阅读能力。
  • 输出:
  1. 输出一篇这篇论文的阅读笔记;
  • 时间:
  1. 截至到2017.6月底。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.