CAP碎碎念
整个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碎碎念的更多相关文章
- Linux碎碎念
在学习Linux过程中,有许多有用的小技巧.如果放在纸质的笔记本上,平时查阅会相当不方便.现在以一种“碎碎念”的方式,汇集整理在此,目前还不是很多,但随着学习.工作的深入,后续会陆陆续续添加更多的小技 ...
- 一些关于Linux入侵应急响应的碎碎念
近半年做了很多应急响应项目,针对黑客入侵.但疲于没有时间来总结一些常用的东西,寄希望用这篇博文分享一些安全工程师在处理应急响应时常见的套路,因为方面众多可能有些杂碎. 个人认为入侵响应的核心无外乎四个 ...
- 一个谷粉和3年的Google Reader重度使用者的碎碎念
2013-03-14 上午看到Andy Rubin辞去Android业务主管职务.由Chrome及应用高级副总裁继任的新闻,还在想这会给Android带来什么,中午刷微博的时候就挨了当头一棒:Goog ...
- Jerry的碎碎念:SAPUI5, Angular, React和Vue
去年我去一个国内客户现场时,曾经和他们IT部门的一位架构师聊到关于在SAP平台上进行UI应用的二次开发时,UI框架是选用UI5还是Vue这个话题. 我们代表SAP, 向客户推荐使用UI5是基于以下六点 ...
- 结对编程ending-我和洧洧的碎碎念
应该是第一次和队友分工合作去完成一个项目,其中也经历了跳进不少坑又被拉回来的过程,总体来说这对于我俩也的确是值得纪念的一次经历. 我的碎碎念时间…… 对比个人项目和结对编程项目二者需求,前者重在面对不 ...
- C语言 · 分分钟的碎碎念
算法提高 分分钟的碎碎念 时间限制:1.0s 内存限制:256.0MB 问题描述 以前有个孩子,他分分钟都在碎碎念.不过,他的念头之间是有因果关系的.他会在本子里记录每一个念头,并用 ...
- 最近关于Qt学习的一点碎碎念
最近关于Qt学习的一点碎碎念 一直在使用Qt,但是最近对Qt的认识更加多了一些.所以想把自己的一些想法记录下来. Qt最好的学习资料应该是官方的参考文档了.对Qt的每一个类都有非常详细的介绍.我做了一 ...
- Java实现 蓝桥杯VIP 算法提高 分分钟的碎碎念
算法提高 分分钟的碎碎念 时间限制:1.0s 内存限制:256.0MB 问题描述 以前有个孩子,他分分钟都在碎碎念.不过,他的念头之间是有因果关系的.他会在本子里记录每一个念头,并用箭头画出这个念头的 ...
- MySQL碎碎念
1. 如何修改Mysql的用户密码 mysql> update mysql.user set password=password('hello') where user='root'; mysq ...
随机推荐
- VS2012经常使用的快捷方式完成最全面
(1)如何更改设置快捷键 1.转到工具----选项 对话框 2.选 环境---->键盘 3.在 [显示命令包括] 以下的对话框中输入"对齐"keyword,然后就会在这个 ...
- AndroidStudio 3.0 生成jar包的方法
AndroidStudio3.0生成jar包的方法,一下将逐步演示流程,及步骤讲解 1:新建样例工程,目录如下 2:鼠标右键点击app->New->选择Module 选择AndroidLi ...
- windows server 安装 mysql – 畅玩Coding
原文:windows server 安装 mysql – 畅玩Coding windows server 安装 mysql 2018年12月11日2018年12月11日 admin 下载:https: ...
- android 流量统计
1 android通过架构流量统计TrafficStats类可以直接获得 获得总流量受理TrafficStats.getTotalRxBytes(), 获得总传出流量TrafficSt ...
- WPF 判断调用方法堆栈
原文:WPF 判断调用方法堆栈 版权声明:博客已迁移到 http://lindexi.gitee.io 欢迎访问.如果当前博客图片看不到,请到 http://lindexi.gitee.io 访问博客 ...
- phpStudy2018安装完成之后,Apache刚启动就关闭(PHPStudy 从别的电脑迁移过来)
原文:phpStudy2018安装完成之后,Apache刚启动就关闭 版权声明:本文为博主原创文章,未经博主允许不得转载.用于学习总结等. https://blog.csdn.net/pjz16102 ...
- sklearn 下距离的度量 —— sklearn.metrics
1. pairwise from sklearm.metrics.pairwise import pairwise_distance 计算一个样本集内部样本之间的距离: D = np.array([n ...
- WPF安装打印机驱动后PrintDialog 执行打印事件
原文:WPF安装打印机驱动后PrintDialog 执行打印事件 WPF可以很好的利用流文档来实现打印预览和PrintDialog 实现打印功能,但是我在这只是写了一个很简单的打印功能演示. Page ...
- python 教程 第八章、 第一个python程序
第八章. 第一个python程序 #!/usr/bin/env python import os import sys import time source = [r'G:\s1', r'G:\s2' ...
- Swift - 关于 Optional 的一点唠叨
Optional 是 Swift 的一个非常重要的特性,它除了提供类型安全的机制,也是 Swift 中很多语言特性的核心.当然,使用 Optional 时也要了解很多坑,这样能帮助我们更好的运用它. ...