微服务架构非常适合构建可扩展的代码库,具有更少的耦合,更好的关注点分离,更高的弹性,结合不同的技术,最重要的是,更好的模块化和构建它的组件的可重用性。
但是,模块化和重用可能经常导致高耦合或代码重复。将不同的服务绑定到同一个共享库会破坏我们首先使用服务的原因。
使用Bit等新的开源技术,在我们的微服务之间共享和重用公共代码变得比以往更容易,更有效。让我们看看为什么以及如何。
在微服务之间共享代码
在解释Bit如何帮助解决这个问题之前,让我们设定一下我们想要实现的主要目标。
微服务被用于代码重复。例如,其他服务使用的任何服务都将导致所有这些其他服务复制所需的代码,以便使用该服务的API。
为任何这样的代码创建一个NPM包(带有一个新的repo)是非常不切实际的,并且会在更难以对代码进行更改时产生大量开销。
Bit 是一个开源项目,它为我们在微服务架构中共享和重用代码提供了一种全新的方法。使用Bit,您不必创建新的存储库或配置包来共享代码而不是复制它。
相反,您可以简单地定义任何现有存储库的可重用部分并共享到其他存储库 - 作为包或跟踪的源代码。这样,您可以在不更改代码库中的单行代码,创建更多存储库或将微服务耦合在一起的情况下,使任何服务的部分可以从其他服务重用。
最好的部分是,Bit还允许您更改与任何其他服务共享的代码 - 因此您可以从基本上任何存储库开发和修改该代码。
您可以使用Bit在项目之间隔离和跟踪源代码的能力,简单地隔离和同步任何可重用的代码,而不是通过公共库将您的微服务耦合在一起。您甚至可以在不同的存储库中使用NPM安装此代码,并且仍然可以从任何目的进行更改。
让我们在以下项目的目录结构中使用Bit来隔离和共享可重用的组件left-pad
, some-logic
和hello-world
。
$ tree
.
├── App.js
├── App.test.js
├── favicon.ico
├── index.js
└── src
└── common
├── left-pad
├── some-logic
└── hello-world
首先,让我们安装Bit。
$ npm install bit-bin -g
让我们为项目初始化Bit
$ cd project-directory
$ bit init
让我们添加Bit要跟踪的组件。
$ bit add src/common/* # use a glob pattern to track multiple components in the same path or a single path to track a single component.
现在让我们锁定一个版本并将组件与项目隔离开来。
$ bit tag --all 1.0.0
3 components tagged | 3 added, 0 changed, 0 auto-tagged
$ bit export username.scopename # Share components to this Scope
exported 3 components to scope username.scopename
请注意,使用--eject
标志还可以从源代码中删除导出的组件,并将其作为包依赖项添加到项目的 package.json
文件中。
就是这样。现在,您可以用你喜欢的包管理器安装组件,或使用bit import
以将他们的源代码导入到任何资料库,进行更改,并在您的代码库同步处理。
微服务为您的开发过程提供了更高的模块化和分离。许多服务将使用相同的代码,因此在它们之间共享代码对于您的开发和维护工作至关重要。
但是,通过共享库耦合服务可能会破坏拥有多个不同服务的重要性。创建不同的repos以将每个代码行作为包发布到NPM是不实际的。
使用像Bit 这样的新技术,我们可以两全其美:轻松地在我们的微服务之间共享公共代码,从任何一端创建和同步更改,并避免通过添加第三方共享库创建的耦合。
希望能帮到你!
原文标题《How to Share and Sync Code Between Microservices》
作者:Joni Sar
译者:February
不代表云加社区观点,更多详情请查看原文链接
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。