以下内容基于极客蔡元楠老师的《大规模数据处理实战》做的笔记哈。感兴趣的去极客看蔡老师的课程即可。
SLA包括了可用性Availabilty,准确性Accuracy、系统容量Capacity和延迟Latency。通过SLA服务来判断系统架构是否健康。
指系统运行正常占用时间比,目标是100%,但现实没用百分百最多99.9%。当可用性达到99.9%的时候被称为高可用性。
指系统中是否允许某些数据是不准确或者丢失。如果发生了,用户可以接受的概率是多少。
准确性经常用错误率定义。
错误率=(期间内有效请求却发生错误的请求次数)/(期间内有效请求次数)
系统容量Accuracy是指系统能支持的预期负载量,一般指每秒能接受多少请求。
延迟Latency是指收到用户请求后到相应这个请求的时间间隔。
随着业务的复杂和数据的增加,单机系统容量是会不够的。单机终究是要升级为分布式系统。
而分布式系统核心就是可扩展性。增加系统容量有两种方法:1、水平扩展 2、垂直扩展。
水平扩展就是分布式,增加新的机器节点。
垂直扩展就是升级现有机器,例如增加内存。
在分布式系统中,如果保证所有机器节点在同一时间内,接受与发送的数据都是相同的,那就要引入一致性概念。
一致性一般分为强一致性,弱一致性,最终一致性。
强一致性:系统某个数据更改后,后续读取操作都是最新值。
弱一致性:更改后,后续读取数据操作有可能是更改前的值,也有可能是更改后的值。经过某个时间窗口后才保持一致。
最终一致性:弱一致性的特殊值,系统保证没用更新的条件下,访问的都是最新值。例如读取数据,不同进程读取到的数据不一样,但是最终所有的数据更新都会按时间顺序同步到节点。即最终一致性支持异步读取,延迟比较小。
持久性是指数据被存储后就能一直使用,即使是系统中的节点下线、宕机或数据损坏。