一文详解:如何设计出高可用的分布式架构?
CDN 本质上就是一种网络缓存技术,能够把一些相对稳定的资源放到距离最终用户较近的地方,一方面可以节省整个广域网的带宽消耗,另外一方面也可以提升用户的访问速度、改善用户体验。 现实系统中我们一般会把静态的文件(图片、脚本、静态页面等)放到 CDN 中: 当用户访问网站页面上的内容 URL,经过本地 DNS 系统解析,DNS 系统最终会将域名的解析权交给 CNAME 指向的 CDN 专用 DNS 服务器。 CDN 的 DNS 服务器将 CDN 的全局负载均衡设备 IP 地址返回用户。 用户向 CDN 的全局负载均衡设备发起内容 URL 访问请求。 CDN 全局负载均衡设备根据用户 IP 地址,以及用户请求的内容 URL, 选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。 区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务。选择的依据包括:根据用户 IP 地址,判断哪一台服务器距离用户最近。 根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器上有服务能力。 基于以上条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的 IP 地址。 全局负载均衡设备把服务器的 IP 地址返回给用户。用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容返回到用户终端。 如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直到追溯到包含该内容的源服务器并将内容拉到本地。 什么情况下用 CDN? 最适合的是那些不会经常变化的内容,比如图片,JS 文件,CSS 文件。图片文件包括程序模板中 CSS 文件中用到的背景图片,还有就是作为网站内容组成部分的那些图片等等。 灰度发布 我们的应用即使经过了测试部门的测试,也仍然很难全面覆盖用户的使用场景。 为了保证万无一失,我们在进行发布的时候一般都会采用灰度发布,也就是会对新应用进行分批发布,逐步扩大新应用在整个及集群中的比例直到最后全部完成。灰度发布是说针对新应用在用户体验方面完全无感知。 灰度发布系统的作用在于,可以根据自己的配置,来将用户的流量导到新上线的系统上,来快速验证新的功能。 而一旦出问题,也可以马上的回滚发布,简单的说,就是一套 A/B Test 系统: 总结 通过本文,我们就对主流的 SOA 架构、微服务架构、服务网格架构做了解析,然后知道了分布式架构中的几个基本理论,然后还分析了如何设计出高可用的分布式架构。 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |