GitHub是如何改进自身的DNS架构的

简介:

据GitHub高级架构工程师Joe Williams撰文介绍,过去数年中,GitHub一直使用的是一个简单的DNS架构。虽然它也能适合工作需求,但现在GitHub已迁移到一个能更好地支持自身规模的新架构。

Williams提及,很多应用对DNS的解析性能或可用性十分敏感,这是GitHub采用新的DNS处理模型的一个原因。DNS会导致用户性能降级,甚至无法提供服务。当使用原有的DNS架构进行配置和代码更改时,这个问题亟待解决。此外,工程师也难以识别一些故障的导致根源,他们唯一能使用的工具是tcpdump。除了对上述问题的改进,GitHub工程师还瞄准于:

增加内部域(Zone)和外部域配置的灵活性。除非做特殊的配置,否则内部域对外是不可见的。同时,从内网的内部就可以访问外部域。改进缓存节点(Cache)和授权节点(Authority)间的角色隔离。支持基于部署和基于API的工作流,实现更改的自动化。避免任何外部依赖,改进可靠性。

在GitHub设计的架构中,有三种类型的节点:

缓存节点。它部署于各数据中心内,负责向应用提供实时数据,使应用无需跨数据中心。边缘节点(Edge)。它是各数据中心本地的授权节点,行使网关职责,处理来自缓存节点的请求,并负责域传送(Zone Transfer)。授权节点。它是DNS主服务器,管理来自边缘节点的域交换,并提供创建、修改或删除记录的HTTP API。

20170613113609909.png

日志功能是GitHub新DNS架构的另一个改进。GitHub工程师根据自身需求,选择了对缓存节点使用Unbound,边缘节点使用NSD,授权节点使用PowerDNS。

前面提到,外部域(github.com)可从内部域(github.net)访问,不需要与外部DNS提供商通信。这是使用Unbound实现的。此外,Unbound还支持在内部DNS失败时对外部网络的访问。


本文转自d1net(转载)

相关文章
|
20天前
|
Linux 编译器 开发者
Linux设备树解析:桥接硬件与操作系统的关键架构
在探索Linux的庞大和复杂世界时🌌,我们经常会遇到许多关键概念和工具🛠️,它们使得Linux成为了一个强大和灵活的操作系统💪。其中,"设备树"(Device Tree)是一个不可或缺的部分🌲,尤其是在嵌入式系统🖥️和多平台硬件支持方面🔌。让我们深入了解Linux设备树是什么,它的起源,以及为什么Linux需要它🌳。
Linux设备树解析:桥接硬件与操作系统的关键架构
|
1月前
|
存储 搜索推荐 数据挖掘
ElasticSearch架构介绍及原理解析
ElasticSearch架构介绍及原理解析
107 0
|
1月前
|
网络协议 Linux
Linux DNS服务详解——DNS主从架构配置
Linux DNS服务详解——DNS主从架构配置
410 4
|
2月前
|
架构师 安全 Java
资深架构师带你解析Synchronize关键字原理
众所周知 Synchronize 关键字是解决并发问题常用解决方案,有以下三种使用方式:
28 0
|
3月前
|
设计模式 Java 应用服务中间件
Tomcat 架构原理解析到设计借鉴
Tomcat 架构原理解析到设计借鉴
149 0
|
3月前
|
设计模式 Java 应用服务中间件
Tomcat 架构原理解析到架构设计借鉴
Tomcat 架构原理解析到架构设计借鉴
106 0
|
1月前
|
消息中间件 Cloud Native Java
【Spring云原生系列】SpringBoot+Spring Cloud Stream:消息驱动架构(MDA)解析,实现异步处理与解耦合
【Spring云原生系列】SpringBoot+Spring Cloud Stream:消息驱动架构(MDA)解析,实现异步处理与解耦合
|
5天前
|
前端开发 Java
SpringBoot之三层架构的详细解析
SpringBoot之三层架构的详细解析
20 0
|
29天前
|
canal 消息中间件 关系型数据库
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
80 0

相关产品

  • 云解析DNS
  • 推荐镜像

    更多