自建权威DNS-如何让用户就近接入

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自建权威DNS-如何让用户就近接入相关的知识,希望对你有一定的参考价值。

参考技术A 引子:
外网DNS是用户访问网站的第一道门,如果外网DNS调度不准确,会出现跨网,跨地域等问题,调度问题是外网DNS关注的首要问题。如何让用户就近接入?有没有好的设置方法可供参考?

调度问题直观的表现是VIEW设置多少个,ACL是否匹配正确。ACL设置一般企业会采购IPIP库的结果,国内基本可以得到正确的结果,海外的IPIP归属地也不会有很大的波动。如果请求能正常到达要访问的权威服务器,看似就万事大吉了。但是在观察业务数据的时候,发现问题并没有那么简单。

这是一个演变的过程,按照改进的过程叙述。
第一步:国内一般的方法是华北,华东,华南,三个地域建ns。海外选择离业务近的点建ns。中国和海外的ns设置不同的地址。自建权威服务器注册到DNS服务商。按照地域顺序往后排序。每个view配置相同的ns。认为DNS解析会按照最近的NS来请求。
问题:
前两台NS会收到很多访问的请求,用户的来源IP和之前给这个NS设定的覆盖范围也不一致,其他的NS请求量相对低。和用户分布的趋势不符合。
如果这样的话,即使分了ACL,也没有达到多个NS覆盖多个的问题。用户域名请求的时间仍旧很高。那么local DNS不是应该像很多NS同时发请求,然后选择一个就近的接入,以后就按照这个NS来请求吗?
当然不会,这样用户还需要在不同的NS上随机挑选,这样更加增加了local DNS的请求时间。

local DNS第一次解析域名的时候,ns的地址是由.com权威提供的,本地递归DNS最终是缓存权威DNS上的ns记录。.com权威提供的方式是通过glue记录。在注册域名的时候,需要额外填写。
glue记录是非常容易忽略的一个问题,应该搭建常规的DNSserver并不是必须的选项,因此常常会忽略,我也是在注意到问题之后,才发现对glue记录并不了解。
加入没有glue记录,local DNS拿到了请求之后,还要在询问NS地址是什么,
查看 www.baidu.com 的glue记录:
请求命令:
dig www.baidu.com

位于返回请求的ADDITIONAL SECTION中。

实验验证一下第一次请求的过程:
先来看一下请求的TTL值

第二次递减:

第三次递减:

变为0:

重新开始请求:

看下对应的抓包过程:
第一次请求的过程:

A.root-servers.net198.41.0.4美国
E.root-servers.net192.203.230.10美国
分别像这几个根存问结果:
首先像 J.root-servers.net192.58.128.30美国 询问,
给服务器回复了 *.gtld-servers.net的地址 .com顶级域

com回复之后,继续往下看:

com回复了baidu的ns

本地递归DNS最终是缓存权威DNS上的NS记录。

如果想实现按照NS调度,不同的View应该配置不同的NS地址,用户请求从com得到请求之后,再去查询NS ,就会按照NS配置的地址到想让他去的NS解析了。不足之处,第一次因为从glue拿地址,所以第一次没有办法实现智能解析

minimal-responses
如果是yes,当产生响应的时候,服务器将只会按照需要将记录添加到authority和additional的数据部分。(例如,delegations,negative responses)。这样会改善服务器的性能。默认值为no。

从零开始接入腾讯云智能推荐

欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~

作者:安斌 

导语: 由于信息过载,推荐系统基本成为互联网产品的标配, 如何快速的让自己的产品具有推荐的能力呢?稀缺专业人员投入、用户数据积累、用户冷启动问题等等都是自建推荐系统必须跨越的障碍。本文介绍如何接入腾讯云智能推荐, 快速获得上百人专业算法团队、二十亿+用户画像、几乎覆盖全部网民的推荐系统能力。

本文介绍如何使用豆瓣图书的openAPI抓取图书信息,上报图书信息、用户浏览点击行为到腾讯云智能推荐系统,通过API获取推荐结果。主要的步骤包括:

  1. 物料准备;

  2. 物料上报;

  3. 场景id申请;

  4. 获取推荐结果;

  5. 用户行为上报;

1. 物料准备

首先介绍下什么物料, 物料就是我们需要推荐的物品。推荐系统通过物料的属性、用户和场景的属性以及用户的历史行为,生产推荐结果。

为了方便的获取物料属性,这里我们使用douban图书API获取图书的基本信息。Api参考:https://developers.douban.com/wiki/?title=book_v2

其中,重要的信息包括:

  • isbn13: 可以作为图书物料的唯一标识;

  • title/author/pubisher: 与图书相关的重要信息;

  • rating: 用户评分;

  • tags: 图书的标签;

  • price: 价格

技术分享

接下来, 我们购买主机和CDB,使用python脚本遍历豆瓣图书api,我们将感兴趣的属性记录到db中, 获得原始的物料库,如下表所示:

技术分享

2. 物料上报:

