《数据密集型应用系统设计》笔记-1-基础

总览

《数据密集型应用系统设计》非常好的一本书。全书分为三部分:

  1. 数据系统的一般原则
  2. 单机数据系统转向分布式系统
  3. 派生数据的系统

这里是第一部分。

数据系统基础原则

  • 可靠性
    
    • 容忍软硬件失效,人为错误
  • 可扩展性
    
    • 评测负载与性能,延迟百分位数,吞吐量
  • 可维护性
    
    • 可运维,简单与可演化性

第1章 可靠、可扩展、可维护的应用系统

问题来源:
当今应用都属于数据密集型(data-intensive),而不是计算密集型(compute-intensive)
数据应用系统常用模块:

  • 数据库
  • 高速缓存
  • 索引
  • 流式处理:持续发送消息至另一个进程
  • 批处理:定期处理大量的累积数据

本书将这个些都归类于:数据系统(data system)
Redis既可以用户数据存储,也适用于消息队列
ApacheKafka可作为消息队列,同时也具备持久化存储保证。
缓存层Memcached
全文索引服务器Elasticsearch/Solr

可靠性Reliability

简单说:即使发生某些错误,系统仍然可以正常工作。
硬件故障
添加冗余来减少系统故障率。云平台(AmazonWebServices,AWS)强调总体灵活性与弹性,不是单台机器的可靠性,所以云服务器虚拟机实例的可靠性相对较差。
软件错误
没有什么好的解决办法。
人为错误
假定人是不可靠的来设计系统.设计接口原则:使做正确的事情很简单,使做错误的事情很难。

可扩展性Scalability

描述系统应对负载增加能力的术语。
描述负载
有一个twitter的例子很好。负载多是由系统的关键业务参数决定。
描述性能
批处理系统如Hadoop,通常关心吞吐量throughout。在线系统更看重响应时间responsetime
采用百分位数(percentiles)描述响应时间。如中位数是50ms,则说明有50%的请求响应时间大于50ms。通常使用p95,p99,p999.亚马逊采用p999.描述、定义服务质量目标(ServiceLevelObjecti

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值