最近在使用 node 构建一个数据处理系统,涉及到的模块较多,因此打算采用微服务架构,目前使用了一个微服务框架 Seneca,采用 tcp 进行通信。
Seneca 微服务主要负责和db通信、以及数据处理计算(不是很耗时的计算)。
这里大部分数据处理计算的工作都可以延时完成,但是前端 http 的返回和其中的一部分工作比如数据库查询工作有关,所以需要等待某些微服务模块有返回结果了(或返回部分结果了)再返回给前端。
于是我通过ab测试发现:采用 Seneca 的方式比原来各个模块写在一起直接引入的方式,效率要低好多,比较坏的情况下,甚至平均响应时间是原来的 1.5 倍。
这个也不难理解,毕竟会有通信的开销,还可能因为采用了 Seneca 造成其他的隐形成本。
我现在有点迷茫,采用了微服务的话,可以使模块之间解藕,对开发有一定方便,但是却会降低效率,感觉有些得不偿失。
我对微服务的理解也并不深刻,只是觉得能在代码维护上给这种单体系统带来好处,另外就是微服务的单个服务方便扩容。
是不是我的使用方式不对?还是说微服务本来就有降低效率这个问题?各位是如何解决的呢?希望能指点一二。
慕村9548890
相关分类