年终小结

一年的最后,想和大家回顾一下今年讲过的技术和书,用一些问答,一起来提炼一下精华。

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次课程,感谢大家的参与,我也收获良多,希望明年可以和大家一起获得更多不一样的体验。

小课堂week15 年终小结的更多相关文章

  1. 小课堂Week12 Clean Code Part1

    小课堂Week12 Clean Code Part1 今天的主题是函数,让我们看一个函数,找一找其中的"不整洁". 我们也根据这段代码,讨论下对于整洁代码的两个重要原则. publ ...

  2. 小课堂Week10 例外处理设计的逆袭Part3

    小课堂Week10 例外处理设计的逆袭Part3 今天是<例外处理设计的逆袭>这本书阅读的第三天,也是最后一天,我们会主要通过实例,对Part2中提出的例外处理等级进行解读. Level1 ...

  3. 小课堂Week8 例外处理设计的逆袭Part1

    小课堂Week8 例外处理设计的逆袭Part1 今天和大家讲一本书,书名是<例外处理设计的逆袭>. 为什么想讲这本书,是因为,例外处理在程序代码中到处存在,但是这些到底该如何写好,总觉得有 ...

  4. Spark小课堂Week7 从Spark中一个例子看面向对象设计

    Spark小课堂Week7 从Spark中一个例子看面向对象设计 今天我们讨论了个问题,来设计一个Spark中的常用功能. 功能描述:数据源是一切处理的源头,这次要实现下加载数据源的方法load() ...

  5. Spark小课堂Week3 FirstSparkApp(Dataframe开发)

    Spark小课堂Week3 FirstSparkApp(代码优化) RDD代码简化 对于昨天练习的代码,我们可以从几个方面来简化: 使用fluent风格写法,可以减少对于中间变量的定义. 使用lamb ...

  6. Spark小课堂Week3 FirstSparkApp(RDD开发)

    Spark小课堂Week3 FirstSparkApp 问题:Java有哪些数据结构 大致有如下几种,其中List与Map是最重要的: List Map Set Array Heap Stack Qu ...

  7. 小课堂Week11 会说话的代码

    小课堂Week11 会说话的代码 今天主要讨论下,在编码过程中和"命名"相关的问题.因为命名方法比较自由,如果要提高可读性,我们需要尽量使其符合正规的英文语法习惯. 变量/属性 通 ...

  8. 小课堂Week9 例外处理设计的逆袭Part2

    小课堂Week9 例外处理设计的逆袭Part2 今天继续阅读<例外处理设计的逆袭>这本书,我们先看两个案例: 案例1 问:如果要设计一个依据学号到数据库中查询学生资料的函数,当找不到符合条 ...

  9. Spark小课堂Week6 启动日志详解

    Spark小课堂Week6 启动日志详解 作为分布式系统,Spark程序是非常难以使用传统方法来进行调试的,所以我们主要的武器是日志,今天会对启动日志进行一下详解. 日志详解 今天主要遍历下Strea ...

随机推荐

  1. 列出当前ARM开发板系统加载的模块

    lsmod 列出当前系统中加载的模块,其中左边第一列是模块名,第二列是该模块大小,第三列则是使用该模块的对象数目

  2. CVU介绍

    ORA.CVU  New resource (Cluster Verification Utility) is added in 11.2.0.2 Unlike the previous resour ...

  3. GCD 深入理解(一)

    http://www.cocoachina.com/industry/20140428/8248.html 本文由@nixzhu翻译至raywenderlich的<grand-central-d ...

  4. 寻找最合适的view

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  5. Postman使用小技巧 - 用Postman生成Request代码

    Postman这款工具可以让你很方便的测试你的Web API,那如果你实在是没办法用Postman,必须手写代码,又或者你有别的需求是Postman没法实现的,你必须写一个特殊的script或App来 ...

  6. MongoDB基本操作命令

    由于工作需要,笔者这两天使用了一下MongoDB.真的很不习惯!但是确实好用,命令比mysql和sqlserver简单很多.在这里整理一些MongoDB的基本操作命令分享出来. 客户端的安装就不说了, ...

  7. EasyUI datagrid组件绑定有转义字符的json数据出错

    最近项目中一个页面的datagrid出现了莫名其妙的问题, 首先是分页数据的第二页和第三页不能展示,过了一天后第一页也出不来了, 默认首页不出来导致后续分页处理无法进行, 整个数据都不出来了,最后只能 ...

  8. 分享一个MVC的多层架构,欢迎大家拍砖斧正

    如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 多层架构是开发人员在开发过程当中面对复杂且易变的需求采取的一种以隔离控制为主的应对策 ...

  9. extern 相关

    假如a.h中有 int a=10; t1.cpp和t2.cpp同时include "a.h"则编译不成功,因为a重复定义:如果 a.h中是 static int a=10;则可以, ...

  10. 二模11day2解题报告

    T1.修改文章(amend) 给出n个单词和一个长度为m的字符串,求改动多少个字符才能使字符串全由单词组成. 要说这道题还真的坑很坑超坑非常坑无敌坑--不过还是先想到了动规.毕竟要修改的前提是要组成的 ...