互联网微服务架构高可用设计思路

1.为什么微服务需要高可用?

  高可用的服务能让客户体验更好,从而容易实现公司的目标和利益最大化,如果一个公司的服务经常挂,用户体验收到影响,再好的产品都很难留住客户。

2.影响服务高可用的原因?

  • 硬件方面
    • 硬件不可靠 容易出故障
    • 硬件生命周期 上市公司的部分服务器硬件一般3年左右就要换掉
    • 网络划分 因为服务间需要网络通信,网络肯定会在某个时间出现问题
  • 软件方面
    • bug 无论在厉害的开发人员也会多少制造出一些bug
    • 性能 无论你的算法和代码多么优雅和强大,都会遇到瓶颈和极限
    • 服务间影响 服务间相互影响,可能A服务短时间调不通B服务

3.高可用服务评估方式

  • 传统方式
  • 按照服务停机时间/总时间衡量,一般方式如下:
  • 5个9 一年停机时间不超过5分钟
  • 4个9 一年停机时间不超过53分钟
  • 3个9 一年停机时间不超过9小时
缺点:如果服务没人使用,或者使用量很少,则实际参考意义打折
  • 科学方式

一段时间内(比如一年)的停机影响请求量占比

  • 停机影响的请求量/总的请求量

4.微服务高可用设计方式

1. 服务冗余(无状态)
多部署几个实例,多机房或者多机柜,冗余部署的服务**无状态**
服务无状态,请求任何一个实例,都是一样的结果
2. 负载均衡
负载均衡策略要合理可控,不然总是负载到一个实例上,很快就会产生瓶颈
3. 服务幂等
如果一个业务请求,由于某些原因多次请求,要保证执行多次结果一致
4. 超时设计
5. 限流
6. 降级
7. 熔断
8. 缓存
9. 分库分表
10. 架构拆分
11. 服务治理
12. 服务实时监控

对服务接口的平均耗时,请求异常数等信息实时监控,根据策略自动触发服务降级或者熔断等
13. 服务分级
对自己公司的服务进行分级管理,比如按照事故影响程度区分成一级、二级、三级服务,每个等级的服务使用不同的定义标准和降级等策略
14. 异步
15. 停止服务方案
比如晚上八点升级服务,可以通过网关开关来拒绝请求,已定进来的请求,可以根据超时时间或者日志是否打印等方式来验证业务是否执行完。
比如公司的订单支付服务,肯定是一级服务,一旦出现问题,对公司的影响巨大,可能造成收入减少等严重后果,这样的服务就应该采用更高级别的高可用策略

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值