码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Nginx被它打败了?


    Nginx被它打败了?

    我们经常使用Nginx作为我们系统的代理,通常情况下是完全够用的,但是有时候业务的复杂性,我们也需要使用在网关中去代理中做一些业务,这个时候Nginx也可以使用lua脚本扩展,但是并非所有人都会lua,比如我这个.NET开发,这个时候我看到了微软开发的YARP这个SDK,果然还是微软给力,将这么牛逼的东西封装成SDK,供我们使用,下面我们对于Nginx和Yarp进行简单的性能测试。

    部署测试环境

    我们提供nginx环境,proxy_pass代理的是我们的一个Gitea。

    server {
        listen 80;
        server_name localhost;
        location / {
    	    add_header 'Access-Control-Allow-Origin' 'http://localhost:8088';
    	    add_header 'Cache-Control' 'public, max-age=604800';
    	    add_header 'Access-Control-Allow-Credentials' 'true';
    	    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    	    proxy_pass http://token-ai.cn:1001/; 
    	  
        }
    }
    
    

    docker-compose.yml文件,我们使用默认的nginx镜像,然后映射我们的端口,然后执行compose文件

    docker compose up -d
    
    version: "2.1"
    services:
      nginx:
        image: nginx
        restart: always
        ports:
          - 12001:80
        volumes:
          - ./conf.d/:/etc/nginx/conf.d/
    
    

    下面我们构建我们的yarp代码,我们使用.NET 8

    Progarm.cs文件

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

    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": {
              "destination1": {
                "Address": "http://token-ai.cn:1001/"
              }
            }
          }
        }
      }
    }
    

    然后我们构建我们的程序,依赖框架构建(服务器需要安装.NET 8)

    然后放置服务器当中,在执行之前给与可执行权限

    chmod +x Yarp
    

    然后执行我们的程序

    ./Yarp Urls="http://*:12002"
    

    压测结果

    nginx和yarp部署在同服务器下

    使用压测工具ApiPost(压测工具是基于GO实现的)

    压测条件: 并发数100,

    按压测时长:10s

    服务器配置

    Nginx压测:

    Yarp压测

    原接口压测:

    性能测试结果,由于nginx使用docker运行对比yarp确实基本上是打平,对于原接口压测性能俩个性能损耗基本忽略不计。

    Kestrel相关资料

    https://github.com/xljiulang/KestrelApp

    https://www.cnblogs.com/kewei/p/16955086.html

    根据大佬的描述Kestrel跟nginx是一样在传输层的。

    来着token的分享

    技术交流群:737776595

  • 相关阅读:
    Matlab之机载雷达系统中的空时自适应处理(STAP)技术(附源码)
    一个Flutter&Cocoapods项目打包问题集锦
    1400*C. Given Length and Sum of Digits...(贪心)
    pandas使用groupby函数基于指定分组变量对dataframe数据进行分组、使用last函数获取每个分组数据中每个分组的最后一个样本数据
    手把手推导Back Propagation
    停止员工拖延症!工时管理系统的作用之一
    【App自动化测试】(三)使用Appium进行自动化用例录制
    【PyTorch】深度学习实践之反向传播 Back Propagation
    Vue Vuex模块化编码
    mysql5.7安装配置教程(一看就会)
  • 原文地址:https://www.cnblogs.com/hejiale010426/p/17988975
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号