Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >构建可靠、可扩展与可维护的应用系统

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

原创
作者头像
house.zhang
发布于 2021-10-28 14:04:36
发布于 2021-10-28 14:04:36
8150
举报

当前的应用系统,通常数据量比较大、数据复杂度比较高以及数据快速多变,可以把这样的系统称之为数据密集型系统,数据密集型系统通常基于不同的模块组件进行构建,根据不同的功能采用不同的组件,各个组件相互配合组合成一个功能强大、满足不同需求场景的应用系统,比如一个互联网系统通常由类似以下结构组成:

数据库:主要产品是mysql,用于存储和持久化数据,一遍数据能够多次访问。

  • 高速缓存:主要产品有Redis、Memcached缓存那些经常要访问以及复杂计算和操作的数据,用来加快数据的返回,减少数据库压力,扩大系统并发能力。
  • 索引:主要产品有ElasticSearch、Solar,用来支持搜索功能,支持用户用关键字搜素和过滤数据。

除此之外还会涉及到其它模块

  • 流式处理:数据持续产生,需要快速消费数据进行数据计算。
  • 批处理:定期计算处理大量历史数据

随着功能需求越来越复杂,系统需求越来越广泛,单个组件无法满足所有的数据处理和存储的需求,所以需要根据需求将任务分解,组合合适的技术组件去高效的完成某一部分功能,多个组件通过应用层的代码有机的组合起来,对我们的技术要求也比较高,也带来更高的技术挑战。更加复杂的情况是在使用过程中随着用户量以及业务越来越复杂,一定会碰到更多棘手的问题。

比如,当系统出现局部失效时,如何确保数据的正确性与完整性?当系统降级时候,该如何设计为用户提供一致的用户体验?当系统负载增加时,系统如何扩展?这些问题是一个互联网分布式系统需要去重点考虑。

数据密集型应用系统专注于大多数软件系统都极为重要的三个问题:

  • 可靠性

当出现意外情况如硬件、软件故障、人为失误等,系统应可以正常运转,性能可能有所降低,但功能还是正确的。硬件故障,通常的做法是添加硬件冗余来减少系统故障率,随着数据量和应用计算需求的增加,更多应用可以运行在大规模机器之上,随之而来的硬件故障率呈线性增长。因此通过软件容错的方式来容忍多机失效成为新的手段,或者至少成为硬件容错的有力补充。软件问题,故障更加难以预料,因为节点之间是由软件关联的,因而往往会导致更多的系统故障。

  • 可扩展性

随着数据量、流量或复杂性等规模的增长,系统应该能够以合理的方式来匹配这种增长。

  • 可维护性

随着时间的推移,新功能的开发、新的团队成员加入都能够快速参与到系统开发和运维当中。主要关注软件系统的三个设计原则:可运维性、简单性、可演化性。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
读书笔记|可靠性,可扩展性,可维护性
《数据密集型应用系统设计》把所有跟 数据 有关的知识点做了剖析、整理、总结,从一个很高的层次把各项技术的共性和区别讲得透彻。
用户1278550
2024/07/25
2220
读书笔记|可靠性,可扩展性,可维护性
构建容错软件系统的艺术
我们生活在一个由软件系统驱动的世界。它们已融入我们的日常生活,其持续、可靠的性能不再是奢侈品,而是必需品。企业现在比以往任何时候都更需要确保其系统保持可用性、可靠性和弹性。这种必要性是由满足客户和超越竞争对手的愿望推动的。实现这一目标的秘诀是什么?构建容错软件系统。
用户5166556
2023/10/19
2550
构建容错软件系统的艺术
『数据密集型应用系统设计』读书笔记(一)
这本书一直在我的待读列表,但是一直没有机会拜读,直到最近 2021 年已经快要过去,感觉需要在年末提升一下自己。边读边做一下笔记,留待后用。
1ess
2021/12/17
6470
​Chapter 1 - 可靠、可扩展与可维护的应用系统
第一部分是数据系统的基础,介绍了一些基本思想,稍微提了一些 building blocks
s09g
2022/12/18
5810
​Chapter 1 - 可靠、可扩展与可维护的应用系统
《数据密集型应用系统设计》读书笔记(一)
目前许多的新型应用都属于「数据密集型」(data-intensive),而不是计算密集型(compute-intensive),对于这些应用,CPU 的处理能力并不是第一限制性因素,关键在于数据量、数据的复杂度及数据的快速多变性。
口仆
2020/12/08
2K0
可靠的、可扩展的、可维护的数据系统 ------《Designing Data-Intensive Applications》读书笔记1
作为一个开发者来说,目前绝大多数应用程序都是数据密集型的,而不是计算密集型的。CPU的计算能力不再成为这些应用程序的限制因素,而更加亟待解决的问题是海量的数据、数据结构之间的复杂性,应用的性能。
HappenLee
2018/09/05
1.1K0
可靠的、可扩展的、可维护的数据系统 ------《Designing Data-Intensive Applications》读书笔记1
分布式系统的可靠性指的是什么 —— 你可能从来就没有认真思考过
本文节选之 DDIA 《Design Data Intensive Applications》,DDIA是一本神书,是一本可以让很多高级资深工程师醍醐灌顶的书。
老钱
2019/06/05
1.7K0
如何建设一个健壮性系统
通常我们说负载, 指的大部分都是机器的负载. 但是对于系统的负载, 可能不仅仅包含机器的负载.
用户2825413
2020/05/17
8360
服务器失效那些事
服务器出现故障是大家都非常关心的,而服务器由CPU,内存,磁盘,主板,电源等多种部件组成,一定会有一定的失效率。本文介绍服务器失效的特性及一些部件的失效标准,探讨降低服务器失效对业务的影响。
腾讯技术工程官方号
2018/01/30
4.7K0
服务器失效那些事
数据密集型系统架构设计
按照使用的资源类型划分,我们可以把系统分为三大类型:IO密集型、计算密集型,数据密集型。系统的类型反映了系统的主要瓶颈。现实情况中,大部分系统在由小变大的过程中,最先出现瓶颈的是IO。IO问题体现在两个方面:高并发,存储介质的读写(例如数据库,磁盘等)。随着业务逻辑的复杂化,接下来出现瓶颈的是计算,也就是常说的CPU idle不足。出现计算瓶颈的时候,一般会使用水平扩展(加机器)和垂直扩张(服务拆分)两个方法。随着数据量(用户数量,客户数量)的增长,再接下来出现瓶颈的是内存。 如今,内存的合理使用比以往更加
CSDN技术头条
2018/02/12
1.3K0
如何实现系统的可扩展性和高可用性
概述 可扩展性,高可用性和性能 可扩展性,高可用性,性能和关键任务这些术语对不同组织或组织内的不同部门来说意味着不同的事情。它们经常被互换,造成混乱,导致管理不善的预期或延迟的实现或不现实的指标。本文为您提供了定义这些术语的工具,以便您的团队能够完全了解性能目标来实现目标关键系统。 可扩展性 可扩展性是系统或应用程序的属性,用于处理大量的工作或更易轻松扩展,用于响应对网络,任务处理,数据库访问或文件系统资源需求的增加 水平可扩展性 当系统通过添加具有相同功能的新节点扩展时,系统可以水平扩展,从而在所
用户1263954
2018/01/30
11.7K0
如何实现系统的可扩展性和高可用性
提升 DevOps 能力的5个技巧
成功地部署和发布软件系统,对于组织是一项重要任务,实现它就需要有坚定的 DevOps 战略。
DevOps时代
2021/07/09
5420
分布式系统是什么
分布式系统奠基者 Leslie Lamport [1] 在其最重要的论文之一 ”Time, Clocks, and the Ordering of Events in a Distributed System“ [2] 中提到:
木鸟杂记
2021/10/14
1.8K0
高可用性的前生今世
题记:今天是2018年1月1日,这是一个特殊的日子,民间称为“三头”,意思是周头、月头、年头;我把它称为“3A”,指Kerberos协议的3A。无独有偶的是今年也是狗年,智能时代冥府门前的看门狗也进化为先进的机器人三头狗了。今天讨论的就是其中的一个A--Availability. 高可用性(High Availability,简写为HA)是一个有着很长历史的话题。随着时间的推移,各种各样的方法被发明并被使用,以保证应用、服务、数据库、网络和存储是可用的、可靠的,可以为企业提供及时的服务支持。由于企业越来越依
企鹅号小编
2018/01/11
1.1K0
高可用性的前生今世
如何构建用于实时数据的可扩展平台架构
随着 SaaS 行业的飞速发展,需要动态且适应性强的架构来处理实时数据的涌入。以下是如何构建它们。
云云众生s
2024/05/06
2500
如何构建用于实时数据的可扩展平台架构
如何手搓一个飞行控制系统?
要设计一个飞行控制系统,首先,你要知道飞机的控制系统由哪些子系统组成?为保障飞行安全,对飞机的需要进行哪些冗余设计?飞机硬件故障的概率有多大?对比汽车的故障概率呢?
锅总
2024/10/09
1290
如何手搓一个飞行控制系统?
【企业级AI infra】IBM Vela系统:AI计算的革新之路
随着AI模型规模的指数级增长,企业面临计算与存储的双重挑战。IBM通过Vela系统和Granite系列模型,重新定义了AI基础设施的标准。本文深入解析其架构设计、性能优化及存储解决方案,揭示如何在云环境中实现高效、可扩展的AI计算。从基础模型的演进到Vela系统的网络与存储创新,再到IBM Storage Scale的突破性改进,内容覆盖AI基础设施的全生命周期,为企业构建下一代AI平台提供关键洞察。
数据存储前沿技术
2025/03/10
1230
【企业级AI infra】IBM Vela系统:AI计算的革新之路
构建可靠系统的策略
构建能够应对分布式系统中不可避免的故障是工程师面临的基本挑战。当软件跨网络和服务器部署时,故障不再是例外,而是必然的。硬件可能会出现故障,网络可能会分区,整个数据中心可能会离线。随着复杂性的增加,潜在的故障点也会增加。
用户5166556
2023/09/07
2160
构建可靠系统的策略
不容忽视的软件可恢复性测试
随着软件系统应用环境的复杂性,软件出错的机率越来越大了,软件面临着一个非常关键的需求就是在系统出错后能进行恢复。我是公司软件开发测试组负责人,今天老板在测试会议上批评我说,目前用户最大的抱怨是我们的系统缺少自动恢复功能,出现错误后许多的恢复过程都要人工干预来完成,说明我们的可恢复测试仍然很混乱,而且可恢复测试是完全失败的 (1)什么是软件可恢复性 随着软件应用的日益普及,对软件质量的要求也不断提高。软件质量是指软件产品中能满足给定需求的各种特性的总和。ISO/IEC9126中规定了软件的6个质量特性,即功能
张树臣
2018/05/15
3.4K0
满足企业生成式AI需求的数据库扩展
想象一下,一家全球电子商务平台在节假日促销期间无法处理产品推荐量的激增,或者一家金融机构的欺诈检测系统在数百万实时交易的压力下崩溃。这些不仅仅是技术故障,而是潜在的商业灾难。
云云众生s
2024/09/15
1030
推荐阅读
相关推荐
读书笔记|可靠性,可扩展性,可维护性
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档