开发 Leader 和一线开发的区别在于:普通一线开发很多时候都只接触业务编码,不需要关注除开发之外的其他事情。但是作为一个开发 Leader,不仅仅需要懂开发层面的东西,还需要懂得运维层面的东西。

最近产品同学就找到我:大佬,运营给了个需求,需要你搞定一下。事情是这样的:公司要接入一个第三方邮件供应商,其中有一个环节需要做子域名的 NS 记录解析。当时我一脸懵逼,什么是子域名的 NS 记录?到底要干嘛?虽然我可以直接把事情丢给运维人员,但是作为一个责任感爆棚的开发 LD,必须要把事情的整个流程搞清楚呀。

经过一番了解,我了解到域名解析有好几种类型,包括:A记录、CName记录、MX记录、NS记录等。作为开发来说,虽然不需要深入了解运维的知识,但是还是需要弄懂这些不同的解析类型的原理。简单地说,域名的解析类型就是在不同使用场景下的映射关系。

A记录

A记录,简单地说就是配置一条从域名到IP的映射关系。 我们都知道当我们输入域名的时候,其实浏览器会帮我们去 DNS 服务器上解析这个域名对应的 IP 地址,浏览器最终访问的其实是一个 IP 地址。而这里的 A 记录其实就是配置域名到 IP 的映射关系,让 DNS 服务器解析的时候能找到对应的 IP。

一般来说,要设置 A 记录只需要到你域名所属的服务商管理后台上进行设置即可。例如在阿里云上添加 A 记录的界面如下:

在上面的设置页面中,我选择了 A 记录类型。主机记录填写为:hello.csyimg.com,记录值为 192.168.1.1,TTL 值为 10 分钟。那么就表示我想为 hello.csyimg.com 这个域名创建一条映射到 192.168.1.1 这个 IP 的映射关系,其缓存有效时间为 10 分钟。

那么当用户在浏览器访问 hello.csyimg.com 这个域名的时候,DNS 服务器就会将请求转发到 192.168.1.1 这个 IP 上。这里的 TTL 值表示其在 DNS 服务器上缓存的时间,等时间到了那么其会清除掉这条记录,下次会再次去其对应的 DNS 服务器上去获取最新的记录值。

TTL 值存在意义在于:用户从浏览器到服务器会经过很多个 DNS 服务器,而 DNS 服务器会接收大量请求,为了提高解析效率会设置缓存。当你首次访问 hello.csyimg.com 时,如果本地的 DNS 服务器没有 hello.csyimg.com 的 A 记录,那么这次就会保存下来,等到下次访问的时候,直接就返回该记录,就不需要长途跋涉那么远去查询了。但是当我们要变更解析地址的时候,这时候就需要等10分钟才能生效了。

注:关于 DNS 解析的原理这里不深入介绍,有兴趣的话在公众号后台回复「DNS解析原理」可以查看我写的另一篇文章。

常见的主机记录值有下面几个,基本上涵括了我们日常使用的所有情况。

CNAME记录

CNAME 记录,即别名记录(Canonical Name),指的是设置一个域名的别称,即建立别名到域名的映射关系。

CNAME 记录通常用于把不同的域名转到同一个域名上,例如京东初期的域名为 360buy.com,后面更换成 jd.com,那么当用户访问 360buy.com 的时候就需要将自动为其跳转到 jd.com 域名。这时候就可以设置一个 CNAME 记录了。

在阿里云上添加 CNAME 记录也很简单,其设置的内容与设置 A 记录的类似,只不过记录值此时必须是一个域名,而不能是一个 IP。

MX记录

MX(Mail Exchanger)记录的作用是用于定位邮件服务器的地址。

例如一个用户给 user@abcdef.com 的用户发封邮件,此时该用户的所属的邮件系统会通过 DNS 服务器来查找 abcdef.com 这个域名的 MX 记录。如果存在,就去查找 MX 记录值对应的 A 记录,从而得到邮件服务器的IP地址,并将这封邮件发送到这台服务器上。可见,MX记录和A记录是分不开的。总的来说,MX记录是为了让对方找到你的邮件服务器。所以,如果想顺利收信,就必须为你的邮件服务器创建合法有效的MX记录。