步骤1我们已经获取到了物料库, 接下来通过腾讯云智能推荐item上报API上报物料,API详情参考API文档。

物料上报协议中, 重要的字段包括:

  • item_id:物料唯一标识, 推荐结果将返回物料id, 暂时不支持中文; 图书推荐使用图书的唯一标号isbn13作为item_id;

  • pool_id: 自定义物料池, 物料池将物料分类,在获取推荐结果时,可以指定在哪个物料池获取推荐结果, 适配不同的产品场景。同一个物品可以属于多个物料池; 本示例中, 所有物品都可以出现在任意场景下, 所以, 物料没有指定物料池, 需要分物料池时, 可以添加物料池分类, 重新上传物料信息。

  • tags: 物料的标签, 是物品推荐使用的关键属性,可以使用物品的标签描述、分级类目名、品牌等等信息, 越详细的信息, 对推荐结果越有帮助。 同时, 每个物品的描述应该具有可区分性,在给用户推荐时,如果每个物品都具有相同的tag, 那么, 推荐系统将无法通过这个tag,区分出当前用户对每个物品的喜好, 也就没法产生有效的推荐,所以tag的描述尽量准确、具有区分性。本示例中,标签使用douban提供的tags;

物料上报协议如下所示:

{

       data_type: 1,

       tags: u\u9c81\u8fc5,\u4e2d\u56fd\u6587\u5b66....,

       bid: b_teg_openrecom_xxxx,

       describe: u \u9c81\u8fc5\u5168\u96c6(2),

       free: 0,

       item_id: u 9787020015252,

       MD5: 8764084918781ab51493eaf43e6d0166,

       url: u https://book.douban.com/subject/1002055/,

       publish: 1,

       platform: 1,

       score: 9.5,

       request_id: 1488358987,

       vender: u \u4eba\u6c11\u6587\u5b66\u51fa\u7248\u793e,

       price: 31.75

}

 

3. 场景id申请:

智能推荐的所有行为都是围绕场景展开的, 首先上传适合当前场景的物料,接下来, 拉取当前场景下对用户的推荐结果;再上报用户在当前场景的流量、点击、转换等行为数据, 修正推荐结果。 场景可以理解为产品的一个推荐位, 比如很多产品有猜你喜欢的栏目。

可以在腾讯云官网智能推荐控制台创建场景, 获得场景id。 本文规划两个场景: 首页推荐和详情页推荐,申请两个场景id。

4. 获取推荐结果:

物料库上报以后, 就可以通过用户id从物料库中生成推荐结果了。这里使用请求服务接口。注意, 请求服务的地址与物料上报、行为上报地址不同。重要的字段包括:

  • scene_id: 场景id, 步骤3申请的bid;

  • pool_id: 物料池编码, 指定在特定的物料池中选择推荐结果; 如果不指定, 默认在全部物料中选择;

  • cid: 当前页面物料id, 用于详情页获取推荐的场景,cid使用当前物料id。 在本示例中,在详情页场景使用。

推荐结果请求如下所示:

{

       scene_id: 538659,

       request_num: 50,

       uid: 3496892xx,

       request_id: 1487861252,

       service_type: 3,

       bid: b_teg_openrecom_xxxx,

       uid_type: 0,

       MD5: 05bae728925ee937e760b06669089c27

}

 

5. 用户行为上报:

用户行为上报接口, 上报某个时间点、某个场景下、某个用户发生了特定行为。 利用用户行为可以进一步优化推荐结果。 用户行为包括: 曝光、点击、转化、点赞等等; 行为上报时,需要保证事件发生的时间顺序,严格按照先有曝光,点击,再有转化, 否则系统会认为用户点击、转化行为行为无效。重要的字段:

? trace_id: 用户一系列行为的会话id。通过trace_id, 推荐系统可以串联用户行为。 trace_id的生命周期从曝光开始,依次在点击、转化、点赞等行为中传递。 下一次曝光需要生成新的trace_id;

协议如下所示:

{

       uid: 3496892xx,

       data_type: 2,

       bid: b_teg_openrecom_xxx,

       item_id: u 9787109061385,

       scene_id: u 538659,

       MD5: 8764084918781ab51493eaf43e6d0166,

       action_time: 1487905960,

       trace_id: u 1487905944,

       action_type: 2,

       request_id: 1487905960,

       uid_type: 0

}

相关阅读

主从复制延迟排查

刘炽平:腾讯云计算迅猛增长,正加强投资人工智能

 

追击实录(二):DDoS 黑产全链条遭斩断,腾讯云协助警方抓捕58人

 


 

此文已由作者授权腾讯云技术社区发布,转载请注明文章出处

原文链接:https://cloud.tencent.com/community/article/895984


以上是关于自建权威DNS-如何让用户就近接入的主要内容,如果未能解决你的问题,请参考以下文章

从零开始接入腾讯云智能推荐

解密IoT物联网平台设备如何快速上云实现全球就近接入

后台开发技术--接入层设计

简单介绍智能DNS解析+双线路接入

接入微信电子发票流程步骤

海外专线解决方案