你的系统都有哪些稳定性的保障手段?

今天被面试官问到,你们的系统都有哪些稳定性的保障手段,当时回想了一下,说出了高可用集群,负载均衡,限流削峰,事务回滚一致性,数据库容灾,备用方案,缓存落地与持久化,灰度发布,数据库主从复制,读写分离等,回来后总结了一下这方面的知识,希望大家互相学习

一.数据库方面
衡量一个数据库的吞吐量我们可以看从这两方面看:
内在因素:
• 确定数据库是MySql还是Oracle,不同数据库的搜索引擎和隔离级别都是有差异的。
• CPU是几核?现在的数据库都充分运用了多核CPU的并行处理能力。
• 内存多大?数据库的索引数据、缓存数据都会进入内存中。
•去磁盘的IO能力:数据库文件都存储在磁盘中,所以磁盘的IO能力是影响数据库性能的直接因素。
• 网络宽带:网络的上行和下行带宽,数据库服务器可支持的最大连接数是多少。
外在因素:
• TPS:每秒处理的事务个数,主要是对事务性存储引擎的一个性能指标,比如对数据库增删改
• QPS:每秒的查询处理量,也就是查询,我们常说的并发能力就是TPS
• IOPS:•每秒磁盘进行的I/O操作次数

那么我们可以从以下几个方面来保障数据库系统的稳定性:
1.做数据库并发量评估最好的方法就是做数据库压力测试,在做压力测试的时候我们可以一点一点的加压力,逐步的得出数据库的tps和qps,这样也能判断出能支撑接入的程序和业务,常用的压测工具有 sysbench、Tpcc-mysql 、mysqlslap
2.机器数量:通过压测能预估每台机器能够达到的qps,以及预估系统最大需要承受的qps,来决定机器的数量。假设每台机器能够承受的最大qps是1000,而我们系统预估的qps是3000,这时候就需要三台机器去提供服务。
3.分库分表:单机的存储容量、连接数、处理能力都有限,当单表的数据容量达到1000W或100G以后,做很多操作时性能就会下降,此时要考虑将数据分散到多个数据库中,通过扩充主机的数量来缓解单一数据库带来的性能问题。
4.主从复制,读写分离:通过增加数据库服务器的个数达到集群,主服务器负责写操作,多台从服务器负责读操作,以此来提升系统性能。
5.缓存:将热点数据放入缓存中,减少数据库的压力,这里的缓存分为本地缓存和分布式缓存,提高缓存的稳定性和命中率。
6.异步:引入消息中间件进行异步解耦和流量削峰,提高系统的响应速度。
7.限流:设置限流的阈值,当触发该阈值的时候自动限流,牺牲部分的流量来确保系统的稳定性。
8.日志服务:接入日志服务,比如阿里云的sls,在系统进行日志的埋点,为以后问题的排查提供帮助。
9.系统监控:可以接入普罗米修斯,对系统的cpu、内存、gc情况,各种中间件进行监控。
10.灰度发布:又名金丝雀发布,进行A/B testing,让一部分用户继续用产品特性A,一部分用户开始使用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。可以提前获得用户的使用反馈,发现重大问题可回滚“旧版本”,减少损失。
11.熔断/降级:当服务器压力剧增的时候,根据当前业务情况及流量,对一些服务和页面进行有策略的降级,以此来缓解服务器资源的压力。

以上是我个人总结,如果有更好的方法欢迎提出来~

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值