gpt4 book ai didi

web-services - SOA - 服务应该有多精细才能保持性能?

转载 作者:行者123 更新时间:2023-12-04 03:19:25 27 4
gpt4 key购买 nike

我正在接手一个项目,从头开始替换一个古老的遗留系统。在我上任之前,公司聘请了一位顾问,他整理了系统的基本草图并大力插入 SOA。这导致了一长串“实体服务”,目的是将它们组合成更复杂的服务组合。例如,想要获得委员会信息的用户会点击“委员会”服务,然后调用“人员”服务来获取其成员,并调用“ session ”服务来获取其 session ,等等。

我理解这样做的灵 active ,但我担心的是性能。在我看来,以如此精细的服务粒度构建的系统在翻译服务消息上花费了太多资源,并且性能将无法接受。在我看来,仍然可以使用基本的可重用对象来获得灵 active 增益,尽管在这种情况下,与技术无关的接口(interface)的好处会失去以获得性能。

更多背景信息:请求此软件的组织目前没有需要集成的稳定的第三方软件套件。该软件将取代所有套件。目前也没有外部消费者需要访问提供的网站界面之外的数据——所有服务调用都来自我们系统内的其他部分。在这种情况下选择 SOA 似乎完全基于“准备”的概念。

所以我的问题是——在不牺牲性能的情况下,稳定的服务可以接受什么样的粒度级别?我是否对我们将所有实体实现为服务所带来的性能影响持怀疑态度?功能是否应该仅在需要时作为 Web 服务提供,而将“准备”的重点放在设计业务层上,以便以后将服务丢弃在其之上?

最佳答案

首先,很难确定在服务数量中找到“最佳位置”。服务太多,您的集成成本就会受到影响;服务太少,您的实现成本就会受到影响。你必须找到一个很好的平衡点。

我给你的建议是关注 Juval Lowy's methodology因为您应该按波动区域或变化区域划分您的服务。这将为您提供粒度级别。您还应该 read his WCF book如果你可以的话。

至于性能,WCF 将固有地支持每秒数千次调用,具体取决于您的用例和硬件。服务调用服务不是问题。如果您尽自己的一份力量,该平台将支持它。例如,为正确的场景使用正确的绑定(bind)(命名管道在同一台机器上调用服务,TCP 在可能的情况下跨机器调用服务)。您还应该在构建应用程序的其余部分之前实现应用程序的垂直切片并进行性能测试。这将验证您的架构。

关于web-services - SOA - 服务应该有多精细才能保持性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5514046/

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