高可用系统,追求多个9的可用性,对于分布式系统来说,我们通常都认为遵守CAP理论,根据业务场景,取平衡。

高可用,首先想到的是避免单点,防止单点故障。

1.负载均衡

硬均衡:F5设备 ,standBy从,主备切换。软均衡:类似,实现方式LVS之类。

具体均衡的策略:

A.集中策略:权重、随机、负载能力(静态与动态)、connection等B.分布策略:基于Gossip模型的方式。一般是内部的均衡策略

对于负载均衡,也要进行细分,比如请求流程和返回响应流程:

请求流程:1.分配策略;2.web请求会话处理方式
返回数据:1.经由负载均衡点;2.直接返回

中心负载均衡的缺陷:将请求分发到业务机器,业务机器对请求进行queue,如果其中某一个请求耗时,则导致该queue的请求任务被延时,很多任务会超时,类似于超时收银柜台某一个客户耗时,但是其它柜台却无法协同解决该问题(按照理想设计应当其它节点协同处理)。基于此,twinter提出了一个unicorn的解决方案,该方案是负载均衡机器对所有请求只发到一个队列,然后业务机器在该队列获取任务处理。某一个业务机器的耗时操作,并不影响后面的任务处理。

2.分布式环境下的事务

分布式环境下的强事务性,2段式提交、3段式提交这种分段时提交方式,如果任意一个节点执行出错,则进行rollback操作;

另外一种方法是基于paxos算法,类似于“民主集中制”,以多胜少。不在意个别master节点操作失败,如果大部分master节点操作成功,则操作被认为是成功的。

paxos算法,是在一篇paper中提及的,模拟的是议员议会审议的一种制度安排,basic paxos算法角色众多,不易实现,工业界又提出了multi paxos算法,简化了角色,但是核心思想是一致的。

这一块在阿里关于中间件的技术中有详细说明。

机房隔离和机房切换的问题比较复杂,网络的延时不可控。缓存失败的切换,导致流量激增,很可能也会导致新接入的机器快速奔溃。所以很多时候经常听到“平滑过渡”的方案。负载均衡方案中,也会考虑业务请求到业务机器,业务机器失败后流量是否导致后端集群不稳定?比如分布式缓存系统,某部分失败,信息的同步?

3.应用的高可用

1.Fail Fast

2.对接口与对象的保护

在网站的设计中,也要避免第三方依赖导致系统宕机,最好有一个option。比如在数据库缓慢的query,导致请求队列堆积,可以考虑优先使用缓存策略,分担压力。

对于一个系统,避免单点和应用的高可用是两个核心方面。如何保障系统面临的压力,就有了垂直伸缩和水平伸缩的选择。

4.构建可伸缩系统

垂直伸缩:通过增加单机的cpu、内存等方法扩充系统容量。

1.增加CPU后,若系统性能未能提升,可以考虑以下几个问题:A.是否存在锁竞争问题B.支撑并发请求的线程数量固定(建议使用Runtime.getRuntime().availableProcessor()来合理分配线程数)C.单线程处理方式改为多线程处理

水平伸缩:比较复杂,涉及面很广,一般采用系统的切分、分表分库、数据库的分离、分布式系统等,涉及到业务系统切分、文件系统的分布式、网络的弹性、计算的并行等,根据具体应用、具体的业务要求选择不同的方案,逐步“进化”。

数据库访问:异步访问,Jboss Netty的测试报告中,异步数据库的访问方式可以大大提高访问数据库的性能。

构建高可用的方式总结相关推荐

  1. 如何构建高可用和可伸缩的架构?

    如何构建高可用和可伸缩的架构? 发表于2015-09-22 13:42| 4669次阅读| 来源CSDN| 5 条评论| 作者蒲婧 CTOCTO俱乐部CTO讲堂云存储七牛架构高可用 width=&qu ...

  2. 借助混沌工程工具 ChaosBlade 构建高可用的分布式系统

    为什么80%的码农都做不了架构师?>>>    在分布式架构环境下,服务间的依赖日益复杂,可能没有人能说清单个故障对整个系统的影响,构建一个高可用的分布式系统面临着很大挑战.在可控范 ...

  3. 构建高可用ZooKeeper集群

    构建高可用ZooKeeper集群 2017/01/23 | 分类: 技术架构 | 0 条评论 | 标签: ZOOKEEPER 分享到:9 原文出处: cyfonly ZooKeeper 是 Apach ...

  4. .net core下简单构建高可用服务集群

    一说到集群服务相信对普通开发者来说肯定想到很复杂的事情,如zeekeeper ,反向代理服务网关等一系列的搭建和配置等等:总得来说需要有一定经验和规划的团队才能应用起来.在这文章里你能看到在.net ...

  5. 杜云飞java_Akka实战:快速构建高可用分布式应用 杜云飞著 PDF下载

    资深Java技术专家在大量实践后的经验与教训的总结. 以实战为导向,从Akka架构.组件.工具包.分布式.集群.微服务等多个角度展开,为构建高可用.高性能.分布式应用提供了详尽指导. Akka是一款非 ...

  6. 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群

    高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...

  7. 《构建高可用Linux服务器 第3版》—— 1.2 全面了解Linux服务器

    本节书摘来自华章出版社<构建高可用Linux服务器 第3版>一 书中的第1章,第1.3节,作者:余洪春 ,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.3 ...

  8. 基于弹性计算平台——构建高可用、可扩展的应用

    文 / 陈波 前不久,Facebook宣布投资10亿美元收购仅成立15个月的移动照片分享应用Instagram,消息传出时,人们不仅惊叹于这笔巨额的交易,更为这支13个人的小团队感到不可思议.Inst ...

  9. rsync+nfs构建高可用文件系统详细步骤

    当系统要求高可靠.高性能时,一般采用分布式部署方案.应用服务器分布式部署比较成熟,应用中用到的文件(如文件.图片等上传下载)系统有如下几种方案: 1.存储在文件目录:传统处理方式. 2.存储到存储云上 ...

最新文章

  1. django-后台sms管理系统的css框架
  2. Android-如何开发一个功能强大的图片选择器
  3. Python面试基础题-2018-12-26
  4. 告别运营怪圈,不做“背锅侠+加班狗+低薪族”!
  5. 纯c语言实现动态分配多维数组的方法
  6. 淘宝端智能演进和思考
  7. eclipse 国内镜像高速下载
  8. ASP.NET MVC——Entity Framework连接mysql及问题
  9. 51 单片机 pcf8591 四路ADC 读取 数码管显示 LCD1602显示 程序
  10. 处理自己计算机某的端口被占问题
  11. wps ppt word 双屏幕同时浏览技巧
  12. php对接建行h5网页支付
  13. Codeforces Round #507 (Div. 2) B - Shashlik Cooking(模拟)
  14. javascript中一个字符占几个字节
  15. 最新的中国风歌曲——《颜如玉》
  16. 《H打飞机》技術支持網址
  17. 《深入理解计算机系统》学习笔记——处理器体系结构
  18. SpringBoot+redis实现用户或者ip恶意单位时间内访问
  19. Java多线程编程(四)——死锁问题
  20. Java项目不挂断运行,运行jar包

热门文章

  1. Arduino 实时时钟DS1302模块
  2. 经营性网站必须要办理ICP增值电信业务经营许可证吗?
  3. 了解贝尔曼·福特算法
  4. 【SAP】ABAP——Web Service简介与配置方法
  5. 计算机教学能力提升体会,学习《信息技术助力教学能力提高》感悟
  6. 快递员上门取件api接口技术对接java文档
  7. opengl编程基础篇
  8. 数据恢复 diskginus
  9. Pandas数据分析案例(盛华化工锅炉排放数据可视化分析)
  10. windows 防火墙解除或禁止ping方法