在阿里云设置 MX 记录的页面如下所示,其中记录值也必须是一个域名。当用户要发邮件给 abc@csyimg.com 的时候,会通过 DNS 服务器查找 csyimg.com 的 MX 记录。此时会找到记录值为 mail.shuyi.me 的 MX 记录,之后会去查找 mail.shuyi.me 的 A 记录,从而找到 csyimg.com 这个邮件服务器的 IP 地址。

NS记录

NS 记录是指将子域名指向其他 DNS 服务器解析。有时候在进行技术合作的时候,需要将子域名托管给其他公司,这时候就需要为该子域名设置 NS 记录。

在阿里云设置 NS 记录的页面如下,其中记录值必须是一个域名,这个域名对应了一台 DNS 服务器。例如我下面的设置就将 doc.csyimg.com 这个子域名托管给了 ns.baidu.com 这个 DNS 服务器。当我将该子域名 doc.csyimg.com 托管给 ns.baidu.com 这台 DNS 服务器之后,我也可以在这台 DNS 服务器上设置 A 记录、MX 记录了。

总结

说到这里,我相信大家都已经比较清楚了。这里总结一下域名各解析类型的作用:

  • A 记录:设置域名到 IP 的映射
  • CNAME 记录:设置域名到域名的映射
  • MX 记录:设置邮件服务器的映射
  • NS 记录:设置子域名 DNS 服务器的映射

除了上面讲到的这几种域名解析类型,其实还有很多域名解析类型:

  • AAAA记录:将域名指向一个 IPV6 地址。
  • SRV记录:记录提供特定的服务的服务器。
  • TXT记录:文本长度限制512,通常用作SPF记录(反垃圾邮件)。很多时候也用来验证对域名的所有权。
  • CAA记录:CA证书颁发机构授权校验。
  • 显性URL:将域名重定向到另外一个地址。
  • 隐形URL:与显性URL类似,但是会隐藏真实目标地址。

关于域名解析类型,虽然对于开发人员来说平时用不到。但如果你当了 leader,需要与运维打交道了,那么这些基础知识可是必备的哦。觉得有用,可以点击「收藏」以备不时之需哦。

听了域名的解析类型,是不是觉得干巴巴的很不好记,貌似没有什么用?其实这解析类型可是大有用处,它与 DNS 的解析类型有千丝万缕的联系,下篇我将带你介绍 DNS 解析的原理。

