关于系统设计:带读-Designing-DataIntensive-Applications中文数据密集型系统设计

5次阅读

共计 929 个字符,预计需要花费 3 分钟才能阅读完成。

我在实习和工作的过程中发现技术计划的设计这一环节是后端开发散发魅力并且深深吸引我的中央,好的技术计划 / 架构设计 能够让整个零碎开发的开发者开发更轻松 后续的保护 以及拓展更容易 遇到高并发、各种软硬件生效人为谬误带来的挑战时更牢靠,总而言之,这让我感觉像是在设计本人世界乐高,我对此很有趣味,于是找到了这本书。

数据系统根底

这里先给出了一个全文检索服务器的例子(之前《Go In Action》也拿搜寻例子做为开篇,看来文本检索很受大家欢送呀),,假设某个利用蕴含缓存层(例如 Memcached)与全文索引服务器(如 Elasticsearch 或 Solr), 二者与主数据库放弃关联,通常由利用代码负责缓存、索引与主数据库之间的同步,如下图所示

在设计这个零碎的时候,咱们须要

  1. 通过缓存正确地刷新来保障客户端们看到的成果统一;
  2. 零碎呈现部分生效的时候 保证数据的正确性和完整性
  3. 零碎产生降级时为客户提供统一良好的体现。
  4. 负载减少时零碎便于拓展

这本书次要围绕零碎设计的

  • 可靠性
  • 可扩展性
  • 可维护性
    开展

可靠性

  • 硬件故障
    在设计零碎思考硬件可靠性的时候 咱们须要思考到 硬盘解体、内存故障、电网停电、网线被拔掉等状况。
    应答的计划大抵有:1. 增加硬件冗余
    (比方磁盘配置 RAID,服务器配置双电源,热插拔 CPU,数据中心增加备用电源,发电机等)2. 滚动降级(前面会介绍)
  • 软件谬误
    特点工夫值导致服务器解体,比方 2012 年 6 月 30 日产生的闰秒触发的 Linux 内核 bug、依赖服务故障、级联故障等。
    软件谬误很多时候没方法疾速解决,须要在零碎设计之初认真查看各种交互和依赖,进行全面的测试,过程隔离,提前设计好异样告警。
  • 人为谬误
    经考察发现,运维人员的配置谬误是某大型互联网服务下线的首要起因。
    所以在零碎设计的时候,咱们能够先假设人是不牢靠的,用最小的出错形式来设计零碎、拆散出最易出错的中央、充沛测试、制订出错是疾速复原机制等。

未完待续。。。


参考

Kleppmann M. Designing data-intensive applications: The big ideas behind reliable, scalable, and maintainable systems[M]. ” O’Reilly Media, Inc.”, 2017.

正文完
 0