利用IP列表,减少DNS与负载的时间,可以提速吗?

域名访问或者ip访问?

域名访问方式处理的过程:


http.png
  1. 客户端访问DNS服务器,由域名拿到负载的外网ip
  2. 客户端使用外网IP访问负载
  3. 负载将请求分发给实际处理HTTP请求的Web-server

优缺点:

1 负载集中,业务上如果有需要的话可以统一处理,比如为进来的每个请求加一个logID等
2 DNS被劫持,那么整个就挂了
3 DNS再快,负载再好也要需要解析传输的时间,速度自然会受到影响

设想:

如果我们将整个实际处理的机器整成一个ip列表内置在客户端呢?比如app,先不考虑安全的元素下,这样可以跳过DNS的解析与负载转发,直接访问到实际工作的web-server(随机访问ipList或别的方式,这个可用不同的算法实现),先来描绘下这个流程,再说

设想流程


imagine.png

大致就是这个样子:
1 本地没有ipList时,走一下DNS拿到一个外网的IP,发出请求,拿到IPlist与它的版本号
2 当本地有ipList存在时,直接拿IPLIst请求,当然,版本号要与当前保持一致,这么做是为了当ip列表发生变化的可以让客户端感知并保持最新.不一致时,才拉取

优点:

  1. 不需要每次做DNS解析,避免劫持与节省时间
  2. 节省负载的转发时间(虽然也需要随机计算或者别的算法计算)
  3. ipList可能长时间都不需要拉取,因为这个短时间不会有太大的变化,依然可以保持水平扩展

能想到的弊端:

  1. 无法提供一个公共的入口,有些公共的事可能无法提供
  2. 安全问题,比如最核心的ipList的传输安全
  3. 地域,dns可以提供地域优化解析,我们好像也可以根据位置与网络识别去做,但是代价好像有点大

结束:

我还未看到有这么处理的架构,也没想到更致命的问题
备注:成本问题,好像成本大了点,ip加密等一顿处理,也是消耗.

你可能感兴趣的:(利用IP列表,减少DNS与负载的时间,可以提速吗?)