A记录都不懂,怎么做开发Leader?的更多相关文章

  1. 我都xxx岁了,还能继续做开发吗?

    前言 今天纯文字,阅读时间10分钟左右 最近在看一本书<大型网站技术架构:核心原理与案例分析>,可以说是非常枯燥的一本书,在开头几章讲解了网站的发展,介绍了一些架构中的常用名词.虽然有点枯 ...

  2. .Net Core ORM选择之路,哪个才适合你 通用查询类封装之Mongodb篇 Snowflake(雪花算法)的JavaScript实现 【开发记录】如何在B/S项目中使用中国天气的实时天气功能 【开发记录】微信小游戏开发入门——俄罗斯方块

    .Net Core ORM选择之路,哪个才适合你   因为老板的一句话公司项目需要迁移到.Net Core ,但是以前同事用的ORM不支持.Net Core 开发过程也遇到了各种坑,插入条数多了也特别 ...

  3. 记录一次OCR程序开发的尝试

    记录一次OCR程序开发的尝试 最近工作中涉及到一部分文档和纸质文档的校验工作,就想把纸质文件拍下来,用文字来互相校验.想到之前调用有道智云接口做了文档翻译.看了下OCR文字识别的API接口,有道提供了 ...

  4. Atitit.技术管理者要不要自己做开发??

    Atitit.技术管理者要不要自己做开发?? 1. 为什么很多管理者不能自己亲自做了1 1.1. 沟通成本多了1 1.2. .组织分散. 1 1.3. 会议多 .协调多 1 1.4. 问题的根源在于我 ...

  5. 转行做开发的Wiki:找好方向

    案 我是一个从建筑行业转行过来的后端工程师,转行来写代码了.最近发现经常有同学和网上的朋友问我一些转行的问题,零零散散地回答莫不如写一篇文章,以后回答此类问题就方便多了. 我的专业是给排水,属于非常传 ...

  6. 从高处理解android与服务器交互(看懂了做开发就会非常的容易)

    今天帮一个朋友改一个bug 他可以算是初学者吧 .我给他看了看代码,从代码和跟他聊天能明显的发现他对客户端与服务器交互 基本 不是很了解.所以我花了更多时间去给他讲客户端与服务器的关系.我觉得从这个高 ...

  7. 关于使用Arduino做开发的理解

    转载自arduino中文社区 https://www.arduino.cn/thread-5414-1-1.html 见到很多人对Arduino的开发方法 .应用场景有误解,特别开个帖子说明下. 误解 ...

  8. PostgreSQL 优势,MySQL 数据库自身的特性并不十分丰富,触发器和存储过程的支持较弱,Greenplum、AWS 的 Redshift 等都是基于 PostgreSQL 开发的

    PostgreSQL 优势 2016-10-20 21:36 686人阅读 评论(0) 收藏 举报  分类: MYSQL数据库(5)  PostgreSQL 是一个自由的对象-关系数据库服务器(数据库 ...

  9. 为什么传统软件厂商都想转型做Saas?

    欢迎关注微信公众号:sap_gui (ERP咨询顾问之家) 早些年,我工作笔记用的最多的是微软的OneNote,这东西好用不说,不仅能够存在云端,也能存放在本地.可惜到了Office2019之后,On ...

随机推荐

  1. Java发送邮件的工具类

    package com.csice.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNot ...

  2. docker + jenkins 自动化部署

    公司书架上有本docker的书籍,正好最近事不多就写个demo来玩一玩. DevOps未死,ContainerOps已到 ContainerOps VS DevOps 避免了复杂的环境,应用之间的相互 ...

  3. Pytorch实现MNIST(附SGD、Adam、AdaBound不同优化器下的训练比较) adabound实现

     学习工具最快的方法就是在使用的过程中学习,也就是在工作中(解决实际问题中)学习.文章结尾处附完整代码. 一.数据准备  在Pytorch中提供了MNIST的数据,因此我们只需要使用Pytorch提供 ...

  4. 防止SyntaxHighlighter.js的闪烁闪一下的方法

    SyntaxHighlighter.js是一个代码高亮的JS插件,使用也很简单,但是由于是浏览器段执行JS代码来着色,会出现视觉上闪一下的效果.比如你的20行代码网页打开显示高度为100px,但是Sy ...

  5. jq实现简单手风琴效果

    文章地址:https://www.cnblogs.com/sandraryan/ 利用slideUp slideDown动画 <!DOCTYPE html> <html lang=& ...

  6. 自然语言处理课程(二):Jieba分词的原理及实例操作

    上节课,我们学习了自然语言处理课程(一):自然语言处理在网文改编市场的应用,了解了相关的基础理论.接下来,我们将要了解一些具体的.可操作的技术方法. 作为小说爱好者的你,是否有设想过通过一些计算机工具 ...

  7. SuperSocket命令程序集定义

    是的,SuperSocket是用反射来查找哪些公开的类实现了基本的命令接口,但是它只在你的AppServer类定义的程序集中查找. 举例来说, 你的 AppServer 定义在程序集 GameServ ...

  8. tf.contrib.layers.xavier_initializer

    https://blog.csdn.net/yinruiyang94/article/details/78354257xavier_initializer( uniform=True, seed=No ...

  9. java.util.NoSuchElementException: No value present

    错误: java.util.NoSuchElementException: No value present 原因: 经查询博客Java 8 Optional类深度解析发现,究其原因为: 在空的Opt ...

  10. Redux 初始化完整结构

    文件管理 目录文档 ★★★index.js★★★ ★★★app.js★★★ ★★★store->index.js★★★ ★★★actions->index.js★★★ ★★★store-& ...