java高可用

本文探讨如何构建高可用系统,包括服务拆分、集群化、负载均衡、限流、降级、隔离、熔断和异步调用等策略。特别强调了Hystrix在服务线程隔离中的作用,防止服务级联故障导致系统瘫痪。同时,介绍了监控、灰度发布和数据高可用的重要性。
摘要由CSDN通过智能技术生成

如何设计一个高可用的系统?[面试8.0]

服务拆分
集群化
负载均衡(Nginx,Feign)
限流
降级(边缘业务降级,重要业务不能降级,针对线程数的降级,超时降级)
隔离
熔断,断路器(针对接口,断路器断路后会走fallback,半开状态时检测服务是否恢复)
异步调用(多线程异步,消息队列)
失败重试(网络不是稳定的,需要间隔重试)
灰度发布(金丝雀发布)
快速回滚
系统监控
注: 其中网关一般用Hystrix做信号量的隔离机制

应用层高可用:
集群化部署
负载均衡
服务的高可用:
分布式部署
调用端实现负载均衡,由注册中心通过心跳判断发现不可用服务时通知调用端更新服务列表,剔除不可用服务
服务分级管理: 如分为核心服务,非核心业务并且隔离部署
设置超时: 超时后抛出异常,应用程序捕获后根据负载均衡策略转发请求进行重试
异步调用: 通过消息队列,比如用户注册需要发短信
服务降级: 一般是对非核心业务进行降级(边缘业务),监控系统监控到后自己降级就可以了
数据的高可用:
冷备,热备: 备份成多个副本放到各个服务器上
发布的高可用:
预发布验证: 现在预发布机器上检查
灰度发布(金丝雀发布): 让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来
监控的高可用:
数据采集: 用户在页面的操作情况在js中做请求,服务器做记录,看用户使用是否正常
业务运行: 形成处理汇总,看是否业务运行正常
服务器状态: CPU,内存使用情况,负载等看服务器运行是否正常
监控管理: 系统报警(超过阈值),失效转移,自动降级(关闭非核心业务)等

99.99,99.9,99什么意思:
表示网站可用性的度量 = 网站总可用时间 / 总运行时间 * 100%
一般网站要达到99->1年内网站不可用时间要小于88个小时
SLA:服务级别,服务级别达到99.99

什么是Hystrix服务线程隔离?[面试6.0]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2023年Java面试宝典

您的鼓励是对我的肯定,共建希望

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值