搭建大规模可扩展系统
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