V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Rwing
V2EX  ›  程序员

# [翻译]Azure 网关迁移至 .NET Core 3.1 性能提升一倍

  •  
  •   Rwing · 2021-01-19 08:19:03 +08:00 · 4505 次点击
    这是一个创建于 1165 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原文:[Azure Active Directory’s gateway is on .NET Core 3.1!]

    Azure Active Directory 的网关服务是一个反向代理,它为构成 Azure AD 的数百个服务提供前置服务。如果你使用过 office.comoutlook.comazure.comxbox.live.com 等服务,那么你已经使用了 Azure AD 的网关。网关为 Azure AD 中的服务提供了 TLS 终止、自动故障切换 /重试、地理位置临近度路由、节流和 tarpitting 等功能。该网关存在于全球超过 53 个 Azure 数据中心中,每天服务于约 115 亿次请求。一直以来,Azure AD 的网关都运行在 .NET Framework 4.6.2 上,直到 2020 年 9 月,我们把它迁移到了 .NET Core 3.1 上。

    移植到 .NET Core 的动机

    网关的执行规模导致计算资源的大量消耗,而计算资源的消耗又要花费大量的金钱。寻找降低服务执行成本的方法一直是我们团队的一个关键目标。而 .NET Core 对性能的大量改进引起了我们的注意,尤其是 TechEmpower 将 ASP.NET Core 列为全球最快的 Web 框架之一。我们在 .NET Core 上的对网关原型运行了基准测试,测试结果让人很容易做出决定:我们必须移植到 .NET Core 上。

    .NET Core 的性能改进能否转化为现实中的成本节约?

    绝对是的。在 Azure AD 网关这个案例中,我们能够削减 50% 的 CPU 成本。 这个网关曾经在 IIS 上运行并采用 .NET Framework 4.6.2 。如今,它运行在 .NET Core 3.1 的 IIS 上。 下图显示,与 .NET Framework 4.6.2 相比,我们在 .NET Core 3.1 上的 CPU 使用量减少了一半(有效地将我们的吞吐量提高了一倍)。 由于吞吐量的提升,使得我们能够将集群规模从 4 万个核心减少到约 2 万个核心(减少 50%),如图二。

    (图一)

    (图二)

    未来

    移植到 .NET Core 后,我们的服务吞吐量增加了一倍,这是一个伟大的决定,并且我们的 .NET Core 之旅不会停止。对于未来,我们正在考虑:

    • 升级到 .NET 5.0 以进一步提高性能。
    • 移植到 Kestrel,以便我们能够在 TLS 层拦截连接,以获得更好的弹性。
    • 在我们自己的反向代理中使用 YARP 的组件和最佳实践,同时也做出回馈。
    第 1 条附言  ·  2021-01-19 09:17:57 +08:00
    勘误:每天服务于约 115 亿次请求 --> 1150 亿次请求

    翻译时秀逗了
    53 条回复    2021-01-20 13:37:37 +08:00
    netnr
        1
    netnr  
       2021-01-19 08:35:39 +08:00 via Android
    支持
    Keyes
        2
    Keyes  
       2021-01-19 08:52:36 +08:00 via iPhone
    然后迁移到 go 又提升了三倍 233333

    5.0 貌似不是 lts 版本
    encro
        3
    encro  
       2021-01-19 08:56:32 +08:00
    @Keyes

    当然是 lts 的
    Rwing
        5
    Rwing  
    OP
       2021-01-19 08:56:51 +08:00
    5.0 不是 lts,今年 11 月发布的 6.0 才是 lts
    kaka6
        6
    kaka6  
       2021-01-19 08:57:31 +08:00
    .NET 最近几年确实进步很快
    说到 Azure 我就心有余悸
    之前开个测试,绑定信用卡,然后测试时间用完没有停,一直被扣费
    很不习惯用这国外后收费机制,一不小心就破产
    造成现在看到 Azure,心就慌
    WildCat
        7
    WildCat  
       2021-01-19 09:02:59 +08:00
    @kaka6 可以设置好 budget 啊
    Rwing
        8
    Rwing  
    OP
       2021-01-19 09:07:23 +08:00   ❤️ 1
    勘误:每天服务于约 115 亿次请求 --> 1150 亿次请求

    翻译时秀逗了
    iceneet
        9
    iceneet  
       2021-01-19 09:08:57 +08:00
    可惜国内.net 岗位太少了 要不然 我也想玩玩.net
    Keyes
        10
    Keyes  
       2021-01-19 09:21:59 +08:00 via iPhone
    @Rwing 115B,玩了 eve 才记住 b
    是十亿的,百百百,哈哈哈哈哈

    以前在公司里推.net 推不动,一人之力太单薄了
    sagaxu
        11
    sagaxu  
       2021-01-19 09:24:46 +08:00 via Android   ❤️ 1
    上海有很多用.net 的公司,15 到 20k 不大加班,但因为是传统行业,招人特别难,年轻人只想去 996 互联网公司。因为不是互联网,就算再多公司在用,也会被无视,得出国内.net 用的少的结论。
    fiveelementgid
        12
    fiveelementgid  
       2021-01-19 09:56:16 +08:00 via Android
    fiveelementgid
        13
    fiveelementgid  
       2021-01-19 09:57:46 +08:00 via Android   ❤️ 1
    @Keyes 我们的 Go 真的是太厉害啦(逃
    🐶
    LokiSharp
        14
    LokiSharp  
       2021-01-19 10:24:07 +08:00   ❤️ 1
    @Keyes #2 Go 这种生态差,语法奇葩,性能一般,亲爹爱理不理的语言就算了吧
    Rwing
        15
    Rwing  
    OP
       2021-01-19 10:28:06 +08:00
    @LokiSharp 不要攻击不要攻击😀,各语言都有各自的领域
    yejinmo
        16
    yejinmo  
       2021-01-19 10:28:12 +08:00
    在本站看到 .Net 相关的文章就倍感亲切
    何时才能没有这种心态啊
    dqzcwxb
        17
    dqzcwxb  
       2021-01-19 10:34:25 +08:00
    @LokiSharp #14 兄弟,保重
    LokiSharp
        18
    LokiSharp  
       2021-01-19 10:36:14 +08:00   ❤️ 1
    @Rwing #15 我没有攻击,我纯粹被 Go 恶心到了。
    Keyes
        19
    Keyes  
       2021-01-19 11:15:32 +08:00
    @LokiSharp 我是 C#死忠粉,不过公司推不起来都觉得写类麻烦,go 语法其实还可以的,主要是前公司研发领导在推

    另求个亲爹爱理不理的出处
    aheadlead
        20
    aheadlead  
       2021-01-19 11:18:03 +08:00
    @iceneet #9 敝司招.net 考虑吗 苏州北京
    LokiSharp
        21
    LokiSharp  
       2021-01-19 11:27:19 +08:00
    @Keyes #19 Go 社区提的意见,开发团队基本不管,只管满足 Google 自己内部需求。
    SWALLOWW
        22
    SWALLOWW  
       2021-01-19 11:34:44 +08:00
    @aheadlead 求推荐,四年.NET 桌面端
    aheadlead
        23
    aheadlead  
       2021-01-19 11:45:24 +08:00
    @SWALLOWW #21 请联系 yulwei (at) microsoft <dot> com
    coosir
        24
    coosir  
       2021-01-19 11:54:06 +08:00
    哦,我选 Go
    真不知道哪来那么多优越感,每种语言都是多面的,决定其成败的因素也非常多。
    whitehack
        25
    whitehack  
       2021-01-19 11:54:07 +08:00
    dotnet 确认不输 go
    Rwing
        26
    Rwing  
    OP
       2021-01-19 11:54:55 +08:00
    @SWALLOWW 上海申通正在找 winform 的人才
    charlie21
        27
    charlie21  
       2021-01-19 12:08:06 +08:00
    是锦上添花,而非雪中送炭,锦上添个大红花
    love
        28
    love  
       2021-01-19 12:23:32 +08:00
    不知道为什么,看到 .net 国内起了十几年都起不来倍感舒心~希望能一直保持
    PopRain
        29
    PopRain  
       2021-01-19 12:41:32 +08:00
    @SWALLOWW 上海传统物流企业招人, 简历 wisdom (at) sina <dot> com , 就不放公司邮箱了
    Keyes
        30
    Keyes  
       2021-01-19 13:04:47 +08:00 via iPhone
    转眼间 .net 竟然变成稀缺品种 hhh
    huobazi
        31
    huobazi  
       2021-01-19 13:16:12 +08:00
    .net 比 go 和 node 性能强多了
    BigBunny
        32
    BigBunny  
       2021-01-19 13:27:48 +08:00
    @aheadlead 同程?哈哈
    INCerry
        33
    INCerry  
       2021-01-19 13:30:13 +08:00
    @BigBunny 同程也有 人家那个是 microsoft
    BigBunny
        34
    BigBunny  
       2021-01-19 14:25:27 +08:00
    @INCerry 酱紫 打扰了打扰了 😂️
    SWALLOWW
        35
    SWALLOWW  
       2021-01-19 14:32:32 +08:00
    @Rwing
    @PopRain

    不好意思,请问有北京的岗位吗,或者可以远程吗
    SWALLOWW
        36
    SWALLOWW  
       2021-01-19 14:33:05 +08:00
    @aheadlead
    对算法没信心,刷刷算法再去贵司面试
    aheadlead
        37
    aheadlead  
       2021-01-19 14:36:14 +08:00
    @SWALLOWW #35 没事 您先和我取得联系 我给您简单介绍一下情况如何?
    Ley
        38
    Ley  
       2021-01-19 14:45:07 +08:00 via Android
    5.0 确实还不错,自己的 web 小工具升到了 5.0,性能数据上明显比 3 时代又提升了
    exonuclease
        39
    exonuclease  
       2021-01-19 16:50:06 +08:00
    @Keyes 啊这 泛型加上了吗
    exonuclease
        40
    exonuclease  
       2021-01-19 16:53:33 +08:00
    @aheadlead 活捉同事一只 我在你楼上
    Itoktsnhc
        41
    Itoktsnhc  
       2021-01-19 16:57:16 +08:00
    ms 卡学历嘛 @aheadlead
    yanzhiling2001
        42
    yanzhiling2001  
       2021-01-19 17:00:02 +08:00
    .NET Core 不火才好,没人进来,没人卷
    aheadlead
        43
    aheadlead  
       2021-01-19 17:06:33 +08:00
    @Itoktsnhc #40 先联系我~
    sunnycase
        44
    sunnycase  
       2021-01-19 17:18:40 +08:00
    @Keyes 迁移到 go 只会 OOM 吧
    encro
        45
    encro  
       2021-01-19 17:50:40 +08:00
    @fiveelementgid

    谢谢,居然不是 lts 的。
    用了几个月才发现。
    难怪 vs 还好多 bug 。
    stevefan1999
        46
    stevefan1999  
       2021-01-19 19:56:55 +08:00
    @Keyes 遷移到 go 會被 gc 卡到實際性能提升只有 1.5x
    遷移到 rust 應該才能 3 倍
    crclz
        47
    crclz  
       2021-01-19 20:34:40 +08:00   ❤️ 1
    虽然 go 面对 C# Java 显得缺胳膊少腿,但是 go 的低劣的拥护者比 golang 恶心一万倍。
    zengyiqun
        48
    zengyiqun  
       2021-01-19 22:21:57 +08:00
    .net 5 按之前的说法是过度版本,6 后会整合 framework 才是完全体,要慎重啊
    leeg810312
        49
    leeg810312  
       2021-01-19 22:36:42 +08:00 via Android
    .net 5 是个重大更新版本,但还不是 lts,不过非关键业务系统还是可以用的
    bthulu
        50
    bthulu  
       2021-01-20 08:47:39 +08:00
    outlook.com, office.com 这些网站不是性能超垃圾的吗, 半天都打不开, 也好意思拿来吹
    ragnaroks
        51
    ragnaroks  
       2021-01-20 09:05:42 +08:00
    @bthulu facebook.com : 你在黑我 PHP ?
    pkoukk
        52
    pkoukk  
       2021-01-20 09:41:43 +08:00
    @bthulu 你可以说响应速度慢,但不能说人家性能垃圾。
    至于为什么响应速度慢,有个词叫合规,了解一下
    INCerry
        53
    INCerry  
       2021-01-20 13:37:37 +08:00
    @bthulu google.com 你在黑我 go ?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5358 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 05:50 · PVG 13:50 · LAX 22:50 · JFK 01:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.