读书 | DDIA CHAPTER 1

DDIA探讨了构建可靠、可扩展和易维护数据系统的基本原则,涵盖硬件失效、软件错误、人为错误、可扩展性和可维护性等方面。通过实例分析了如何应对这些问题,强调了在设计数据系统时需要平衡功能性需求和非功能性需求,如稳定性、扩展性,并介绍了如何通过冗余设备、软件方法和良好的系统设计来提高可靠性。
摘要由CSDN通过智能技术生成

DDIA:Designing Data-Intensive Applications The Big Ideas Behind Reliable, Scalable, and Maintainable Systems (Martin Kleppmann)
本书将介绍构建数据系统的原则和实例;以及不同的数据工具的共同点、差异性和它们是如何实现这些特点的。

 

目录

前言

关于 Data System

可靠性 Reliability

硬件失效

软件错误

人为错误

可扩展性 Scalability

如何考量负载

 如何考量性能

解决负载增加的办法

可维护性 Maintainability


前言

除了CPU算力,数据密集型、计算密集型的应用面临的更大挑战是:巨量的数据、数据的极端复杂性和迅速变化性。

这些应用通常需要完成以下功能:存储、缓存(记住代价高昂的某些操作的执行结果以便加速运算)、检索 / 筛选、流处理、批处理。

如今貌似每个功能都有现成的优秀引擎可供使用。但是当开发新的应用时,工程师还是需要耐心选择最适合当前任务的工具(比如cache、index都有不同的实现方式,各有优缺点)。此外,总有些问题是单个工具无法完全胜任的,要将不同的工具结合起来也是一个十分棘手的事。

第一章将介绍:搭建一个可靠的、可扩展、易维护的数据系统的基本原则和思维方式。

                           开发系统需要满足功能性需求和非功能性需求(稳定性、可扩展性等)。

                           没有一个简单的公式可以套用。但是有一些模式和技术持续出现在不同的应用中以满足上述需求。

关于 Data System

什么是数据系统:结合了多个不同的数据工具开发的应用。

为什么需要“数据系统”这个名字:一,不同的数据工具之间的边界越来越模糊 二,单一的数据工具越来越难以满足生产需要。

        本来用于存储的Redis也可以用作消息队列;本来是消息队列的Kafka又具有像数据库一样的持久性保证。

什么是一个好的数据系统 / 开发者应关注什么:可靠的、可扩展、易维护

可靠性 Reliability

可靠性的具体要求​​​​​​​

  1. 系统能按照期望的功能运行。
  2. 对客户的误操作有容忍性。
  3. 系统能在期望的运行压力下有符合期待的运行表现。
  4. 阻止无权限的用户访问 / 滥用系统。

failure VS fault

failure是整个系统失效。fault是系统中的部分组件失效。可靠性要求阻止fault导致failure。

prevent VS cure

顾名思义,prevent阻止故障发生,cure是具有故障恢复的能力。cure通常被选择的更多。但有些错误是不存在cure的能力的,比如黑客访问到了安全级别极高的数据、客户账户上的存款被盗走。这些情况prevent是唯一且必须的选择。

延伸阅读:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值