qiuyadong's Homepage

微服务架构四


对于微服务来说, 什么是分布式架构下的高可用设计!

分布式架构下的高可用设计

  • 避免单点故障

1 负载均衡技术(failover/选址/硬件负载/软件件负载 /去中心化的 软件负载( gossip(redis cluster))).

2 热备(linux HA)

3 多机房(同城灾备、异地灾备)

  • 应用的高可用性

1 故障监控(系统监控(cpu、内存)/链路监控/日志监控) 自动预警

2 应用的容错设计、(服务降级、限流)自我保护能力

3 数据量(数据分片、读写分离)

分布式架构下的可伸缩设计

垂直伸缩 提升硬件能力

水平伸缩 增加服务器

加速静态内容访问速度的 CDN

CDN 是 Content Delivery Network 的缩写,表示的是内容分发网络。CDN 的作用是把用户需要的内容分发到离用户最近的地方,这样可以是用户能够快熟获取所需要的内容。CDN 其实就是一种网络缓存技术,能够把一些相对稳定的资源放到距离最终用户较近的地方:

一方面可以节省整个广域网的贷款消耗,

另外一方面可以提升用户的访问速度,

改进用户体验。我们一般会把静态的文件(图片、脚本、静态页面)放到 CDN 中。

1 当用户点击网站页面上的内容 URL,经过本地 DNS 系统解析,DNS系统会最终将域名的解析权交给 CNAME 指向的 CDN 专用 DNS 服务器

2 CDN 的 DNS 服务器将 CDN 的全局负载均衡设备 IP 地址返回用户

3 用户向 CDN 的全局负载均衡设备发起内容 URL 访问请求

4 CDN全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。

5 区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户 IP 地址,判断哪一台服务器距用户最近;根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的 IP 地址。

6 局负载均衡设备把服务器的 IP 地址返回给用户用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。

什么情况下用 CDN

最适合的是那些不会经常变化的内容,比如图片,JS 文件,CSS 文件,图片文件包括程序模板中的,CSS 文件中用到的背景图片,还有就是作为网站内容组成部分的那些图片,都可以;

灰度发布

我们的应用虽然经过了测试部门的测试,但是仍然很难全面覆盖用户的使用场景,为了保证万无一失,我们在进行发布的时候一般会采用灰度发布,也就是会对新应用进行分批发布,逐步扩大新应用在整个及群众的比例直到最后全部完成。灰度发布是针对新引用在用户体验方面完全无感知。

灰度发布系统的作用在于,可以根据自己的配置,来将用户的流量导到新上线的系统上,来快速验证新的功能修改,而一旦出问题,也可以马上的恢复,简单的说,就是一套A/BTest 系统。



Comments