2/28 业务系统高可用设计(上)
前端站点
前端站点主要会用到两个组件: CDN(阿里云内容分发网络) + OSS (阿里云对象存储)
CDN 主要用于分担源站压力,避免网络拥塞,确保在不同区域、不同场景下加速网站内容的分发,提高资源访问速度。
OSS 主要用于存储前端的 JS 和图片等 。
主要部署架构如下
阿里云 CDN 的高可用设计
持续更新的精准 IP 数据库:IP 数据库的作用是在用户的 DNS 解析请求转发到了 CDN 调度系统时,调度系统会判断用户的地区和运营商归属,以此来为用户分配就近接入的同运营商 CDN 节点。为了确保 IP 数据库的数据处于最新的状态,数据库一直在持续地更新。
提供 HTTPDNS 服务(需要客户端兼容):采用 HTTPDNS 这项技术使得用户终端可以绕开运营商的 Local DNS,直接采用 HTTP 协议去访问调度系统,请求所需要访问的域名的最优接入节点,这样可以避免 DNS 劫持所带来的业务安全问题。
节点数据分析:CDN 调度系统通过链路状态系统去实时地分析整个缓存系统中的所有节点和链路的健康状况,为用户选择最优的接入节点,避免因为接入节点质量不佳而影响到用户访问体验。
基于内容调度,提高访问命中率:在大文件下载和视频点播这两个应用场景上经常使用 302 调度这种基于内容的调度技术,302 调度是一种中心调度方案,用户在请求某一个资源的时候,在完成域名 DNS 解析之后,用户请求将会先访问到中心调度系统上,然后中心调度系统将会解析用户请求需要访问的内容,再通过 302 重定向的方式为用户分配最佳接入节点。
开启全球站点加速。阿里云 CDN 在全球拥有 3200+节点。中国内地拥有 2300+节点,覆盖 31 个省级区域,大量节点位于省会等一线城市;海外、中国香港、中国澳门和中国台湾拥有 900+节点,覆盖 70 多个国家和地区。
OSS 的高可用设计
阿里云 OSS 可提供 99.9999999999%(12 个 9)的数据持久性,99.995%的数据可用性。
在本方案中开启同城冗余存储,使其具备抵抗可用区级故障的能力
API 网关
阿里云 API 网关本身采用了高可用分布式部署架构,但是不同类型的实例的 SLA 不同。
本方案中采用专享实例, 可以获取独享的资源,包含公网入口 IP 地址、仅允许自己 VPC 访问的内网 IP 地址、公网出口带宽、独立隔离的服务器集群等,最小的可用性 SLA 可以达到 99.95%。
应用集群
应用运行在阿里云的 K8S 托管集群上,其中 Master 节点为阿里云托管,Worker 节点自行购买 ECS 接入。 架构如下
各个组件的高可用设计如下
业务应用: 运行在 Pod 上,由 kubernetes 进行调度,至少两个实例,设置调度策略,同一个业务的 pod 落在不同的 worker 上;另外针对每个实例,都会设置健康检查和就绪检查,确保 pod 的可用性
worker 节点: worker 节点为 ECS 主机,在不同的可用区上部署云主机,每个可用区至少两个主机实,抵抗可用区级故障
master 节点: 由阿里云进行管理,包含至少两个 kube-apiserver 实例和三个 etcd 实例,并且会部署在不同的可用区以提供可用区级别的高可用性。以下是阿里云托管集群的 Master 节点部署架构
版权声明: 本文为 InfoQ 作者【hackstoic】的原创文章。
原文链接:【http://xie.infoq.cn/article/7adfd5c11f671d1861525c2d7】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论