最近用node搭建一个数据处理系统,涉及到很多模块,所以打算采用微服务架构,使用微服务框架Seneca并使用tcp进行通信。
Seneca微服务主要负责与数据库通信和数据处理计算(不耗时)
但是我通过ab测试发现Seneca微服务的效率比原来的模块要低很多。在某些情况下,平均响应时间是以前的 1.5 倍。我觉得不难理解:Seneca微服务会产生额外的通信开销和一些其他的开销。
我现在有点迷茫。如果我用微服务架构,我就可以解决一个大系统中模块之间相互引用的问题。方便开发。但是会降低效率,我觉得得不偿失。
不知道是我对微服务的理解有误,还是我的使用方式有问题。我不想看到我使用微服务反而降低了效率。所以如果你有什么想法,请告诉我,非常感谢。
附注我暂时觉得这个问题没必要给出示例代码,只是想听听大家的意见。谢谢。
最佳答案
一般来说,项目的成功不是取决于应用程序组件通信的效率,而是取决于应用程序适应新业务和技术要求的速度。这在具有大型代码库和可能有许多团队的大型应用程序中更容易查看。大单体更难改变。
微服务通过将整体拆分为组件来提供帮助,这些组件可以单独发展,使用不同的技术/框架,并与不同的团队一起以不同的速度发展。
微服务还可以通过为正确的工作使用正确的工具(编程语言、框架)来提高计算效率。例如,JavaScript 擅长异步作业,但它不擅长 3D 渲染或人脸检测。或者,当发明一种最适合某些工作的新编程语言时,可以在微服务中使用它,而无需了解或关心其他微服务。
关于javascript - node的微服务架构会不会降低效率,增加响应时间?有什么解决办法还是我的理解有误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52090842/