计算机基础——互联网系统高可用性总结


多年 To C系统开发维护经验,负责系统不能出半点差错。
如果出问题,运气好的只是绩效问题和跨部门修复大量上下游数据。运气不好的恐怕要被祭天。
常在河边走,哪有不湿鞋。但在同一个地方湿鞋就不好了。所以平时总结一些经验,防止不重复再同一个地方湿鞋。
同时也偶尔看看别人如何湿的鞋,防止自己在相同地方湿鞋。

保证线上系统运行稳定性。

部署策略:

  1. 业务的垂直隔离部署。将相互独立的业务流程拆分,独立服务器部署。保证相互之间不影响。
  2. 多机房异地多活部署。防止单点故障。

监控+报警:监控报警相辅相成缺一不可。

  1. 接口监控+报警:监控主要包含可用率、性能、调用次数三类。(重要程度以顺序为准)
  2. 系统服务器监控:主要包含, cpu,硬盘,内存,堆栈。
  3. 自定义报警:当系统运行超过预期时需要自定义报警,此报警非常重要,如果发生此报警,则需要人为处理。
  4. 中间件报警:例如线程池报警,数据库报警等。
  5. 业务监控报警:例如业务数据生命周期和流程节点流转时间监控报警。(例如订单支付成功率,80%的订单在几秒内是否支付等)。

降级:依赖的下游接的容灾降级处理。

  1. 如果强依赖接口,当接口不可用时,阻塞流程,及时报警。
  2. 如果非强依赖接口,当接口不可用时,降级处理。

限流。

  1. 大促时,针对现有服务的tps,qps吞吐能力做限流处理。

并发处理

  1. 接口层面加分布式锁。
  2. 数据层面加乐观锁。

数据部分。

  1. 分库分表+数据结转+数据异构es。
  2. 数据准确性监控。使用数据核对功能,保证上下游、跨系统数据准确性和一致性。

性能部分。

  1. 多级缓存:多级缓存保证数据库稳定性。缓存主要方式为本地缓存(guava,caffeine),集中式缓存(redis)。本地缓存一定要设置数据大小和容量,防止数据过多时造成jvm内存溢出。集中式缓存一定要设置过期时间,防止redis服务器内存和硬盘空间不足。

保证新功能上线稳定性。

  1. 接口向上兼容:保证新功能上线,前端和上游系统老功能不受任何影响。
  2. 数据库改动上线:如果上线涉及数据库改动。一定要优先执行DDL语句。修改之前评估是否锁表和锁表时间。如果表的数据量很大,一定保证DDL执行完成后再上线系统。数据库增加新字段要设置可为空。
  3. 灰度验证:新功能上线发布时需要与产品和业务达成共识,制定灰度切换方案,保证系统平滑切换。
  4. 开关:重要新功能上线,增加开关逻辑,当出现重大问题时,用开关切回老流程。注:回滚也能达到切回老系统的目的,但是如果上下游涉及系统过多,则回归系统过多,耗时较长。所以建议使用开关。
  5. codeReview:关键节点保证包含监控报警降级等。
  6. 自动化测试验证:上线后快速回归已有功能。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值