CSF 中的应用程序请求路由
编辑人员注释:本文章由 AzureCAT 团队的
Christain Maritnez 撰写。
应用程序请求路由(简称为 ARR)可能是 Microsoft 使用的技术中讨论得最少但极为重要的技术之一,它能够支持
Windows Azure 网站、Outlook.com 和许多其他关键的高容量应用程序。那么按理说,直接在 Windows Azure 应用程序中使用该技术就更少被谈及了。我们将该技术用于云服务基础,是因为
CSF 显示的一个模式是在多个云服务中拆分工作,并根据用户以透明方式创建与云服务的关联。这种方法以过往的大客户经验为依据,将云服务用作规模单元,而具有较高的本地性(数据接近使用它的代码), 可以提供性能优势。ARR 非常适合帮助我们达到要求。
起初,您听到多个云服务时可能会说:“稍等一下……就是说,你们有多个云服务了。那就用
Windows Azure Traffic Manager (WATM) 好了!”事实上,对于大多数路由需求,当您出于性能或业务连续性的原因在多个云服务中拆分工作时,WATM
可能是正确的选择。但在这种情况下,它不符合要求。WATM 提供了三种负载平衡方法:
· 性能
· 故障转移
· 轮循机制
这些方法都很好,但不符合根据用户身份(由 Cookie 决定)向云服务发送用户请求的要求。
要使用 ARR,需要满足以下 4 个条件:
1. 用于托管 ARR 的、由 Web Role 组成的 Windows Azure 云服务
2. 用于安装和配置 ARR 的脚本
3. 配置 ARR 规则
4. 如果用户没有之前访问留下的 Cookie, 决定要执行的操作
可以在此处找到上述条件的详细信息和代码。这些步骤对于在
Azure 上利用 ARR 的任何解决方案大多通用,因此本文中我将只讨论特定于 CSF 的两个部分:
· 按 Cookie 路由规则 – CSF 的 ARR 路由规则是怎样的?
· 不存在 Cookie – 没有 Cookie 时应该做什么,怎么做。
按 Cookie 路由规则
按用户 Cookie 路由用户的逻辑如下所示:

规则配置可能是一个比较复杂的主题,但以上逻辑的基本意思如下:
如果通过 SSL 发送请求且该请求是相对路径,并包含 userpod=(某个数字) 形式的用户 Cookie,则捕获等号后的部分 Cookie,并通过插入捕获的值重写目标 URL。
当然,这看起来有点奇怪,但过段时间就会习惯了。
不存在 Cookie
但如果未检测到 Cookie 怎么办?可能有多种解决方法,但我们决定创建一个实现两个接口(IRewriteProvider
和 IProviderDescriptor)的类。第一个接口允许您根据请求输入使用代码来返回自定义 URL,第二个接口允许您提供自定义输入的简单配置。给提供程序的代码仅获取已配置的 pod,并在没有 Cookie 的请求到达时,以循环方式在其中进行选择。这并不是一个令人振奋的代码,因为它相当于递增一个整数,然后在到达最后一个点时循环。
配置代码更为有趣一些,但相差不大:

