微信号:gh_19fa78de4260

介绍:专注分布式java中间件的源码设计

招募有志青年

2016-12-02 19:49 乒乓狂魔

0 初衷

现在有很多的技术交流群,很多的群都是这样的:

  • 1 经常扯淡

  • 2 很多伸手党

  • 3 一些道听途说的结论都拿来作为自己的观点

  • 4 技术交流的深度不够

花费了很多时间在群上,但是收获缺并不多。而想找到一个有深度的交流群,而不是一个问答群。希望如下:

  • 1 针对一个话题,感兴趣的人都能够进行深入研究后,然后再在一起相互探讨

  • 2 有很多处于相同阶段的志同道合的伙伴,大家都非常上进

而我就是这样的一个处在初级阶段的一个人,最近也在迷茫,该怎么去发展,想找同龄人一起交流。下面先简单谈谈我最近的粗浅感受,与君共勉

1 感受

1.1 深度和广度

有的人会告诉你要专一一点,不要什么都学。有时候你自己倒是想多补充补充广度,形成一个知识体系。

深度和广度其实有时候很难把控,可能你所谓的深度根本就不深。

我这个小白目前的想法是:

  • 广度:初始阶段,扩展扩展广度。如中间件、数据库、分布式领域。

    年内把这些东西的原理、源码粗略的搞清楚。能够融汇贯通,能够看到一些共性的东西,而不再把他们当做一个个孤立的软件来看待。很多设计都是相通的,很多问题是各个软件都会遇到的,如果你能总结出来,那么理解就会更加深入了。

    这个时间因人而异,勤奋和懒惰的差距当然很大。

    这个阶段还没到深入的地步,比如paxos论文你看懂了,但是真实落地到实际的生产系统又是一层挑战。比如你能看懂dubbo,不一定能自己写出来。

    这个阶段同时要加强自己的代码能力,为下个阶段做准备。

    • 基本的数据结构和算法

    • 通信:TCP/IP,NIO框架Netty、thrift,RPC中的dubbo

    • 消息队列:kafka、RocketMQ等

    • KV存储:redis、memcached

    • mysql innodb大概原理

    • 分布式系统理论与设计:CAP,看一些国外书籍

    • 分布式一致性:paxos、Raft、ZAB。ZooKeeper、etcd

    • google三大论文,HDFS、MapReduce、HBase、Spark等等

  • 深度:深入阶段,找到自己的感兴趣的方向,深入做下去,去面临现实中的各种挑战,去做出创新,如

    这个阶段当然需要专注在某个领域内,需要一定时间的积淀(当然我也没啥话语权,还没到这个阶段,只能这么粗略的认为)。

    • 消息队列,加入大厂的消息队列团队,真正去做出一个开源产品来

    • 分布式存储:如深入搞HBase,成为committer啥的

1.2 眼界

特别是我们这种普通程序员,如果局限在自己狭窄的范围,你可能放松对自己的要求。

比如学习ZooKeeper:

  • 有些人就会用用

  • 有些人看些文章了解其中的原理,自己咀嚼别人的知识

  • 有些人看看源码,自己主动获取知识,但处于一知半解的状态

  • 有些人源码看的更加深入一些,真正理解背后的设计,背后所面临的一致性问题

  • 有些人不仅仅局限于ZooKeeper,开始扩展到其他系统,也能解决其中的不足,有条件的话自己也能造轮子

所以提高自己对知识的要求,你做的还远远不足。

1.3 打好基础

  • 学好英语

    需要看国外大师的一些博客文章、各种paper。所以学好英语是必须过的一关。

  • 学好数据结构和算法

    很多时候都会提出我们做web开发的需要学这些吗?正是因为你不会,才只能做这个。

1.4 多总结

举例如下:

  • 当你面对redis的全量和增量同步中存在的问题时,你是否曾想其他软件是否也存在这个问题,他们又是怎么解决的?多去了解了解,做到融汇贯通

  • 看文章:现在的文章真的太多太多了,这就导致了我们很多时候仅仅是粗浅的浏览了下,并没有去深入其中的细节(可能作者对于每一处都很认真的推敲,可能作者也是不负责任的写一写,这个需要你自己去辨别)。现在很多文章都没有高质量的评论交流可以从侧面看出,现在大家的阅读一般都很粗浅。

2 想做的事

2.1 愿景

想笼络想奋进的人进群,群人数保持在30到50人。

  • 每周至少开展1个话题,由话题提出者主导研究,其他人感兴趣的参与研究,然后在某个固定时间大家一起交流。多个话题可以同时展开,各自参加各自的话题小分队

  • 基本不允许提简单的问题,这种一般自行解决,最好提一些有质量的话题。这里是一个交流的平台,而不是一个问答平台。

  • 长时间不参与各种话题只能劝退出群了,等你有空研究再参与进来

2.2 要求条件

  • 想成大牛的潜力股,具有自我驱动力,能自主去研究一些东西

  • 读源码是最最最基本的要求

  • 大牛也可以进来指导指导(哈哈)

满足条件的可以在文章后面留言,核对后拉进群,一起讨论学习。

不满足条件的不要怪别人不给机会,只有自己先变得上进起来,别人自然会去主动找你。

3 话题内容

这里准备把一些话题列出来,仅供参考,大牛就不要拍砖了。

3.1 分布式锁话题

  • 有哪些方案?

  • 方案都有哪些缺陷,你对RedLock怎么看?

  • 从各种方案中你能总结出如何来设计分布式锁?有哪些要点?

3.2 红黑树

  • 如何看待算法导论中红黑树的相关操作的解法

  • 你是否能直接描述出如何插入删除数据的过程

3.3 恢复技术以及副本同步(增量和全量同步)

  • redis的rgb和aof

  • ZooKeeper的快照和事务日志

  • hdfs的image和editLog

  • kafka?

  • mysql?

上述几种都会面临如何恢复,以及如何进行副本同步。

这些过程中有哪些技术难点?他们分别是怎么应对的?

你能总结出来什么东西?


 
乒乓狂魔 更多文章 红黑树解法的why而非how paxos算法证明过程 分布式锁总结 Raft对比ZAB协议
猜您喜欢 ☞【转型】美的董事长方洪波:我们的冬天来了——又一个大佬的盛世危言! 【微课】软件设计 第二课 正交四原则之消除重复 Steve Cutts的黑色寓言:通往奴役之路 【跟我学】Jmeter课程预报名开始 漏洞战争: 软件漏洞发展趋势