整个2017年都在搞大数据平台,完全远离了机器学习,甚至都不记得写过类似ETL的job。

从数据到平台,从业务处理到基础服务。

Metrics的收集,报警,生成报表。Data pipeline的准确性,性能。Job的提交,资源分配。分布式组件的部署,运维。

同时也参与了一个portal的开发,管理分布在全球各地的clusters。

大数据的服务:存储,计算,传输,search等等基本都是分布式的,每种服务的组件都有很多,不管是商业的还是开源的,都是围绕着C(Consistency)A(Availability)P(Partition-Tolerance)理论,CP,AP各有所长。

具体的实现上,可以说是五花八门,不过本质思想也基本类似,比如为了实现C(Consistency), 争取保证每个node上每步的操作都一致:要么都做,要么都不做。为了达到这个目的以及conver各种极端情况(比如,接收方在接收之后commit之前down了)有2阶段提交,3阶段提交,Paxos等算法的实现。

虽然各种服务的各种组件处理的业务和实现的方法不同,但大都包括分partition,选master, 副本备份,服务发现,请求响应等几个功能。

Partition是分布式系统的最主要特征,即是承载数据大体量的保证,又而实现分而治之。hdfs的block, hbase的region,elasticsearch的shard,kafka干脆就叫partition,清晰明了。有个Partition必然会出现有的partition会挂掉的情况,即绕不过P(Partition-Tolerance)。

分了partition就要加强管理,所以基本上分布式系统中都有master role,存储meta data, 处理一些环境相关的问题。有了master role,那就得投票选出来谁是master。从而引出了选master的问题,比如脑裂。毕竟选master的过程也是会有极端情况的。为了防治选master的过程,又引出了定义什么时候可选,谁有资格投选票,有资格的选的太多,选举过程可能就会冗长,会影响到系统的A(Availability),即AP的问题。当然也有不选master的所谓的去中心化的组件,比如cassandra, 不过没有中心之后,每个node都可以做同样的事情,是不是也可以称为个个都是中心?毕竟gossip协议让每个node都拿到同样的配置信息。

因为是分布式的,所以在多台node上备多份。有了多个备份之后,所以又会分leader partition(prime shard)与replic partition,从而引出主被之间的数据同步问题,就会涉及到CP的问题。比如kafka的Highwatermark, 必须保证所有ISR节点都复制了的备份文件,才能被consumer消费到。ES的doc在没有被复制到replic shard的时候,却依旧可以被search到。不同的设计其实就是在根据service的特性权衡AP。

CAP碎碎念的更多相关文章

  1. Linux碎碎念

    在学习Linux过程中,有许多有用的小技巧.如果放在纸质的笔记本上,平时查阅会相当不方便.现在以一种“碎碎念”的方式,汇集整理在此,目前还不是很多,但随着学习.工作的深入,后续会陆陆续续添加更多的小技 ...

  2. 一些关于Linux入侵应急响应的碎碎念

    近半年做了很多应急响应项目,针对黑客入侵.但疲于没有时间来总结一些常用的东西,寄希望用这篇博文分享一些安全工程师在处理应急响应时常见的套路,因为方面众多可能有些杂碎. 个人认为入侵响应的核心无外乎四个 ...

  3. 一个谷粉和3年的Google Reader重度使用者的碎碎念

    2013-03-14 上午看到Andy Rubin辞去Android业务主管职务.由Chrome及应用高级副总裁继任的新闻,还在想这会给Android带来什么,中午刷微博的时候就挨了当头一棒:Goog ...

  4. Jerry的碎碎念:SAPUI5, Angular, React和Vue

    去年我去一个国内客户现场时,曾经和他们IT部门的一位架构师聊到关于在SAP平台上进行UI应用的二次开发时,UI框架是选用UI5还是Vue这个话题. 我们代表SAP, 向客户推荐使用UI5是基于以下六点 ...

  5. 结对编程ending-我和洧洧的碎碎念

    应该是第一次和队友分工合作去完成一个项目,其中也经历了跳进不少坑又被拉回来的过程,总体来说这对于我俩也的确是值得纪念的一次经历. 我的碎碎念时间…… 对比个人项目和结对编程项目二者需求,前者重在面对不 ...

  6. C语言 · 分分钟的碎碎念

    算法提高 分分钟的碎碎念   时间限制:1.0s   内存限制:256.0MB      问题描述 以前有个孩子,他分分钟都在碎碎念.不过,他的念头之间是有因果关系的.他会在本子里记录每一个念头,并用 ...

  7. 最近关于Qt学习的一点碎碎念

    最近关于Qt学习的一点碎碎念 一直在使用Qt,但是最近对Qt的认识更加多了一些.所以想把自己的一些想法记录下来. Qt最好的学习资料应该是官方的参考文档了.对Qt的每一个类都有非常详细的介绍.我做了一 ...

  8. Java实现 蓝桥杯VIP 算法提高 分分钟的碎碎念

    算法提高 分分钟的碎碎念 时间限制:1.0s 内存限制:256.0MB 问题描述 以前有个孩子,他分分钟都在碎碎念.不过,他的念头之间是有因果关系的.他会在本子里记录每一个念头,并用箭头画出这个念头的 ...

  9. MySQL碎碎念

    1. 如何修改Mysql的用户密码 mysql> update mysql.user set password=password('hello') where user='root'; mysq ...

随机推荐

  1. HDU1078 FatMouse and Cheese 【内存搜索】

    FatMouse and Cheese Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  2. C++ Lambda表达式基本用法(言简意赅,非常清楚)

    创建一个匿名函数并执行.Objective-C采用的是上尖号^,而C++ 11采用的是配对的方括号[].实例如下: 1 2 3 4 5 6 7 8 9 #include <iostream> ...

  3. 【Python注意事项】如何理解python中间generator functions和yield表情

    本篇记录自己的笔记Python的generator functions和yield理解表达式. 1. Generator Functions Python支持的generator functions语 ...

  4. R 语言的学习(一)

    1. 基本 "hello world!" > "hello world!" [1] "hello world!" 这在 R 中并不是一 ...

  5. python 两个链表的第一个公共结点

    题目描述 输入两个链表,找出它们的第一个公共结点.   看到这道题的时候,很多人的第一反应就是采用蛮力的方法:在第一个链表上顺序遍历每个节点,每遍历到一个节点的时候,在第二个链表上顺序遍历每个节点.如 ...

  6. code first迁移(add-migration)的时候 后面信息不能有中文 中文报错 "不支持给定路径的格式。"

  7. Leetcode 136 Single Number 亦或

    题意就是从一堆数中找出唯一的一个只存在一个的数.除了那个数,其他的数都是两个相同的数. 通过亦或的性质: 1)a^a = 0 0^a = a 2)交换律 a^b = b^ a 3)结合律 (a^b)^ ...

  8. HDU 1598 find the most comfortable road (罗列+Kruskal) 并检查集合

    Problem Description XX星有很多城市,城市之间通过一种奇怪的快速公路SARS(Super Air Roam Structure---超级空中漫游结构)进行交流.每条SARS都对行驶 ...

  9. Visual C# 2010 实现菜单项和状态栏

    演练:向窗体提供标准菜单项 Visual Studio 2010     其他版本     此主题尚未评级 - 评价此主题   可以通过 MenuStrip 控件为窗体提供标准菜单. 此演练演示如何使 ...

  10. 常用user agent

    测试user agnet的网站: http://whatsmyuseragent.com/ Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) ...