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之后,如果你照着做,所 ...
随机推荐
- PHP图片裁剪函数(图像不变形)
PHP图片裁剪函数(图像不变形) <? *exif_imagetype -- 判断一个图像的类型 *说明:函数功能是把一个图像裁剪为任意大小的图像,图像不变形 * 参数说明:输入 需要处理图片的 ...
- C#学习日志 day 4 ------ 类相关---this指针以及相关关键字
c#中的类和java中的类没什么太大区别.但是c#有些特有的关键字以及属性使得c#具有一些特性. 首先就是this关键字,this在c++和java中都有,可以表示当前对象,以及变量所属对象等.例如 ...
- Nuget升级问题
想在项目中通过“Add Library Package Reference”添加Moq,结果出现错误提示说Nuget版本太低. 要升级Nuget需要先卸载原来的Nuget. 1.在控制面板,卸载程序里 ...
- JAVA并发,线程异常捕获
由于线程的特性,当我们启动了线程是没有办法用try catch捕获异常的,如下例: package com.xt.thinks21_2; import java.util.concurrent.Exe ...
- table常用
<style> table,table td { border: 1px solid #ccc; border-collapse:collapse; } </style> 注意 ...
- 转: mysql create view 创建视图
以下的文章主要是对MySQL视图的描述,其中包括MySQ视图L概述,以及创建MySQL视图-create view与修改MySQL视图--alter view等相关内容的具体描述,以下就是文章的具体内 ...
- eclipse及Java常用问题及解决办法汇总
junit-test 我觉得这点比idea好用,可以直接选中要测试的方法名,右击run as即可 http://www.cnblogs.com/brolanda/p/4532779.html 打开您的 ...
- 我的 Azure VM 为何会重新启动?
在客户创建的客服案件中, Azure VM意外重启是一个常见的问题,客户要求客服确定重新启动的原因.希望下面的详细说明能够帮助您了解 Azure VM重新启动的原因. WindowsAzure大约 ...
- Linux 电子书共享下载--大家一起学习
文件名 大小 时间 到期时间 操作 鸟哥私房菜(全集).pdf 36.57 MB 2 小时前 免费永久 练成Linux高手.chm 3.76 MB 2 小时前 免费永久 ...
- Android animation学习笔记之view/drawable animation
前一章中总结了android animation中property animation的知识和用法,这一章总结View animation和Drawable animation的有关知识: View ...