这就形成了一个网格,在其中可以对给定 pod 输入一个 URL。因此,这一切的实际效果是,我们的代码可使用一组地址进行配置,以选择是否存在 Cookie!
最后的思考
ARR 是一款强大的工具,在 Microsoft 内应用广泛。本博客向您阐明了我们对 CSF 方案使用该技术的原因,但此方案仅触及了 ARR 用途的皮毛。例如,我们所见到的常见用法之一是在云服务内使用,以便路由和负载平衡在任何所需模式中都可用。如果 WATM 或其他一些预构建服务能够满足您的需求当然很好;如果不能,请不要忽视这个强大且灵活的选项。
本文翻译自:
http://blogs.msdn.com/b/windowsazure/archive/2013/10/31/application-request-routing-in-csf.aspx
CSF 中的应用程序请求路由的更多相关文章
- 在ASP.NET 5应用程序中的跨域请求功能详解
在ASP.NET 5应用程序中的跨域请求功能详解 浏览器安全阻止了一个网页中向另外一个域提交请求,这个限制叫做同域策咯(same-origin policy),这组织了一个恶意网站从另外一个网站读取敏 ...
- Spring Cloud Zuul API服务网关之请求路由
目录 一.Zuul 介绍 二.构建Spring Cloud Zuul网关 构建网关 请求路由 请求过滤 三.路由详解 一.Zuul 介绍 通过前几篇文章的介绍,我们了解了Spring Cloud ...
- 技术基础 | 改进版的Apache Cassandra客户端请求路由
最近我们在客户端的驱动程序中引入了一些变更,这些变更会影响传入的请求在Apache Cassandra集群内的分发方式. 新的默认负载均衡算法即将随驱动程序推出,这些算法将有助于缩短长尾延迟,并提 ...
- react实战系列 —— React 中的表单和路由的原理
其他章节请看: react实战 系列 React 中的表单和路由的原理 React 中的表单是否简单好用,受控组件和非受控是指什么? React 中的路由原理是什么,如何更好的理解 React 应用的 ...
- php中ajax跨域请求---小记
php中ajax跨域请求---小记 前端时间,遇到的一个问题,情况大约是这样: 原来的写法: 前端js文件中: $.ajax({ type:'get', url:'http://wan.xxx.c ...
- Android应用程序请求SurfaceFlinger服务渲染Surface的过程分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/7932268 在前面一篇文章中,我们分析了And ...
- Android应用程序请求SurfaceFlinger服务创建Surface的过程分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/7884628 前面我们已经学习过Android应 ...
- 从mina中学习超时程序编写
从mina中学习超时程序编写 在很多情况下,程序需要使用计时器定,在指定的时间内检查连接过期.例如,要实现一个mqtt服务,为了保证QOS,在服务端发送消息后,需要等待客户端的ack,确保客户端接收到 ...
- MVC应用程序请求密码的功能(二)
MVC应用程序请求密码的功能(二) 在完成<MVC应用程序请求密码的功能(一)>http://www.cnblogs.com/insus/p/3471534.html之后,如果你照着做,所 ...
随机推荐
- pl sql项目演练--B2C商城项目
项目学习视频下载地址:点击下载 1.注册会员及找回密码模块 }该模块主要功能有注册会员和找回密码 }注册会员:所需信息主要有:登录号.密码.真实姓名.性别.密码问题.密码答案.Email.地址.电 ...
- Java threadpool机制深入分析
简介 在前面的一篇文章里我对java threadpool的几种基本应用方法做了个总结.Java的线程池针对不同应用的场景,主要有固定长度类型.可变长度类型以及定时执行等几种.针对这几种类型的创建,j ...
- math。h中的log函数的应用
以10为底的log函数: 形式为 double log10(double x) 以e为底的log函数(即 ln)double log (double x) 如何表达log 以a为底b的对数: 用换 ...
- php基础知识--文件操作
文件操作 文件 广义角度: 任何一个在磁盘上可以看到的符号(包含真正的文件及文件夹) 狭义角度: 真实存储数据的载体(不包含文件夹, 如doc文件,txt文件等) 文件操作: 对文件的增删改查 文件分 ...
- ESX与ESXi管理员必备25个命令
[转载] 正 如所有的虚拟化管理员都知道,要应对VMware基础设施上需要的更多虚拟化管理,关键在于任务的自动化.虽然VMware ESX主机可以管理与vSphere客户端用户界面,数据中心管理员往往 ...
- ONFI闪存数据通道接口标准
早期的闪存产品每个厂家的设计标准各有不同,会碰到各种各样的问题,特别是到了06年之后,闪存产业市场需求开始发力,造成了迫切需要一个统一的标准来改变这个问题. 2007年1月,以英特尔,镁光,海力士,意 ...
- vb.net 操作xml
xml文件: <?xml version="1.0" encoding="gb2312"?> <bookstore> <book ...
- perl lwp get uft-8和gbk
gbk编码: jrhmpt01:/root/lwp# cat x2.pl use LWP::UserAgent; use DBI; $user="root"; $passwd='R ...
- python 在 for i in range() 块中改变 i 的值的效果
先上一段代码: for i in range(3): i = 2 print(i) 实际结果是: 2 2 2 可以发现实际效果就是 在每次执行 for 语句块的内容后 i 会被重新赋值
- 超级密码(bfs)
超级密码 Time Limit : 20000/10000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submis ...