微软发布了反向代理YARP 1.0,用户已经可以从NuGet上下载这个以.NET撰写、具有高可自定义特性的反向代理,微软提到,YARP和其他反向代理之间的不同,在于YARP构建和打包的方式,YARP是以函数库的形式发布,并且提供范例展示使用方法。
反向代理(Reverse Proxy)是用来监听传入的HTTP请求,并根据请求的内容,将请求转送到适当的服务器,但是反向代理跟第4层典型的防火墙和路由器不同,反向代理是在第7层运行,因为需要理解HTTP,并且基于HTTP字段运行。YARP在代理请求时,会处理来自客户端的HTTP连接,然后使用自己所创建到目标服务器的连接,使得两端都可以从连接池中获得好处。
反向代理可以充当一个或是一组服务的公共端点,使暴露的URL空间,独立于实际实例,并且将调用转送到后端服务器,以执行真正运算,平衡服务器间的负担,另外,反向代理也能帮忙分担后端服务器的工作,执行像是TLS加密、压缩或是缓存等任务。
微软已经发展YARP项目两年,一开始是因为微软观察到内部多个团队,都存在反向代理的需求,因此共同研究出YARP解决方案。YARP是一个反向代理工具包,通过使用来自ASP.NET和.NET的基础设施,在.NET中构建高性能反向代理,YARP的特点是容易自订,用户可以根据需求,自订并且调整成来满足特殊场景的需求。
YARP提供了两个主要使用和自订的方向,第一个是作为一个全功能代理,YARP借由配置来定义一组基于URL模式的路由,这些路由会对应到目标服务器集群,集群中的每个目的地,都应该可以处理对应的路由请求。目的地列表可以根据对话亲和度,和服务器健康状况进行过滤,并且使用负载均衡算法,选择最终的目的地。
另一种使用方式,则是将YARP用于高度自定义的环境,用户可以直接调用YARP请求转送程序,绕过路由和负载均衡等模块。微软提到,开发者甚至可以在同一个程序中混合两种方式,根据路由切换。