小课堂week15 年终小结
年终小结
一年的最后,想和大家回顾一下今年讲过的技术和书,用一些问答,一起来提炼一下精华。
Spark
为什么需要分布式计算?
计算的增长速度超过了硬件的增长,单一服务器无法负荷。多服务器带来的是复杂度的提升,分布式计算就是解决这种复杂性问题的。
为什么不能对Oracle横向扩容实现分布式?
计算服务不止是满足计算功能,更重要是保证计算的稳定和可靠。
多服务器在可靠性方面,会出现一种单机不存在的问题:部分服务器故障。在部分故障情况下仍保持正常计算,我们称为分区容忍性(P)。
Oracle在可靠性方面是同时满足了一致性(C)和可用性(A),通过思想实验,发现CAP三者是无法全部达到的。
所以对Oracle横向扩容是无法满足P的,会引入不可靠运行的风险。
Spark是什么?
解决方法是牺牲CAP中的某一特性。
一般来说,对分布式计算来说,在CAP中,P是必须满足的,C和A相比,A在大多数场景下更为重要,所以选择牺牲C成本最低。
Spark是一种AP的解决方案,但是需要注意的是,并不是完全牺牲C,而是用最终一致性来替代强一致性。
在具体实现上,Spark延续了Hadoop的思路,对传统数据库技术进行了完全的推倒重来,是一种更为纯粹的分布式技术,非常值得学习。
《例外处理的逆袭》
为什么选择分享这本书?
这是我今年分享的第一本书,最主要的原因是作者的文笔实在是太好了,一本既好看,又有用的书,当然要分享了。
什么是例行处理的逆袭?
核心思想是分而治之,将例外处理分为了fault、error、failure三类,识别难度由高到低,应对难度由低到高,通过标准化的应对方式,可以最大化确保系统运行的稳定。
这本书最大的惊喜是什么?
应该是这句话:fault是无法全部识别的,但是failure确实可以保证的。缺陷无法全部排除,这是一个真相,但是我们往往不愿意正视,这本书让我重新认识了质量工作的方向。测试工作长期占据了统治的地位,但是针对的其实还是缺陷,其实就算再努力,效果也是有效的。如果把视角放到failure上,把质量工作拓展到全生命周期,才能真的切实提高。
《Clean Code》
这本书为什么经典?
作者Uncle Bob是程序员界的大神,他曾经参加了敏捷宣言的制定,提出了OO中非常重要的SOLID原则。而这本书是Uncle Bob自己最为得意的著作之一,我认为业界顶尖人物的思想是我们从业者都不能错过的。
Uncle Bob想说点什么?
整本书内容非常零散,讨论了非常多的主题,但是核心内容就是三个字"整洁感",作者认为这个是程序员的一项核心能力,而整本书是从编程的各个细节出发,来诠释整洁感这个概念。
Uncle Bob为什么要写这本书?
看到过对Uncle Bob的访谈,程序员是一个非常年轻的职业,年轻的职业缺点就在于缺乏思想的沉淀。在编程语言上,Java、Python、C等等各相争鸣,编程范式上OO逐渐主流,但是过程式、FP等也非常活跃,框架技术更是层出不穷。在这种多元化背景下,程序员是非常容易迷失的,Uncle Bob致力于寻找一些在多样化下面的东西,一些可以成为"元能力"的东西。在协作方面提出了敏捷宣言,而在工程实践上,就是"整洁感"。
小结
今年一共分享了15次课程,感谢大家的参与,我也收获良多,希望明年可以和大家一起获得更多不一样的体验。