微软用它取代了 Nginx 性能提升了百分之八十!这也也太牛逼了吧

这篇具有很好参考价值的文章主要介绍了微软用它取代了 Nginx 性能提升了百分之八十!这也也太牛逼了吧。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

戳下方名片,关注并星标

回复“1024”获取2TB学习资源!

大家好,我是民工哥!

提到反向代理软件,大家肯定第一时间想到是:Nginx,没错,Nginx确实是一款非常优秀的反向代理软件,很多大厂都在使用,比如:微软。

不过,目前微软用它取代了 Nginx ,使得吞吐量提升了百分之八十!微软用它取代了 Nginx 性能提升了百分之八十!这也也太牛逼了吧,microsoft,nginx,运维2021 年,微软将应用服务前端队列转换为 Kestrel + YARP。目前这个应用程序每天处理 160B+ 个 HTTP 请求,这是微软内部自己开发的一个应用程序,通过使用 .NET 的基础架构构建在 .NET 上的。微软用它取代了 Nginx 性能提升了百分之八十!这也也太牛逼了吧,microsoft,nginx,运维所以,今天我们一起来学习一下 YARP。

YARP 简介

微软用它取代了 Nginx 性能提升了百分之八十!这也也太牛逼了吧,microsoft,nginx,运维Yarp(Yet Another Reverse Proxy)是一个反向代理工具包,用于使用ASP.NET和.NET基础设施并在.NET中构建快速代理服务器。Yarp是一个轻量级的.NET反向代理,支持HTTP和HTTPS协议,可以将请求转发到其他服务器上。微软用它取代了 Nginx 性能提升了百分之八十!这也也太牛逼了吧,microsoft,nginx,运维Yarp 基于.Net架构,因此可以在Windows和Linux上应用。Yarp最大的特点是可定制化,可以根据特定场景开发出需要的定制代理通道。你可以根据应用程序的特定需求进行自定义,使用规则来转发请求,并在转发请求时添加或修改HTTP头。

  • Github地址:https://github.com/microsoft/reverse-proxy

YARP 的功能特性

YARP具有许多主要特点,包括:

  • 高度模块化:YARP设计成高度模块化的,可以根据需要替换或扩展内部组件,如HTTP请求路由、负载均衡、健康检查等。

  • 高性能:YARP针对高性能进行了优化,利用.NET的异步编程模型和高效的IO操作,以处理大量并发连接。

  • 配置驱动:YARP的行为可以通过配置来控制,支持从文件、数据库或其他来源动态加载配置。

  • 可定制化:YARP最大的特点是可定制化,可以根据特定场景开发出需要的定制代理通道。

  • 稳定可靠:YARP提供了主动和被动健康检查,还提供了多种问题诊断机制。

  • 快速开始:YARP使开发人员能够完全控制,同时利用经过验证的ASP.NET Core和.NET功能集,以及C#(或其他.NET语言)的生产力。

此外,YARP还具有一些功能,如反向代理、负载均衡、限流(仅在使用.NET 7.0或更高版本时可用)、身份验证和授权、压缩、缓存、健康检查以及分布式跟踪等。

YARP 的使用场景

  • 负载均衡:分发请求到后端多个服务器,提高系统的可伸缩性和可靠性。

  • 内部网络隔离:隐藏内部服务器的IP地址,外部只能通过YARP访问内部服务器,从而保护内部网络的安全。

  • 缓存和加速:缓存请求和响应,减少对后端服务器的请求,加速内容的传输。

  • 身份验证和授权:通过集成的身份验证和授权机制,控制对后端服务器的访问,确保只有经过授权的用户才能访问特定的资源。

  • 流量控制和限流:YARP可以限制来自外部的请求速率,防止潜在的DDoS攻击或其他恶意流量,保护服务器免受攻击。

  • 日志和监控:记录请求和响应的详细日志,并提供对流量的监控和分析,帮助跟踪问题、分析性能瓶颈以及监控系统的健康。

  • API网关:在微服务架构中,YARP可以用作API网关,将来自客户端的请求路由到正确的微服务实例,并执行安全检查、速率限制等操作。

部署及使用

YARP 2.0.0 支持 ASP.NET Core 6.0 及更高版本。可以从 https://dotnet.microsoft.com/download/dotnet/ 下载 .NET SDK。

所以安装环境需要预先部署.Net环境,可以使用下面的命令检查:

dotnet --version

然后使用命令行创建一个空的 ASP.NET Core 项目

dotnet new web -n MyProxy -f net6.0

然后使用 nuget 管理工具手动添加包 Yarp.ReverseProxy,也可以使用命令模式添加

Install-Package Yarp.ReverseProxy

在Program.cs文件中注册Yarp

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddReverseProxy()
    .LoadFromConfig(builder.Configuration.GetSection("ReverseProxy"));
var app = builder.Build();
app.MapReverseProxy();
app.Run();

配置 appsettings.json

