GeekBand C++ Week13 Notes

搭建大规模可扩展系统

1.如何检测一台机器是否宕机?

CAP理论:一致性,对于一些操作,每一个客户端有同样的view,可用性,指所有客户端可以读和写,分区承载,系统通过物理网络分区可以工作。

三个中只能有两个。

现实中CAP的例子:

亚马逊Dynamo,中采取了availability超过consistency,新的值覆盖旧的值,最后的数据有一致性(AP)

谷歌的Big Table采取CP,Hbase

两级的B+树,TB级别以上的应用,为了保证强一致性,一个数据同一时刻只能被一台机子服务,单位工作节点宕机的时候,操作的日志来加在,工作表的索引,并做到很快的恢复。

数据库系统

关系型数据库

执行时异常

需要在数据库恢复通信

ACIDvsBASE

ACID在单机环境下有很高的要求,但在分布式环境下只能满足很基本的要求。

BASE功能上的划分,垂直和水平的切分,sharding

应用拆分

scale-up和scale-out,up是增大容量,out是增加数量

数据库拆分

horizontal scaling(sharding)

functional scaling(scale out)

stateless

session vs cookie

request->后会返回一个cookie,下次访问的时候会带着cookie过来

异步通信

RPC

有效地利用cache

一致性和复制,如何保证多服务器的时候保证读到的数据是一致的,

可以读的时候读多份,多的值为真

也可以写在日志里,

一致性介绍:

强一致性,弱一致性,最终一致性

一致性哈希

分布式的哈希表

流量增加很大,服务器的压力也很大,之前的读写机制很不给力

现在做一个cache的服务机制,每一次mem cache的请求随机发送到三台服务器中的一台,

问题是同一份数据存在不同的服务器上,所以不能随机发送

一致性hash算法

把整个hash值得空间当成虚拟的圆环

无符号的整型

虚拟节点

NoSql database

Cassandra- big table的一个开源的版本

大数据系统:

大数据基础hadoop

mapreduce, bigtable, gfs

spark

海量数据处理的技巧

聊天系统的设计

估算

应用

公司

Cloudera, Hortonworks, MapR,

Hadoop的概念产生

Google的三辆马车

Mapreduce

The google file system

Big table

GFS, google file system

最主要的应用有两个,map reduce big table

B+树,把二叉树压得扁平化,压成n个节点,并排序,达到索引的高效性

实时性不好,机房之间通过日志来恢复

HDFS

Design

Master, chunkservers and clients

Fault tolerance

Append-only

Optimized for continuous reading

你可能感兴趣的:(GeekBand C++ Week13 Notes)