




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 海量数据系统的高可用架构设计挑战高可用架构建设的流量与业务复杂性何为高可用?原则有三:故障监测与排除、消除达点故障,互备和容灾。大流量网站的架构建设最重要的挑战来自“流量”与“业务复杂性”两方面:流量。高可用架构首要应对的是大流量且变动复杂场景下的可用性问题。故在建设过程中,架构需要具备高伸缩性,能实现快速扩展。读Cache也是解决大流量带来麻烦的手段。业务复杂性。于网站而言,业务复杂性比流量带来的挑战要大,因除技术性问题,还涉及人的因素。如整个业务流程没经过很好的整理,后续会带来繁多且复杂的问题。在网站建设过程中,一方面架构上要做到分布式化,业务功能域要做到服务化,这样可以保证架构的高可用
2、、高伸缩性。另一方面业务架构与组织架构要相匹配,网站流量逐渐增大的同时组织架构与业务架构要随之变化,相互匹配。反之,如在业务发展过程中,做系统变更会带来一系列问题。如开发和发布效率会因写码风格和发布频率(假设所有业务写到同一系统)受到影响;问题排查找不到对应的负责人等。实践故障检测与排除、分布式服务化改造和大流量系统高可用迭代2011 年,淘宝 PV 处于从 1 亿到 10 亿的 PV 阶段,系统性能成为最大挑战。针对大流量系统设计高可用的静态化方案,应用在详情、购物车以及秒杀系统中;参与双11大促时,交易全链路进行优化,这些经验在滴滴也得到了应用实践。主要为以下三方面:针对故障检测,做了全平
3、台压测针对业务快速增长情况,对系统做分布式服务化改造大流量系统高可用迭代故障检测与排除全平台测压压测是全业务,全流程的压测。在正常情况下制造线上系统的线上流量,也就是自己来攻击自己系统,流量可自控。产生流量的线上发压平台如上图,是产生流量的线上发压平台。和淘宝浏览某个商品行为相比,滴滴流量发起较复杂,涉及时间、地理位置等多维度。平台有前台 Web 系统、后台服务系统和数据存储三层。在测压过程中,遇到一些问题。如:测试数据和线上数据如何区分开?原则上是可写在一起,但为避免带来问题,这里做了和正式表一样的影子表,同库不同表。怎样识别是在做压测?用 Trace 来传递标识,通过中间件传递,中间件不完
4、善也可通过参数来做。由于滴滴的数据和一般数据存在差异,全平台压测数据构造要做特殊处理。发单时产生的当前位置、目的地等数据都会回传系统。这里会出现坐标问题,如用真实坐标会干扰线上某些因素。故把坐标偏移到太平洋,模拟端,把精度、纬度等也做偏移。虚拟乘客和司机,做 ID 偏移、手机号替换。如下都是在做全平台测压时,发现的问题:业务线顺风车:接口耗时增长,如列表页面:100ms = 700ms顺风车:日志搜集的上传服务夯死专快:派单访问缓存出现超时出租车:获取司机接口触发限流出租车:派单单条日志量太大影响性能基础平台NAT:2台NAT启动无用的内核模块,流量大时大量丢包LBS:位置服务写入超时,查周边
5、接口有超时地图:路径规划服务,到达容量瓶颈压测工具导致的其他问题专快计算超时:由于工具问题,司机和订单陡增,km算法超时,主要是日志过多导致的。分布式改造典型的分布式架构上图是典型的分布式架构。最重要的接入层和服务层要做到服务的无状态化,每个节点都需对等,因为这两层主要做读请求且请求量较大。做无状态化是便于横向扩展,当业务量大时,就可迅速部署机器来支撑流量。数据层大部分情况下都是有状态的,需解决的是冗余和备份,MySQL 要做存库,能读写分离,能做故障切换。分布式改造关键的技术点有三:分布式 RPC 框架:主要解决系统性关联问题,就是系统拆分,必须要解决系统之间的同步连接问题;分布式消息框架:
6、主要解决系统间的数据关联性,这是异步的,与RPC同步调用互补;分布式配置框架:主要解决状态问题,实际应用中接入层和服务层也是有状态的,最好做到无状态。因为每个机器可能存在差异,故要通过中间件,把差异性放到配置框架中解决。去年,滴滴做了服务治理相关的事。如下图,是早期的滴滴系统架构,router 接受层,到 inrouter 上层,中间有引入代码。下面是 Redis,本身是个代理。早期的滴滴系统架构这里存在的问题:上下游依赖硬编码在代码里;没有使用 inrouter/tgw 的 ip:Port;摘除和扩容需要代码重新上线,inrouter 有网络链路稳定性隐患,以及效率上的损失;没有清晰的服务目
7、录,API 文档以及 SLA 和监控。分布式 RPC 框架图目标是把一些服务之间的调用能够通过规范化方式串联起来。上下游通过名字服务,从上游和下游端口解耦,名字服务需要在全公司统一且名字唯一。Naming 服务就是做服务命名,服务注册和发现,到注册中心RPC通道,部署私有协议,具备可扩展性服务路由与容灾,动态路由,故障节点摘除这里需要提醒的是,目前滴滴技术栈还不统一,所以导致中间件会复杂一些,应该最早期把技术栈统一,选择 Java 或者 Go 等,可以避免后续的问题。服务命名要规范,服务名自描述,要构建统一服务树。为了效率和规范性,协议建议选择私有 RPC 协议。公有如 http 协议,测试方
8、便,带来方便性的同时也带来的其他问题,就是容易被滥用。服务路由建议是全局摘除,像机器一旦不可用就通知上游,及时摘掉,但也有一定的风险。如网络闪断,下面机器全挂,会导致所有服务都不可用。所以需在全员镇守情况下做全局确认,不要拖着整个服务,要从上游做决策,再换个IP,重新做一次。分布式服务化改造的大团队协作,从单业务系统做分布式改造的一个出发点就是解决大团队分工和协作问题。代码的分支拆分,减少代码冲突,使得系统独立,打包和发布效率都会提高;部署独立,线上故障排查和责任认定会更加明确。同时,带来的问题是依赖的不确定性增加,性能上的一些损耗。像一次请求,如果一下调来七八个请求,这也会带来一些问题,所以
9、这个过程要有一定的合理性,就是公司现在处于什么阶段,现在需不需要拆分。所以系统、效率等方面要做一个平衡。大流量系统的高可用迭代大流量系统的架构实现高可用的策略部署,带有分组功能的一致性 Hash 的 Cache、静态内容前置到 CDN 和热点侦测等。系统 APS 和服务层有五层代码如上图,一个系统 APS 和服务层有五层代码,通过水平扩展加机器也解决不了问题。在业务层,没办法做水平扩展,必须做有状态的变化,部署带有分组功能的一致性 Hash 的 Cache。为了具备更大的伸缩性需要把静态内容前置到 CDN。静态内容前置到 CDN在服务端即使做扩展,量还是有限,读的请求,读的数据往前推,最终推到
10、 CDN 上。CDN 体系比较多且有地域性,可抗百万级别的流量,但要解决冗余带来的时效性、一致性的问题。这样做带来的好处,除提高伸缩性,还节省带宽,节点分散,可用性更高。这里提醒下,CDN 可用性需要做评估,如不是自建,需要让提供 CDN 的供应商给出可用性指标,避免后续维系困难。热点侦测热点侦测流程图前台系统到后台系统,整个请求是有链路的,一个请求从发起最终到服务端,到数据库层中间需经历多层,过程中存在时间差。特定情况下,会有 1-2 秒延时。利用这一点,当前端请求自导到接受层时,做实时热点侦测,当发现接收层发生变化,可及时通过认证等手段对这个请求做标记,把热点数据记录下来。之后,把热点数据
11、的信息通知下一个系统,这样就可起到从上游系统发现问题,保护下游的目的。当发现某个请求特别热时,提前对它做拦截。热点数据通过实时发现,日志采集过来,做统计,然后把这个热点数据再导到写数据系统的后端系统 cache 中,这样可保护后端的部分热点系统。1% 的热点会影响 99% 的用户,这种情况在电商是特别明显的,如某个商品特别热卖,商品请求流量占全网流量很大部分。且上屏容易产生单点,查数据库时将定在同一机器。这样很容易导致某个商品会影响整个网站的所有商品。所以要在数据库做保护,如在本地做 cache、服务层做本地 cache、或者在数据库层单独做一个热点库等。大流量系统的高可用迭代,需要注意的点有
12、:热点隔离先做数据的动静分离将99%的数据缓存在客户端浏览器将动态请求的读数据cache在web端对读数据不做强一致性校验对写数据进行基于时间的合理分片实时热点发现对写请求做限流保护对写数据进行强一致性校验等经验高可用架构建设的体系化、积累和沉淀通过多年的高可用架构建设,这里有一些经验值得分享。最大的体会就是需要做稳定性体系化建设,包括建立规范和责任体系;其次就是工具要完善和体系化,以及需要配套的组织保障。建议在责任体系的建设方面,公司一定每年都要制定高可用指标(KPI)、故障等级也要明晰,影响多少客户都要做描述、责任和荣耀体系也同等重要,这是个长期且苦逼的事。工具方面,要完善且体系化,做规范,做 KPI,最终要做到工具化,通过工具化把流程、规范能固定。工具要体系化,像全机压测,单机压测等等都可做工具。一个高可用架构的建设,不是一朝一夕,需要各方面积累和沉淀,一定要注意三方面的处理流程。关于变更:在变更之前必须制定回滚方案,涉及到对变更内容设置开关,出现问题可快速通过开关关闭新功能;接口变更、数据结构变更、回滚要
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 注册土木工程师考试战斗力提升策略试题及答案
- 中型食堂承包配餐合同标准文本
- 个人劳动合同范例
- 高校物理学复习要点试题及答案
- 养殖共享合同标准文本
- 全英文外贸合同样本
- 劳务派遣白色合同范例
- 兑诊所合同范例
- 买卖小资产房合同样本
- 与银行合作买房合同范例
- 装配钳工(中级)试题库
- 养老护理员职业技能等级认定三级(高级工)理论知识考核试卷
- 餐饮业消防安全管理制度
- 研发费用加计扣除政策执行指引(1.0版)
- GB/T 20647.9-2006社区服务指南第9部分:物业服务
- 海洋油气开发生产简介课件
- 重庆十八梯介绍(改)课件
- 一级病原微生物实验室危害评估报告
- 设备机房出入登记表
- 起重吊装作业审批表
- 最新三角形的特性优质课教学设计公开课教案
评论
0/150
提交评论