数据密集型应用及其可靠可扩展与可维护的定义

bestzrz bestzrz     2023-03-09     794

关键词:

一、什么算是“数据密集型应用”

对于一个应用系统,如果“数据”是其成败决定性因素,包括数据的规模、数据的复杂度或者数据产生与变化的速率等,我们就可以称为“数据密集型应用系统”;与之对应的是计算密集型,CPU主频往往是后者最大的制约瓶颈。
例如:使用了以下组件的应用系统:关系型数据库、NoSql、消息队列、缓存、搜索引擎、批处理与流处理框架

二、可靠、可扩展与可维护的应用系统

1、可靠性

意味着即使发生故障,系统也可以正常工作。故障包括:
1)硬件故障。如硬盘崩溃、内存故障、电网停电。硬盘的平均无故障时间约为10-50年。因此,在一个包括10000个磁盘的存储集群中,我们应该预期平均每天有一个磁盘发生故障。硬件故障通常是随机的,不相干的。减少硬盘故障率的策略有:
  • 针对单机系统
磁盘配置RAID,服务器配备双电源,热插拔CPU,数据中心添加备用电源、发单机等
  • 分布式系统
通过软件容错的方式来容忍多机失效,例如当需要重启计算机为操作系统打安全补丁,可以每次给一个节点打补丁然后重启,而不需要同时下线整个系统。
 
2)软件错误。软件问题通常是系统的,更难以处理
3)人为失误。总是很难避免,时不时会出错。以下多种方法可以帮助减少人为错误:
  • 以最小出错的方式来设计系统。例如,精心设计的抽象层、API以及管理界面,使“做正确的事情”很轻松,但搞坏很复杂。
  • 想办法分离最容易错误的地方、容易引发故障的接口。特别是,提供一个功能齐全但非生产用的沙箱环境。
  • 充分的测试:单元测试、全系统集成测试、手动测试、自动化测试。
  • 当出现人为失误时,提供快速的恢复机制以尽量减少故障影响。
  • 设置详细而清晰的监控子系统,包括性能指标和错误率。
  • 推行管理流程并加以培训。

2、可扩展性

是指负载增加时,有效保持系统性能的相关技术策略。
负载:Web服务器的每秒请求处理次数,数据库中写入的比例,聊天室的同时活动用户数量,缓存命中率等。有时平均值很重要,有时系统瓶颈来自于少数峰值。
性能:批处理系统中,通常关心吞吐量,即每秒可处理的记录条数,或者在指定数据集上运行作业所需的总时间;而在线系统通常更看重服务的响应时间,即客户端从发送请求到接收响应之间的间隔。
响应时间:平均值并不是合适的指标,因为它掩盖了一些信息,无法告诉有多少用户实际经历了多少延迟。最好使用百分位数。中位数表示列表中间的响应时间,缩写为p50,如果中位数响应时间为200ms,意味着一半的请求响应不到200ms。想要弄清楚异常的响应数据有多糟糕,需要关注p95、p99、p999

3、可维护性

本质上是为了让工程和运营团队更为轻松。包括:
  • 可运维性:运维更轻松。
  • 简单性:简化复杂度。
  • 可演化性:易于改变。
良好的抽象可以帮助降低复杂性,并使系统更易于修改和适配新场景。良好的操纵性意味着系统健康状况有良好的可预测性和有效的管理方法。
 
 

ddia读书笔记——构建可靠的可扩展和可维护的应用

...月左右的时间读完这本书吧!现在很多应用都是数据密集型应用,所谓的数据密集型应用,是指数据是其主要挑战,数据量、数据复杂度以及数据变化的速度是要考虑的主要方面。与之对应的是计算密集型,... 查看详情

设计数据密集型应用(代码片段)

