这里介绍如果通过dns来实现容灾,饿了么有非常多的应用,应用的用户量非常大,遍布各地。这些应用都是需要域名的,所以为了提神服务质量,构建自己的DNS体系,为饿了么的应用提供域名解析服务。
DNS提供了根据域名查IP地址的服务,和常见的http协议一样,dns也是一个工作在7层的应用成协议,他使用的端口是53
域名和ip之间的对应关系,称为记录(record)。根据使用场景的不同,记录分为不同的类型,常见的记录类型如下:
记录类型 | 功能描述 |
---|---|
A | ipv4记录,支持将域名映射到ipv4地址使用 |
AAA | ipv6记录,支持将域名映射到ipv6地址使用 |
CNAME | Canonical Name,别名记录,支持将域名指向另外一个域名 |
MX | Mail Exchanger,电子邮件交互记录,支持将域名指向邮件服务器地址 |
NS | Name Server,名称服务器,支持将子域名委托给其他DNS服务商解析 |
DNS服务器是指安装了DNS软件后提供DNS服务的计算机。我们可以在阿里云ECS主机上安装BIND软件来搭建自己的DNS服务器,然后将本机的DNS服务器地址指向该ECS主机以使用我们自己的DNS解析服务。
实际上,国内外已经有很多DNS服务商提供了免费的DNS解析服务,各家都提供了公共的DNS服务器地址。比如谷歌的8.8.8.8
,国内114dns的114.114.114.114
。饿了么之前也使用BIND软件搭建了BIND集群提供DNS服务,目前已经全量EDNS集群上了。
EDNS原理
业务域名CNAME至gds域名的方式,即a.ele.ne CNAME 至a.ele.me.gds.eledns.com,
再为a.ele.me.base.eledns.com,分配对应的A解析IP地址
容灾切换
目前我们线上使用的域名解析方式主要有两种:
从系统稳定性角度来看,EDNS提供给业务最重要的价值就是机房灾备切换和机房级别的流量调度。为了提高服务的可用性,业务系统一般采用多机房部署架构,当一个机房的服务不可用时,可通过EDNS将流量切换到另一个机房,从而使业务系统继续提供服务。
原文:https://www.cnblogs.com/vinsent/p/12334588.html