我有两个微服务(ms) ms1 和 ms2。在这两个ms中都有重复的可重用代码(如哈希/安全相关/orm等)。只是提供信息,这些可用代码有时也可以在DB中维护一些状态(如果有任何影响)。
我有两种方法可以选择:
1. 将可重用代码提取为单独的库并包含在两个ms中。 2. 为此可重用代码创建单独的ms,并将其公开为rest端点。
如果我采用第二种方法,优点是在任何更改情况下,我只需重新部署ms3。如果采用第一种方法,则需要重新部署两个ms。同时,第二种方法将需要单独的维护/资源/监控。
从系统设计的角度考虑,哪种方法更理想,考虑到硬件资源不是一个挑战。我只提到了两个微服务,但在某些情况下可能会有多个具有重复代码的微服务。
我不确定什么标准可以帮助我决定是走共享库还是微服务?
更新:我从以下博客中得到了一些清晰度,但仍有问题。如果需要,我将思考并发布新问题。
我有两种方法可以选择:
1. 将可重用代码提取为单独的库并包含在两个ms中。 2. 为此可重用代码创建单独的ms,并将其公开为rest端点。
如果我采用第二种方法,优点是在任何更改情况下,我只需重新部署ms3。如果采用第一种方法,则需要重新部署两个ms。同时,第二种方法将需要单独的维护/资源/监控。
从系统设计的角度考虑,哪种方法更理想,考虑到硬件资源不是一个挑战。我只提到了两个微服务,但在某些情况下可能会有多个具有重复代码的微服务。
我不确定什么标准可以帮助我决定是走共享库还是微服务?
更新:我从以下博客中得到了一些清晰度,但仍有问题。如果需要,我将思考并发布新问题。
https://blog.staticvoid.co.nz/2017/library_vs_microservice/
https://dzone.com/articles/dilemma-on-utility-module-making-a-jar-or-separate-2