可靠,可扩展,可维护的应用--序

英特网运行的如此良好以至于大多数人们觉得它就像大海一样的自然资源,而不是人造物。上一次如此大规模的技术而没有差错有是什么时候呢?

    -- Alan Kay


相比于计算机密集型,如今许多应用偏向于数据密集型。对这些应用程序而言,cpu功率很少是一个限制因素,更大的问题通常是庞大复杂的数据,以及这些数据变化的速度。

一个数据密集型应用通常构建于提供所需功能的标准模块,例如,许多应用需要:

    • 持久化数据,以便于其或者其他应用能在之后在查找到它 (数据库)

    • 记住一些耗时操作的结果,以加快读取(缓存)

    • 允许用户按照关键字或者多种过滤方式来搜索数据(搜索索引)

    • 发送一条消息到另一个流程,以异步的方式处理(流处理)

    • 定期的处理大量的累积数据(批处理)

如果这些听起来很显而易见,那只是因为这些数据系统抽象的非常成功:我们在频繁使用它们的同时却并没有去思考它们。在构建应用程序时,大多数工程师都不希望从头开始编写一个新的数据存储引擎,因为数据库已经是非常好的工具了。

但其实并不是那么简单的。现在很多数据库有不同的特征,因为不同的应用程序需求也不尽相同。同时,缓存也可以有很多种方法,构建搜素引擎等也是如此,有多种实现方式。在构建应用程序时,我们仍然需要确定哪些工具,哪些方法是最适合当前需求的。由此可见,如果一件事仅仅靠单一工具无法实现,而需要把不同的工具组合起来,这还是相当复杂的。

本书主要介绍了关于数据系统原理和实践,以及如何使用它们来构建数据密集型应用。我们将探索不同的工具有什么异同,以及它们是如何实现它们的特性的。

而在这一章中,我们将首先探索我们要实现的基本原理:可靠,可扩展,可维护的数据系统。我们将阐明这些东西的含义,概述一些思考它们的方法,然后回顾一下我们在后面章节所需要的基础知识。在接下来的章节中,我们将一层一层的讨论在处理数据密集型应用时需要考虑的一些设计思路。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • //我所经历的大数据平台发展史(三):互联网时代 • 上篇http://www.infoq.com/cn/arti...
    葡萄喃喃呓语阅读 51,435评论 10 200
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,323评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,142评论 25 709
  • 听说你牺牲了,仿佛每个细节都从眼前闪过。你觉得我会信吗?肯定不会啊! 在一个阴得马上要滴雨的早上,敲开了你妈妈服装...
    妞妞喜欢扭一扭阅读 1,586评论 0 0
  • 还有不到一周的时间就要开学了,萱的作业还有一半没有完成。 这两天已经控制不住我的焦急,开始了不停“唠叨”模式。 萱...
    sunfeng0912阅读 1,423评论 1 1