我需要设计一个具有以下基本组件的系统:
在这样的系统中,有一个服务层可以构建所有组件吗?所有组件间交互都将通过服务层。虽然这会使系统易于升级和维护,但由于我需要处理如此多的流量,它是否也不会对性能产生重大影响?
答案 0 :(得分:2)
除非你防范它,否则会发生什么。
在层之间的通信中,选择了一些格式,如XML。然后你构建并运行它,发现性能不尽如人意。
然后你弄乱了分析器,让你猜测问题是什么。
当我处理这样的问题时,我使用了stackshot technique并很快发现了问题。你会认为这是I / O.不。将数据转换为XML,并解析XML以恢复数据结构,大约占80%的时间。找到一个更好的方法 并不是很难。结果 - 加速5倍。
答案 1 :(得分:1)
您认为拥有单独服务层的成本是什么?
这些费用与必须招致的费用相比如何?在你的情况下,似乎至少
加上一些数据。
您有什么样的服务?也许
为什么开销不仅仅是过程调用?服务不需要暗示“单独的过程”或“Web服务编组”。
我认为结构总是有价值的,应用程序中关注点的分离确实很重要。与数据库活动相比,一些过程调用很少花费太多。
顺便说一句:原始数据的持久性最好是对排队系统进行。然后,如果需要,可以在不同的计算机上安装许多队列读取器,从而获得一些自然扩展。实际上,排队系统自然会引入一些类似服务的概念。
答案 2 :(得分:1)
在设计系统时,个人觉得您可能过于关注低级别的实现细节。在研究如何布置组件,组件或服务之前,您应该考虑如何构建系统。
您可以从以下高级语句开始,从中构建系统体系结构:
显然不是所有上述内容都符合您的具体情况,但我建议至少应该考虑一下。
祝你好运。答案 3 :(得分:0)
抽象和分层会引入延迟,但真正的问题是,你有什么收益才能使成本值得?松耦合,治理,可扩展性,可维护性是值得的。$。
即使是设计最佳的分层应用程序也会比直接与数据库交谈的应用程序表现出更多的延迟。了解原始系统的用户会感受到不同之处。他们可能不喜欢它,所以这可能是一个政治问题,而不是技术问题。