gpt4 book ai didi

asp.net - 服务结构 : Should I split my API up into multiple little APIs?

转载 作者:行者123 更新时间:2023-12-01 00:26:51 24 4
gpt4 key购买 nike

多年来我一直在构建 .Net Web API...通常我有一个 API,它有 10 个左右不同的 Controller ,它们处理从注册用户、处理业务逻辑、支付等一切事情。这些都与类库对话与数据库等对话。没什么特别的,但它一直很有效。

快进到今天......我正在为一个获得大量流量的应用程序构建版本 2。我知道我的应用会受到重创,所以我正在寻找以效率和规模为基础的东西。

这让我接受了 Service Fabric 和 ASP.Net Core Web API 的酷炫。我一直在阅读大量教程、文章和 SO 问题,据我了解,Service Fabric 的美妙之处在于它会在事情变得繁忙时在单个 VM 中生成多个节点。

那么,如果我保持我的正常模式并制作一个具有 10 多个 Controller 的 Web API,Service Fabric 是否可以执行它需要执行的操作?或者我是否应该创建多个更专注的小 API,以便 Service Fabric 可以在事情变得繁忙时添加/删除它们?

这听起来是正确的做法,我已经设置了我的代码来做到这一点,方法是将我的模型和数据类放在它们自己的类库中,这样它们就可以被不同的 API 重用,但我只是想在我做一些可能愚蠢的事情之前仔细检查。

如果我将每个 Controller 拆分成自己的 Service Fabric 服务,Azure 服务器是否会更高效、扩展性更好?

谢谢!

最佳答案

节点

在 Service Fabric 集群(在 Azure 上/独立)中,一个节点等于一个虚拟机。如果增加机器数量,集群中会出现更多节点。 (本地开发集群不是这种情况。)在 Azure 集群中进行扩展很简单:只需更改 VMSS 实例计数即可。

仅当您使用实例计数 -1 配置无状态服务时,Service Fabric 才会生成它的新实例。这是由于添加节点造成的,而不是负载本身造成的。您可以配置 autoscaling用于 VMSS。

网络 API

Service Fabric 只是尝试在可用资源之间平衡所有正在运行的 SF 服务的负载。这可能是每个节点上一种服务类型的一个实例,也可能是多种类型的多个实例。因此,一项服务可以只使用其运行所在节点的所有资源,就像 IIS 一样。 (顺便说一句,这就是容器支持的原因。)

Web API 设计不受 Service Fabric 的直接影响。在 IIS 或其他地方运行时适用相同的规则。这真的是您的选择。

微服务

您的正常模式将起作用。但是从中制作更小的服务可以帮助减少变化的影响。 (以增加复杂性为代价。)考虑创建提供通用功能的服务,遵循 Microservices范式。

在微服务中,您的代码更改仅限于较小的模块,需要的测试较少,更新期间性能下降较少。这样,理论上,您可以在更短的时间内发布新功能。

关于asp.net - 服务结构 : Should I split my API up into multiple little APIs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41486218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com