| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 高可用(一)系统设计 -> 正文阅读 |
|
[Java知识库]高可用(一)系统设计 |
参考:javaguide.cn 文章目录高可用及其评价指标?可用性是指系统提供服务的能力,高可用是指系统即使在发生一些未知故障时仍然能够提供服务的能力,使用多少个9来评判一个系统的可用性,即系统可正常提供服务的时间与系统运行时间的比例。 导致系统不可用的情况?系统遭到攻击、硬件故障、网络故障、并发量激增、代码问题等。 提高系统可用性的方法?1 注重代码质量:养成CodeReview的习惯,避免内存泄漏、循环依赖等问题。 2 使用集群:避免单点故障,例如mysql集群、redis集群、zk集群等。 3 限流:何为限流,为什么做限流: 限流算法: 限流实现: 单机限流:Google Guava 自带的限流工具类 RateLimiter 。 RateLimiter 基于令牌桶算法,可以应对突发流量。 分布式限流:借助中间件限流 :可以借助 Sentinel 或者使用 Redis 来自己实现对应的限流逻辑。 4 降级和熔断:降级:降级就是为了解决资源不足和访问量增加的矛盾。在有限的资源情况下,为了能抗住大量的请求(服务器压力剧增时),就需要对系统做出一些牺牲。放弃一些功能,保证整个系统能平稳运行。 熔断:熔断模式可以防止应用程序不断地尝试可能超时和失败的服务,能达到应用程序执行而不必等待下游服务修正错误服务。熔断一般是指当依赖的外部接口出现故障时,断绝和外部接口之间的关联。 注:常用的流量控制和熔断降级框架是Netflix Hystrix和alibaba Sentinel。 5 超时和重试:请求时长超出某个阈值得不到响应时,抛出异常。 6 异步调用:异步调用借助消息队列,在用户请求完成之后就返回结果,异步处理请求,待处理完成后,再通过短信或者邮件通知。为了可用性,允许系统返回中间状态,牺牲强一致性,保证最终一致性。 7 增加缓存:如果系统并发量很高,当突然有大量请求直接打到数据库上,可能会导致数据库宕机,此时可以给数据库加缓存。比如redis最大的特点就是速度快,将热点数据存入内存,极大地提高并发量。 8 容灾备份和异地多活:传统灾备:做好重要数据的备份。建立多个完全相同的系统,当某个地方的系统挂掉,切换到另外的系统,继续提供服务。 同城灾备:抵御「机房」级别的风险。 参考:异地多活 灰度发布:(金丝雀发布)逐步发布。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 2:07:50- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |