高可用和可伸缩架构.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
⾼可⽤和可伸缩架构 李道兵
 七⽜云存储 2015-03 啥叫⾼可⽤? • 狭义:单台机器当机后⽤户⽆感知 • 延伸: 单台设备(主机,⺴卡,交换机,⺴线)失效后 ⽤户⽆感知、单个服务异常时⽤户⽆感知 啥叫可伸缩? 当业务量增⻓时,可以简单通过加机器布服务来解 决,那么这个服务就是可伸缩的 你想讲啥? 想填⼀下这张表 ⾼可⽤ 可伸缩 ⼊⼝层 业务层 缓存层 数据库 ⼊⼝层如何做⾼可⽤? • 使⽤⼼跳技术: Keepalived 就提供这个功能 • ⽐如机器A IP是 ,机器 B 的 IP 是 , 那 么再申请⼀个 IP (我们称之为⼼跳IP), 平时绑 定在机器A上⾯,如果 A 当机,那么 IP 会⾃动绑定 在机器 B 上边. • DNS层⾯绑定到⼼跳IP即可 keepalived 有什么使⽤限制么? • 两台机器必须在同⼀个⺴段 • 服务监听必须监听所有IP ,如果仅仅监听⼼跳IP ,那 么从机上的服务(即不持有⼼跳IP的机器)会启动失 败 • 服务器利⽤率下降(混合部署可以改善这⼀点) 两台机器,两个公⺴IP ,DNS上把域名同时定位到 两个IP ,这样算⾼可⽤么? 不算,如果⼀台机器当机,那么就有⼀半左右的⽤ 户⽆法访问 业务层如何做⾼可⽤? 业务层不要有状态,状态分散到缓存层和数据库。 只要没有状态,业务层的服务死掉后,前⾯的nginx 会⾃动把流量打到剩下的服务。 友情提醒:不要因为想让服务端⽆状态就直接⽤ cookie session, ⾥边的坑有点⼤,考察清楚后再⽤ ⽐较好。 缓存层如何做⾼可⽤? 缓存层分得细⼀点,保证单台缓存当机后数据库还 能撑得住即可。 中⼩规模下缓存层和业务层可以混合部署,这样可 以节省机器。 你这也叫⾼可⽤,明明是祸⽔东引嘛 也有办法,缓存机启⽤主从两台。 主服务活着的时候,主服务读,主从服务都写。 主服务当机后,从服务升级为主服务。主服务恢复后,变成新的从服务。 这个模式也有不少变种,但⼤部分都需要两倍的服务器,⽽且性能下降。 数据库层有什么⾼可⽤⼿段么? MySQL 有主从模式,还有主主模式都能满⾜你的需 求。 MongoDB 也有 ReplicaSet 的概念,基本都能满⾜ ⼤家的需求。 ⼩结 ⾼可⽤ 可伸缩 ⼊⼝层 ⼼跳 业务层 服务⽆状态 缓存层 减⼩粒度 数据库 主从模式 可伸缩 ⼊⼝层如何提供伸缩性?这个我知道,直接铺机器, 然后 DNS 加 IP 就可以了吧? 可以,但也有需要注意的地⽅: 尽管⼀个域名解析到⼏⼗个IP没有问题,但是很多浏览器客 户端只会使⽤前⾯⼏个IP ,部分域名供应商对此有优化(⽐ 如每次返回的IP顺序随机),但这个优化效果不稳定。 推荐的做法是使⽤少量的 nginx 机器作为⼊⼝,业务服务器 隐藏在内⺴(HTTP类型的业务这种⽅式居多)。另外,也 可以在客户端做⼀些调度(特别是⾮ HTTP 型的业务,⽐如 直播)。 业务层伸缩性如何? 跟应付⾼可⽤⼀样,保证⽆状态是很好的⼿段。加 机器继续⽔平部署即可。 缓存层伸缩性如何? 如果低峰期间数据库能抗住,那么直接下线缓存然 后上新缓存就是最简单有效的办法。 如果扛不住呢? 取决于缓存类型了,可以把缓存分为三类: 1. 强⼀致性缓存:⽆法接受从缓存拿到错误的数据 (⽐如 ⽤户余额,或者会被下游继续缓存这种情形) 2. 弱⼀致性缓存: 能接受在⼀段时间内从缓存拿到错误的 数据 (⽐如微博的转发数) 3. 不变型缓存: 缓存key对应的value不会变更 (⽐如从 SHA1 推出来

文档评论(0)

xingyuxiaxiang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档