{
 "Logging": {
   "LogLevel": {
     "Default": "Information",
     "Microsoft": "Warning",
     "Microsoft.Hosting.Lifetime": "Information"
   }
 },
 "AllowedHosts": "*",
 "ReverseProxy": {
   "Routes": {
     "route1" : {
       "ClusterId": "cluster1",
       "Match": {
         "Path": "{**catch-all}"
       }
     }
   },
   "Clusters": {
     "cluster1": {
       "Destinations": { 
       "microsoft": { 
       "Address": "https://docs.microsoft.com/zh-cn/" },
       "github":{ 
       "Address": "https://github.com/" 
       } 
      } 
    } 
  } 
}

配置完成后,运行项目即可,访问该站点将随机反向代理到微软官网和github,如下效果:微软用它取代了 Nginx 性能提升了百分之八十!这也也太牛逼了吧,microsoft,nginx,运维更多操作及配置过程可参考:https://microsoft.github.io/reverse-proxy/articles/getting-started.html

YARP 与 Nginx 

两者都具有相同的功能,在相关的配置上肯定是可相互替代的,接下来演示这部分的配置内容。

路由匹配

YARP提供了类似于Nginx的路由匹配功能。

#Nginx 
/webapp
#YRAP
     "route1" : {
       "ClusterId": "cluster1",
       "Match": {
         "Path": "/webapp/{**catch-all}"
       }
负载均衡

YARP 具有内置的负载均衡功能,可以根据请求的属性(如URL路径、请求头、客户端IP等)将其转发到多个后端服务器。

#Nginx 配置负载均衡

upstream backend {
 server localhost:9002;
 server localhost:9003;
}
server {
 listen 8080;
 server_name localhost;
 
 location / {
  # backend 就是服务器组的名称
  proxy_pass http://backend/;
 }
}
#YARP配置负载均衡
"Destinations": { 
       "APP1": { 
       "Address": "https://10.0.0.1:9999" 
       },
       "APP2":{ 
       "Address": "https://10.0.0.1:8888" 
       }
}

官方给出的实例:微软用它取代了 Nginx 性能提升了百分之八十!这也也太牛逼了吧,microsoft,nginx,运维

地址重写

Nginx  中地址重写直接使用 rewrite

server {
    location / {
        limit_conn myip 10;
        limit_conn myServerName 100;
        rewrite / http://www.mingongge.com permanent;
    }

Yarp 在 route中增加配置

"Transforms": [
          { "PathRemovePrefix": "/OMS" }
        ]
Forward 与 Timeout 配置
Forward配置
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

YARP 默认 X-Forwarded-For,需要配置成 X-Forwarded-Proto,X-Forwarded-Host 可在 Transforms 中进行修改。

Timeout 配置

Nginx 超时配置

proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout  300;

Yarp 超时配置

"HttpRequest": {
    "ActivityTimeout": "<timespan>",#格式"ActivityTimeout": "00:00:30"
    "Version": "<string>",
    "VersionPolicy": ["RequestVersionOrLower", "RequestVersionOrHigher", "RequestVersionExact"],
    "AllowResponseBuffering": "<bool>"
}

总结

YARP 给微软 Azure 应用服务带来巨大的提升:

  • 吞吐量提高了近 80%。

  • Azure 应用的性能提升,降低了 CPU 使用率和内存占用率。

  • 支持 HTTP/3 等现代协议。

  • 支持新的客户方案,例如 gRPC 应用程序、主机密码套件配置、自定义错误页等。

由微软 .NET 核心团队开发的 Kestrel + YARP 这个创新技术还是非常有价值的,值得大家尝试引到自己的开发项目来。

—   特色专栏  —

 MySQL|PostgreSQL|Redis|MongoDB|Tools

ElasticSearch|Kubernetes|Docker|Hadoop

 Kafka|RabbitMQ|Zookeeper|OpenStack

企业监控平台|应用与服务|DevOps|集群管理

微软用它取代了 Nginx 性能提升了百分之八十!这也也太牛逼了吧,microsoft,nginx,运维

扔掉Navicat!来试试这款开源数据库管理工具

年终奖到账了!473662 元

面试这样说,HR喜欢听!成功率提高50%

马化腾回应微信“偷窥”相册!

新一代操作系统语言正崛起,打破C/C++垄断地位

华为开奖!2024 届校招薪资太吓人了!

公众号读者专属技术群

构建高质量的技术交流社群,欢迎从事后端开发、运维技术进群(备注岗位,已在技术交流群的请勿重复添加)。主要以技术交流、内推、行业探讨为主,请文明发言。广告人士勿入,切勿轻信私聊,防止被骗。

扫码加我好友,拉你进群

微软用它取代了 Nginx 性能提升了百分之八十!这也也太牛逼了吧,microsoft,nginx,运维

微软用它取代了 Nginx 性能提升了百分之八十!这也也太牛逼了吧,microsoft,nginx,运维

PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下在看,加个星标,这样每次新文章推送才会第一时间出现在你的订阅列表里。点在看支持我们吧!文章来源地址https://www.toymoban.com/news/detail-795101.html

到了这里,关于微软用它取代了 Nginx 性能提升了百分之八十!这也也太牛逼了吧的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Spring boot实战】Springboot+对话ai模型整体框架+高并发线程机制处理优化+提示词工程效果展示(按照框架自己修改可对接市面上百分之99的模型)

     🎉🎉欢迎光临🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟特别推荐给大家我的最新专栏 《Spring 狂野之旅:底层原理高级进阶》 🚀 本专栏纯属为爱发电永久免费!!! 这是苏泽的个人主页可以看到我其他的内容哦👇👇 努力的苏泽 http://suze

    2024年02月19日
    浏览(42)
  • 向Redis宣战?微软开源Garnet,性能提升几十倍!

    近日,微软正式开源缓存存储系统 Garnet。据微软研究院数据库小组高级首席研究员 Badrish Chandramouli 介绍,Garnet 项目是从零开始构建而成,且以性能为核心考量(特别是吞吐量中的线程可扩展性与更高比例的低延迟水平)。 具体来说,Garnet 具有以下几大优势: Garnet 采用流行

    2024年03月25日
    浏览(35)
  • nginx参数调优能提升多少性能

    nginx安装后一般都会进行参数优化,网上找找也有很多相关文章,但是这些参数优化对Nginx性能会有多大影响?为此我做个简单的实验测试下这些参数能提升多少性能。 声明一下,测试流程比较简单,后端服务也很简单,测试时间也很短,所以实验并不严谨,结果仅作参考,

    2024年02月06日
    浏览(40)
  • 提升网站性能:Nginx五种高效负载均衡策略

    本文收录于我是沐风晓月的csdn专栏《linux基本功-系统服务实战》, 关于nginx的系列后面会汇总起来,关注我,一起学习与成长。 本专栏写作的过程中,联合了csdn几位大佬,目前正在整理更新目录,力争让大家学到一些真东西,将所学的理论落地,帮助你更快的提升自己。

    2024年02月02日
    浏览(42)
  • 10倍提升效率,号称取代Elasticsearch?

    官网 Manticore Search – easy-to-use open-source fast database for search 介绍 对于小型数据集,比Elasticsearch快15倍 对于中等大小的数据,比Elasticsearch快5倍 对于大型数据,比Elasticsearch快4倍 在单个服务器上进行数据导入时,最大吞吐量比Elasticsearch快最多2倍 主要特点 强大而快速的全文搜

    2024年02月13日
    浏览(31)
  • 抛弃chatgpt,使用微软的Cursor提升coding效率

          Cursor编辑器是一个基于GPT-4的代码编辑器,它可以根据用户的自然语言指令或者正在编辑的代码上下文为用户提供代码建议,支持多种编程语言,如Python、Java、C/C#、go等。Cursor编辑器还可以帮助用户重构、理解和优化代码,提高开发效率。Cursor编辑器是一个集搜索、

    2024年02月21日
    浏览(40)
  • 微软 AI 作图上线完全免费,“奖励自己”可提升速度

    ChatGPT 的横空出世应该已经让大家意识到了 AI 的恐怖。 称不上啥都能干,但给东西它真学,学得还比你快。 最近一段时间 AI 在作图领域又一次人气暴涨。 什么小姐姐写真、突破时间线的历史古图、甚至是抽象的表情包都可能源于 AI 之手。 看着手痒想玩玩?繁琐的步骤已经

    2024年02月04日
    浏览(66)
  • ChatGPT爆火| 微软ATP推出教师AI素养提升秘籍

    最近全球爆火的ChatGPT,让我们领略AI技术的迅猛发展,尤其在自然语言处理(NLP)、机器学习(ML)等方向与教育的结合日趋紧密,人工智能在教育领域中的应用呈现出快速增长的趋势。 几乎是在一夜之间 ChatGPT刷爆网络和朋友圈 “ChatGPT上线2个月活跃用户破亿” “ChatGPT会不

    2024年02月05日
    浏览(87)
  • 1.UnityProfiler性能分析提升性能

    1.main thread 主线程 业务逻辑都在这里,我们调用Unity API都在这里;例如设置transform位置,main thread里面处理 2.render thread,渲染线程,负责渲染图像、执行渲染循环、处理GPU命令、帧同步。 3.  这个则表示当前负载最多可以绘制多少次(当前帧数) 4.Batches :批次,绘制场景,

    2024年01月25日
    浏览(52)
  • PowerToys——免费、强大、高效的微软官方效率提升工具集,办公学习宝藏软件

    名人说:博观而约取,厚积而薄发。——宋·苏轼 Code_流苏(CSDN) (一个喜欢古诗词和编程的Coder😊)

    2023年04月19日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包