用户到服务的高可用和最优路径架构设计

Posted 唯技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用户到服务的高可用和最优路径架构设计相关的知识,希望对你有一定的参考价值。

作者介绍


题记:世间最远的距离,莫过于服务就在面前,我却访问不到你。


众所周知,服务的可用性是衡量一个平台好坏和增加用户黏度的一个重要指标之一,为了保证服务高可用,我们设计了很多高可用的框架(集群)来保证当出现单点故障时,仍然可以提供正常或者部分有损的服务。如何设计一个高可用的应用框架,有很多方法和专门的文章,这里就不加赘述,今天主要想和大家分享一下,从服务的用户到高可用的应用之间如何保证高可用,如何让用户走一条最优的路到达服务之中。



用户到服务的高可用和最优路径架构设计

由于这种方式成本很低,所以绝大多数中小型网站都采用,但这种方式最主要有以下两个问题:

 

  • 访问单点,如果“121.11.**.**”所在的服务器集群坏了,或者到这个IDC机房的线路出问题了,那么只能切IP或者切线路,而在切换过程中由于有TTL的存在,会在一定时间内影响用户的访问。

  • 无法做到访问最优,比如难以按照运营商进行访问,比如电信用户访问到电信,联通用户访问到联通等,也无法按照线路繁忙程度选择一个最优的线路。


基于以上的两个问题,我们对传统的访问方式做一些优化,它们分别是智能DNS,智能路由,CDN多点接入,以及GSLB

智能DNS

现在很多dns运营上都支持这种方式即在同一主机添加多条A记录,即DNS轮询,DNS服务器将按照A记录添加的顺序随机分配服务器的IP给用户,可以做到按照运营商制定策略,比如联通用户访问到联通,电信访问到电信,做到简单的负载均衡,如下图:



用户到服务的高可用和最优路径架构设计

(图片来自网络,侵权请告知)


智能DNS基本上不用付出什么成本,就可以部分解决上面两个问题,但这种解决方案不是最优的方案,它有以下两个致命的缺陷:

  • 它未解决TTL时间的问题。

  • 负载策略过于简单,均衡性差,比如无法做到按地区分发。

智能路由

智能路由是增强负载策略的一种方案,它其实不是基于DNS访问的,所以不太适合一级域名的方案,比较适合移动APP或者应用内部之间的调用,它的原理如下图:


用户到服务的高可用和最优路径架构设计


其中访问策略可以灵活地定制,比如按照入口的探测响应时间,应用繁忙度,地域等,但这种方案也有如下弊端:

  • 对应用有一定的侵入,开发写的代码需要做一定的改造。

  • PC端服务域名访问不太适合。

  • 策略设置难度大,容易出现封堵的现象。

CDN多点接入


用户到服务的高可用和最优路径架构设计

PS:这里显示的是回源的情况,如果有缓存,则CDN直接返给用户。

这种方案的优点在于无代码侵入,直接利用成熟的方案,缺点如下:

  • CDN厂商不透明(没有贬义色彩),出现问题无法全链路追踪,导致时间过长。

  • 增加额外的开销(CDN流量)

GSLB


剩下最后一种方案GSLBGSLB在度娘上的解释为:Global Server Load Balance的缩写,意思是全。作用:实现在(包括互联网)上不同地域的间的流量调配,保证使用最佳的服务器服务离自己最近的客户,从而确保访问质量。


用户到服务的高可用和最优路径架构设计


PS:GTM是F5提供的一种设备服务,这里不过多阐述,详细了解可以参加:


唯品会在解决用户到服务之间的高可用和最优路径基本上采用的是最后两种方案。大家可以通过nslookup命令去查看一下你访问的服务采用的是哪种方案,例如:

www.vip.com

用户到服务的高可用和最优路径架构设计


网宿CDN多点接入的方式(如上图)

passport.vip.vom

gslb的方式(如上图)

结语

很早就想写了,可是拖延症犯了。今天花了一个半小时梳理一下,也算做一个总结。愿天下所有的服务都是稳定的,网上说,没有神灵眷顾的高可用是不靠谱的,愿我会的服务永远有神灵眷顾……


欢迎投稿!!

只要是技术相关的文章尽管砸过来!



--------------少不了的广告线------------


动动手指,扫描二维码

“唯技术”,你值得拥有



以上是关于用户到服务的高可用和最优路径架构设计的主要内容,如果未能解决你的问题,请参考以下文章

工作十年,谈谈我的高可用架构和系统设计经验

直播预告丨京东到家支付平台的高可用架构设计实践

高可用架构设计

技术京东京麦:微服务架构下的高可用网关与容错实践

美团面试题:如何设计负载均衡架构支撑千万级用户的高并发访问?

架构设计:系统存储(17)——Redis集群方案:高可用