系统层面的【三高】

简介: 【1月更文挑战第9天】系统层面的【三高】

前言

可以说,在个人健康问题上,如果你听到了【三高】,那么往往会很难过,【三高】代表的是身体状况的危机。而作为应用系统来说,能被称为【三高】的应用系统,才是真正意义上的牛皮应用。那么应用系统的三高是什么呢?

应用系统的【三高】就是:高性能、高可用性和高稳定性,代表的是应用系统能够长时间的稳定的超高响应耗时的处理任何请求,这就是应用系统的三高。

如何让系统长期维持理想的“三高”标准

说到如何让系统长期维持理想的三高,就像盖房子一样,需要从三高的三个方面来逐个分析。


高可用性:应用系统的高可用性,可以说是地基。作为一个应用系统,如果不能用,那还有什么意义?因此如何保证高可用性:

1.设计冗余架构:通过负载均衡、主从备份、分布式集群等方式,确保单一节点故障时服务不受影响,避免单点故障带来的系统不可用;

2.数据备份:定期做好数据备份,保证各个时间节点的数据完整性,保障系统的稳定运行;

3.定期维护:定期做好系统维护,及时发现并处理潜在问题,预防因硬件问题、网络问题、软件错误导致的宕机;

4.故障切换和恢复机制:设置好故障转移功能以及自动恢复机制,保证单点发生故障时,可以快速的响应,保证系统的正常运行;


高稳定性:应用系统的高稳定性,可以说是墙体。作为一个应用系统,如果不能保证稳定运行,任何的风吹雨打都可能导致系统不稳定,那么这样的系统往往也是无法凝聚客户的,如何保证高稳定性:

1.监控与报警:系统的稳定性可以尽可能的保证,但是必要的监测系统一样重要,通过监测系统各项指标,设定合理的阈值,一旦超出立即报警,及时处理,提高系统的稳定性;

2.系统升级:必要的系统升级是需要的,通过系统升级修复已知的安全漏洞和稳定性问题,从而保证系统稳定性;

3.数据备份与恢复:定期的进行数据备份,保证发生不可预见情况时可以快速的恢复数据,保障系统稳定;

4.最佳实践:整个系统进行过程,严格遵循开发、部署、运维的最佳实践,保证系统安全编码,可扩容,持续集成、部署等,保证系统稳定。


高性能:应用系统的高性能,可以说是屋顶,漂亮的屋顶必不可少,但是不漂亮的屋顶,可以遮风挡雨的屋顶一样也可以接受,这就是高性能。因此保证高性能,可以让你的系统显得很完美,如何保证高性能:

1.优化资源分配:实际场景中,需要根据业务的需求合理分配服务器CPU、内存、磁盘I/O等资源,减少服务器瓶颈出现的可能;

2.代码优化:除了对硬件设施资源的合理分配优化,应用程序方面也不能落下,通过不断地对应用系统代码进行性能分析和调优,提高应用系统代码的应对极端情况的逻辑处理能力,提高系统的性能;

3.引入缓存:当应用系统代码层面的优化达到最大时,可以通过引入缓存,比如Redis等缓存工具来提高数据访问速度;

4.压力测试:没有经过压力测试的系统,往往是不能保证高稳定性的,未来的数据量无法预知,因此只能最大限度的通过压力测试,提前预估系统承载极限,并提前指定好后续的扩容方案以及负载均衡方案,保证系统稳定运行。


在实际业务场景中,“三高”是真实存在的吗

个人认为,在实际业务场景中,【三高】是真实存在的,只是实际业务场景中的三高不是一个固定的标准,而是一个动态的标准,随着数据量以及请求并发量的不断提升,随着系统的不断扩容,那么对于达到三高的要求也就不断升高,因此说,实际业务场景中,达到三高是一个动态的过程,而不会是一个固定的点达到三高。或者也可以说,实际业务中,应用系统一直在为达到三高的标准动态提升中。

你会选择用“三高”来评价系统开发工作吗

从技术负责人的角度来看,要求应用系统达到【三高】标准来评价系统的开发工作,可能会有点不太现实。对于应用系统的开发阶段,应重点保证应用系统的整体架构设计以及缓存、数据库等符合三高规范,开发工作可以适当以功能为主,如果项目从一开始就奔着最终的三高去做,那么前期的投入会是一个很长的阶段,这个阶段是不会有任何回报的,这对于企业来说是不太能接受的。而如果采取阶段式提升系统性能的方式,或者说循序渐进的提升系统,这样经过长久以来数据量考验,业务系统处理考验的应用系统,往往才能更符合【三高】的标准。并且随着应用系统的不断升级迭代,最终达到的三高标准可能比一开始就定好三高标准的标准更准确,因为这是经过实践验证过的三高。

相关文章
|
存储 负载均衡 监控
keepalived实现双vip部署
keepalived实现双vip部署
729 1
|
运维 Linux
keepalived详解(二)——keepalived安装与配置文件
keepalived详解(二)——keepalived安装与配置文件
970 1
fbh
|
关系型数据库 MySQL 数据库
mysql数据库执行mysqladmin flush-hosts方法
当连接错误次数过多时,mysql会禁止客户机连接,这个时候有两个办法解决: 1.使用mysqladmin flush-hosts命令清除缓存,命令执行方法如下: 命令行或终端:mysqladmin  -u  root  -p  flush-hosts 接着输入root账号密码即可   2.
fbh
7689 0
|
5月前
|
供应链 安全 Go
Go Modules 详解 -《Go语言实战指南》
Go Modules 是 Go 语言官方推出的依赖管理工具,自 Go 1.11 起引入,Go 1.16 成为默认方式。它解决了第三方依赖版本控制、项目脱离 GOPATH 限制及多模块管理等问题。本文全面讲解了 Go Modules 的基本原理、初始化方法、常用命令(如 `go mod init`、`go get` 等)、依赖管理(添加/升级/删除)、子模块开发以及常见问题排查,帮助开发者高效使用 Go Modules 进行项目管理。
|
10月前
|
负载均衡 IDE Java
SpringBoot整合XXL-JOB【04】- 以GLUE模式运行与执行器负载均衡策略
在本节中,我们将介绍XXL-JOB的GLUE模式和集群模式下的路由策略。GLUE模式允许直接在线上改造方法为定时任务,无需重新部署。通过一个测试方法,展示了如何在调度中心配置并使用GLUE模式执行定时任务。接着,我们探讨了多实例环境下的负载均衡策略,确保任务不会重复执行,并可通过修改路由策略(如轮训)实现任务在多个实例间的均衡分配。最后,总结了GLUE模式和负载均衡策略的应用,帮助读者更深入理解XXL-JOB的使用。
546 9
SpringBoot整合XXL-JOB【04】-  以GLUE模式运行与执行器负载均衡策略
|
存储 运维 监控
飞书深诺基于Flink+Hudi+Hologres的实时数据湖建设实践
通过对各个业务线实时需求的调研了解到,当前实时数据处理场景是各个业务线基于Java服务独自处理的。各个业务线实时能力不能复用且存在计算资源的扩展性问题,而且实时处理的时效已不能满足业务需求。鉴于当前大数据团队数据架构主要解决离线场景,无法承接更多实时业务,因此我们需要重新设计整合,从架构合理性,复用性以及开发运维成本出发,建设一套通用的大数据实时数仓链路。本次实时数仓建设将以游戏运营业务为典型场景进行方案设计,综合业务时效性、资源成本和数仓开发运维成本等考虑,我们最终决定基于Flink + Hudi + Hologres来构建阿里云云原生实时湖仓,并在此文中探讨实时数据架构的具体落地实践。
飞书深诺基于Flink+Hudi+Hologres的实时数据湖建设实践
|
机器学习/深度学习 存储 关系型数据库
深入Doris实时数仓:导入本地数据
深入Doris实时数仓:导入本地数据
|
SQL 运维 Serverless
阿里云 EMR StarRocks VS 开源版本功能差异介绍
阿里云 E-MapReduce Serverless StarRocks 版是阿里云提供的 Serverless StarRocks 全托管服务,提供高性能、全场景、极速统一的数据分析体验,具备开箱即用、弹性扩展、监控管理、慢 SQL 诊断分析等全生命周期能力。内核 100% 兼容 StarRocks,性能比传统 OLAP 引擎提升 3-5 倍,助力企业高效构建大数据应用。本篇文章重点介绍阿里云 EMR StarRocks 与开源 StarRocks 的对比与客户案例。
1015 5
|
存储 机器学习/深度学习 并行计算
95% 的算法都是基于这 6 种算法思想 (详细介绍)
95% 的算法都是基于这 6 种算法思想 (详细介绍)
471 4