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

2021-01-19 08:19:03 +08:00
 Rwing

原文:[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 之旅不会停止。对于未来,我们正在考虑:

4796 次点击
所在节点    程序员
53 条回复
netnr
2021-01-19 08:35:39 +08:00
支持
Keyes
2021-01-19 08:52:36 +08:00
然后迁移到 go 又提升了三倍 233333

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

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

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

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

另求个亲爹爱理不理的出处
aheadlead
2021-01-19 11:18:03 +08:00
@iceneet #9 敝司招.net 考虑吗 苏州北京

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/746138

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX