安卓图形网站建设,比较好网站制作公司,一站式做网站系统,洛可可请参考:http://blog.smarx.com/posts/custom-domain-names-in-windows-azure 本文是对这篇文章部分解释和补充。 并请记住#xff0c;此博客总是能给你在Windows Azure的开发中带来帮助。 域名解析机制浅析 域名解析#xff0c;本是个很简单的事情#xff1a;我们如若想将我… 请参考:http://blog.smarx.com/posts/custom-domain-names-in-windows-azure 本文是对这篇文章部分解释和补充。 并请记住此博客总是能给你在Windows Azure的开发中带来帮助。 域名解析机制浅析 域名解析本是个很简单的事情我们如若想将我们的域名指向某个网站提供的二级域名只要设置cname记录如果我们知道服务器的ip直接设置A记录即可。在Azure的使用中却总是有些人有点疑惑。 这里我们首先要弄清楚DNS解析域名的过程记住只要是通过域名解析设置的不是通过页面重定向技术实现的不管中间经历多少域名的转换从用户在浏览其中输入域名地址DNS返回给浏览器的一定是最终服务器的IP地址中间所有域名解析对于浏览器来说不可见。 事实上请求者不需要知道这些细节DNS的作用在于你给我一个域名我尽其所能找到这台服务器的IP地址。因为互联网本是基于IP的但是为了好记忆才添加了一个DNS应用层在用户看来一个域名始终指向一个IP一个IP可能被多个域名指向。 并且对于开发者而言除了重定向外通过DNS发过来的请求其HTTP请求的Host部分一定是最初用户输入的地址不管中间经历什么其他的域名。 所以这样提示我们开发者应该根据Host来区分用户输入的域名地址以及做相关的导航控制不应该依赖于某个绝对路径。 几种均衡负载方式 Azure的域名解析问题可能主要来自多个Instance每个instance是一个虚拟服务器那这样IP地址怎么确定 这里我们首先来分析均衡负载有几种方式可以参阅《构建高性能网站》最简单的莫过于重定向但是这样会改变浏览器中用户输入的域名可能给里面的内容导航带来混乱其次可以通过DNS来设置可以为一个域名配置几个IP这样DNS可以根据一定的算法分配到不同的IP地址第三种方法是通过硬件来实现市场上也有许多相关的产品其实思路很简单由交换机内部实现将处理分配至不同的内部服务器或者应用程序这样每个内部服务器不需要分配固定IP这样的方式服务对外而言始终拥有固定的IP。 Hosted Service的IP实验 注意本部分是根据笔者实验推断有部分可能不是真实情况仅仅作为参考 Windows Azure的均衡负载通过硬件来实现所有请求和虚拟服务器都由Fabric集中管理所以每一个Hosted Service不管里面真正的应用程序或者数据存储在那个虚拟服务器或者有多少个instance来均衡负载每一个Role对外都只有一个IP并且Azure为每一个处于Production状态的Role提供一个二级域名如:http://egyee.cloudapp.net。 但是注意这里的IP不是固定IP因为一个Role重新部署之后会分配不同的IP所以应该绑定其提供的二级域名而不应该对其IP有任何打算。很简答Azure不认识任何Role每一次部署都会分配IP不可能帮你记住某个Role上一次分配的IP看下面截图 由上图可知我在同一个Hosted Service中两次部署同一Role得到的IP分别是111.221.92.83和111.221.92.89。虽然两者都对应二级域名http://egy.cloudapp.net但是两次部署却分配两个不同的IP。 Windows Azure保留IP的分配权及同一Hosted Service会分配不同的IP地址所以其在上提供了一个二级域名使用户在使用的时候针对同一个Hosted Service有相同的访问路径因此在Windows Azure中我们只能相信二级域名而不能依赖IP地址。 Windows Azure保留动态的域名还使得应用程序存放和执行位置的更改变得容易比如你指定应用程序只在亚洲的数据中心执行那么IP地址是分配到亚洲某个数据中心的某个交换机如果你改为在北美洲那么IP地址则会分配到北美数据中心的IP地址之一。通过这样来使得应用程序执行场所以及数据存放地点离用户最近以减少网络传输延迟。 值得注意的是减少网络传输延迟有几种方式如缓存CDN以及将服务器处理靠近用户这些都是云计算带给开发者的好处我们自己架设服务器不可能得到这些好处。 同时另外值得注意的是在一个Role部署之后如果不做任何修改比如地点等IP地址理论上不会发生改变不过未经验证总之我们不应该关注IP。 域名解析的配置方法也很简单只需要在域名管理里增加一个CNAME记录即可。 在多服务器负载情况下的开发注意事项 如果应用程序可能被不同的域名指向那么我们的应用程序不应该依赖于任何绝对路径包括导航。如果你想要在某个导航写上全路径则Host部分应该取自HTTP请求的Host而不是自己假设的某个域名事实上我们应该始终这样做不管应用程序被什么域名解析始终保证不会出现问题。 相反利用页面重定向的方式实现的均衡负载前面已经分析实际上应用程序接收到的Host并不代表用户输入的域名所以这种情况下可能会导致某些混乱的情况。 事实上重定向是服务器向浏览器返回一个3XX的响应代码根据HTTP协议规则浏览器应该向新的URI地址发送请求本来这不会打乱我们上面的原则但问题是页面重定向针对Uri设置所以不能保证一个域名下的所有Uri都被正确重定向结果导致一个域名下的各个资源路径可能不在同一个域中。而域名的解析式针对一个域名它能保证所以Uri都处于同一个域。 总之要小心使用重定向重定向的页面中可能包含一些相对路径从而使得这些路径对于原来的请求路径处于不同的域中。 云计算中的数据一般不会存储在本地服务器内都是通过比如REST的方式读取和修改数据因此是不依赖于任何服务器的。 在架设分布式服务或者网站或者存储的时候这些情况都是必须考虑的一定要准备好相关的方案 总结 像我之前的一些文章一样我不对文章内容负责因为我写的东西一般都是基于自己思考不会随便去抄一个MSDN或者什么之类。这样由于笔者水平有限可能导致某些思想错误因此这里的东西都是只能作为理解过程中的参考千万不能当真转载于:https://www.cnblogs.com/hielvis/archive/2010/11/22/1884699.html