该书大约是2017年翻译的,全书392页,分为三部分,一共12章。这是一本理论结合实践的书。本书为数据系统的设计、实现、评价提供了很好的概念框架。 本书着重讨论三个在大多数软件系统中都很重要的问题:可靠性(Reliab... 查看详情

设计数据密集型应用(代码片段)

该书大约是2017年翻译的,全书392页,分为三部分,一共12章。这是一本理论结合实践的书。本书为数据系统的设计、实现、评价提供了很好的概念框架。 本书着重讨论三个在大多数软件系统中都很重要的问题:可靠性(Reliab... 查看详情

日志收集系统flume及其应用

...的海量日志采集、聚合和传输的系统。Flume支持定制各类数据发送方,用于收集各类型数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。一般的采集需求,通过对flume的简单配置即可实现。针... 查看详情

设计数据密集型应用的主要关注点

设计数据密集型应用的主要关注点设计数据密集型系统应该主要关注哪些地方?思维导图数据密集型应用的概念对于数据密集型应用,CPU的处理能力往往不是第一限制性因素,关键在于数据量、数据的复杂度以及数据... 查看详情

infortrendcs分布式nas集群强项之---成本篇

...本模式、高可靠与高性能各占一半的纠删码模式及更适合密集型应用Infortrend专用横向扩展模式。一套设备多种模式能适合各类应用场景,客户可根据需求选用。同时三种模式可在前端业务无感的情况下,进行相互转换,而且不... 查看详情

大型、可扩展和可维护的 Web 应用程序中的 ORM 或 SQL?

】大型、可扩展和可维护的Web应用程序中的ORM或SQL?【英文标题】:ORMorSQLinlarge,scalableandMAINTAINABLEwebapplication?【发布时间】:2010-04-1412:23:50【问题描述】:我知道网上已经有很多关于这个话题的帖子了。但是,许多人在谈论它时... 查看详情

jquery ui:可排序与可排序

】jqueryui:可排序与可排序【英文标题】:jqueryui:sortablevsSortable【发布时间】:2019-09-3022:19:17【问题描述】:我正在维护一个使用jqueryui1.8.18构建的网站。在那里我看到了以下代码...$(\'div.sortables\').Sortable(accept:\'content\',tolerance:\'i... 查看详情

捆绑应用程序的名称可以与可执行文件的名称不同吗?

】捆绑应用程序的名称可以与可执行文件的名称不同吗?【英文标题】:Canthenameofthebundleapplicationbedifferentofthenameoftheexecutablefile?【发布时间】:2013-12-0306:49:11【问题描述】:我有一个沙盒登录项,其可执行文件名类似于X174423.MyAp... 查看详情

magmi 没有将简单的产品与可配置的产品联系起来

...导入产品。我已经进口了产品。下面是所有可配置产品以及其他简单产品。我先导入简单产品,然后导入可配置产品。我还为可配置项目处理器启用了插件。[sku]=>000000 查看详情

计算机网络:应用层

...向网络发送和接收报文可供应用程序使用的运输服务可靠数据传输电子邮件、文件传输、金融业等使用可靠数据传输多媒体、视频等是容忍丢失的应用吞吐量具有吞吐量要求的应用被称为带宽敏感的应用弹性应用可以根据情况或... 查看详情

网络原理

...义了电气规范、机械规范、过程规范、和功能规范。2、数据链路层:访问介质:定义如何格式化数据以便进行传输以及如何控制对网络的访问。支持错误检测3、网络层:路由数据包选择传递数据的最佳路径支持逻辑寻址和路径... 查看详情

软件产品质量六属性

...、共存性、易替换性、可移植性的依从性常见的测试类型及其与质量属性关系功能测试:功能性安全性测试:功能性兼容性测试:功能性配置性:功能性、易用性可靠性测试:可靠性易用性测试:易用性性能测试:效率安装测试... 查看详情

Java线程与可运行[重复]

...read和Runnable之间的显着差异时,我遇到了一个差异:当您扩展Thread类时,您的每个线程都会创建唯一的对象并与之关联。其中当您实现Runnable时,它​​会将同一个对象共享给多个线程。。有代码给:classImplementsRunna 查看详情

zookeeper基本概念及原理

...布式应用程序。其他分布式应用程序可以基于zookeeper实现数据同步,配置维护和命名服务等等。zookeeper是Hadoop的一个子项目,由于在原有的分布式应用系统中,工程师不能很好的使用锁机制,或者基于消息的协调机制不适合在某... 查看详情

数据的存储方法都有哪些

什么是分布式存储分布式存储是一种数据存储技术,它通过网络使用企业中每台机器上的磁盘空间,这些分散的存储资源构成了虚拟存储设备,数据分布存储在企业的各个角落。分布式存储系统,可在多个独立设备上分发数据。... 查看详情

在 Python 中将数据框列与可接受的偏差进行比较

】在Python中将数据框列与可接受的偏差进行比较【英文标题】:ComparingdataframecolumnswithacceptabledeviationinPython【发布时间】:2022-01-2105:54:54【问题描述】:考虑到可接受的偏差而不是100%匹配,如何比较两个pandas数据帧行?例如,可... 查看详情

公共云存储服务的可扩展性和性能

...公共云存储服务供应商可帮助企业用户免于承担物理硬件及其相关成本的负担,其中包括能源、冷却以及服务器维护等。很多企业都在使用公共云、私有云以及混合云这样的一个组合,但是其中的公共云存储服务是尤其吸引人的... 查看详情