高性能、高可用服务化架构要点

高性能/并发架构原则

  • 无状态
  • 拆分
  • 服务化
  • 消息队列、消息驱动
  • 数据异构
  • 负载均衡
  • 分级缓存
  • 并行化、异步

服务平滑上下线
优点
请求在升级服务时,为了不丢失任何一个请求需要扩展

  • 优雅停机 graceful shutdown (关闭时,有新的请求要拒绝连接;正在进行的请求需要等结束后正常关闭)
  • 扩展 RibbonLoadBalancedRetryPolicy
  • 多久节点上线间隔一分钟以上

跨机房调用:
nacos本身支持异地多活
如果机房A没有服务B
那么机房A会调用机房B的服务B

分级缓存

  • 客户端缓存(移动端、浏览器)
  • 服务端缓存

常见缓存

  • http (浏览器)缓存
  • 反向代理缓存 (nginx)
  • 分布式缓存 redis memcache etc.

解决系统可用性的手段

  • 减少故障出现次数
  • 缩短故障处理时间

服务化时间-服务治理
流量调配-权重调节
服务路由:机房感知、服务自定义分组、动态路由
调用链数据分析
监控报警
实时日志查询elk

无状态单实例故障

  • 健康心跳
  • 负载均衡
  • 快速失败
  • 超时时间
  • 控制重试
  • 自动恢复

有状态单实例故障

  • 第三方仲裁HA数据库主备切换

自动选举

  • Paxos
  • Raft

服务集群故障
原因

  • 容量不足
  • 变更引起
  • 网络故障
  • bug
  • etc...

解决办法

快速弹性扩容、限流、熔断&降级
CI/CD DevOps
服务器多AZ(单元化部署)
Auto Test / Code Review

服务集群故障-自我保护
限流

  • 按系统负载限流
  • 按业务优先限流

降级

  • 依赖模块的降级
  • 业务功能的降级

机房层面故障

  • 网络核心故障
  • 接入层故障
  • 机房断电

多机房/可用区容灾

同城-多可用区部署架构-单元化、多活

架构演进方向- cloud Natice (service Mesh)
(istio)

service Mesh - envoy proxy & nginMesh

契约测试工具

  • spring cloud contract
  • pact
  • mountebank

猜你喜欢

转载自www.cnblogs.com/legiorange/p/10856266.html