00:00
它有很多种这个应用场景啊,给大家简单讲一下这个多用户的二级域名系统,这个大家现在是不是已经差不多可以做出来了,它的原理是啥样的呢?给大家讲一下。二级域名系统,那顾名思义,我们有很多的这个不同的二级域名的这个用户来访问我们对吧。嗯,找一个哪个图比较合适呢?这样。给给他画一个吧,再简单画一个。二级域名啊,比如说微博吧,啊,它有一个主域名叫微博点com。那如果,呃,我我叫张一鸣一鸣。申请了一个呃微博,然后呢,我们就可以在这个微博的主系统上呢,申请一个二级域名来访问微博的主页啊,像淘宝的这个店铺也可以申请他的二级域名或者三级域名的这个这个这个子域名来加速我们的访问。
01:01
那这种访问呢,我们我们需要怎么做,需要在我们的服务器上把域名的泛解析。全部都解析到我们当前的一台服务器上,那这台服务器呢,现在就是N。那现在我不管访问什么,是不是星号微博点com。这一切全部都能解析到这一台服务器上了,当它解析到这台服务器上,我怎么区分你是一名还是二名?NG的在这里边呢,我们可以通过反向代理,那这是下节课要讲的。把所有的请求转发到后端的另外一台业务服务器,比如这台服务器呢,是我们Java写的tomcat。在这MD里边,我们是不是就可以连接数据库了?他访问当前的域名啊,我们的Tom cat能不能得到,他访问的是一名点微博点。com还是什么其他的域名一定是能拿到的,当他拿到这个域名,我们去拆解一下这字符串,从前面呢,把这个二级域名呢,给它给取出来,从数据库里去查询出来。
02:11
他的信息。接下来是不是就可以展示?相应的内容给他了,但是反向代理他要把这个数据传递给这N几N几再把数据。传输给我们的当前的用户,那这样一个多级的域名,多用户的域名,呃,管理系统,那这样是不是我们就做好了对吧?当然这个域名,呃,YM在数据库里边要存,而且存成它是唯一的,不能多个,呃用户呢,持有这个相同的域名,跟我们在公网上访问这个。顶级域名其实是一样的啊,它一定要保持唯一啊,这是多域名的系统。啊多域名系统,那我们再看第二个这个需求。当然有同学如果要是不太理解,或者想要有一些深入的这些探讨的话,你可以在这个视频下方给我留言啊,然后我看见的话,我会给大家回复的。
03:06
这个短网址怎么实现的呢?短网址最著名的现在有这个啊,就是这个短网址点CN是吧,然后斜杠什么一堆乱七八糟的字符,这一堆乱七八糟长度的字符,当用户访问的时候。他会帮我们去跳转到一个真实的网址。这个怎么实现呢?啊,同学们能思考出来吗?当然啊,这个实践有很多种方式,刚才我们说这个二级域名呢,其实也是只是说了呃,其中的一种方式啊。有好多种方式去实现,像我们后期学的NG的高级课程里边呢,我们就可以在NG里直接去编程,然后就返回用户他所想要的这个地址了,这个短网址是怎么来的?首先是不是应该有一套短网址的运维的系统,对吧?那这套系统里边一定先得有一个数据库。诶先有一个DB,这DB里边呢,会存储用户提交上来的。
04:07
用户会提交这个短网址。他会提交什么样的网址,对吧,他会提交上来,他想要跳转的这个地址就真实地址。然后呢,存到数据库里,然后我们就知道了,呃,他想要真正跳转的一个地址是啥,然后经过我们的系统再给他返回一个短网址。这个短网址呢,一定要唯一,那最简单来说呢,我们就用UUID就可以对吧,这基本上呢,就不可能会出现重复的。UID返回作为啥key真实的地址呢?作为Y6。这个作为Y6。全部都存在数据库里。呃,存储。说到这儿,是不是有同学已经明白这个等光是怎么实现的了,对吧?当我们的用户访问到我们的系统的时候,访问到NGNG同样还是要反向代理,把请求打到后端的应用服务器上。
05:12
接下来呢,还是能够获取到用户请求的完整的URL,它不只是能取到这个简单的这个域名,完整URL的也能取到,取到之后我们拆分它后边的这份这串字符串,然后去数据库里去去匹配,因为他之前已经提交进来了,拿到真实的地址之后,诶,给他redirect一下。用户访问,访问的这个地址呢,就被转向了,这是短网址的实现啊,不知道大家有没有听明白啊,这图画的稍微有点乱。再看还有这HTTPDNS,什么叫HTTPDNS呢?我们之前给大家讲的。嗯,DNS服务器是走的udp协议,对吧?HTTPDNS呢,它走的是HTTP协议,这有一个比较大的图,大家可以看这个。
06:04
用户呢,在真正请求我们系统之前啊,他会把这域名解析出来。DNS服务器的走udp协议,他去全网去广播,就像我们刚刚配置的这个域名一样,HTTPDNS呢。走的是HTTP协议,那么走HTTP协议这里面就有这么几点,首先第一呢,你得有IP地址。由于我们想要向DNS请求,发请求,就是想要这个域名的IP地址,对吧?那你现在又没有IP地址,这肯定不行。你得有一个HTTPDNS服务器的地址。这个地址呢,一般来说都是存在我们的客户端的,所以说HTPHTTPDNS呢,一般来说它不适合网页,也就是我们的这个浏览器来使用,这一般来说呢,都是给手机的这个APP。或者是基于CS架构的。就传统的CS架构。
07:03
比较适用于HTTDDNS,它可以在它当前的这个软件里边呢,预埋几个IP地址,这几个IP地址呢,就是我们的NG服务器。在我们系统启动之后。APP会向这个IP去发起请求,发起请求请求啥?请求某一个域名的真实的当前的IP地址是啥?比如说我们的艾特硅谷。就是com,那么以前要解析它的话,我们就把它发到DNS服务器上,对吧,那现在不我们把它发到我们的HTTP的服务器上,就发到NG上,发到NG上之后呢。以参数的形式来来传递过去,那比如说我们的IP地址是192.168.44.101。然后斜杠。然后name等于。At硅谷点com,当然这里这里加个这个get啊问号啊,加个参数嘛,或者你用PHP写的什么,点PHP。
08:07
Name等于at硅谷点com,那我们的系统接到这个请求之后。诶,参数读到是不是可以返回查询这个IP地址,比如存在我们的数据库里,或者存在我们的文本文件里,或者存在我们内存里,这样就把这个。IP地址给我们反馈回来了,这就是基于HTTP协议的,呃,DNS解析,那么它的特点就是它得是CS架构的,因为现在这个浏览器它记不住我现在这个服务器的一些IP,在访问某些域名的时候,因为他第一次请求就需要填入一个域名。这个逻辑上它是违背的,我想要我当前填入这个域名的地址啊,比如这process on,我想要知道它的IP地址是啥。那我怎么办?如果浏览器的话是不行的。比如我内嵌了几个IP,这是不行,当你访问的时候才会去加载这个IP,加载到这个IP之后去发起请求,再访回来,再给我们这个浏览器用,这是不行的,首先浏览器就不允许外部去加载IP给他直接来使用,那其次就是我上来就要访问这个域名了,他等不及你去请求这个IP,所以这种呃,HTPDS现在比较流行也是在这个呃,CS架构或者是APP这一端啊,这是我们的这个嗯,NG的另外的几种场景,在这给大家多讲了一些扩展知识啊。
我来说两句