专栏首页技术翻译如何在微服务之间共享和同步代码

如何在微服务之间共享和同步代码

微服务架构非常适合构建可扩展的代码库,具有更少的耦合,更好的关注点分离,更高的弹性,结合不同的技术,最重要的是,更好的模块化和构建它的组件的可重用性。

但是,模块化和重用可能经常导致高耦合或代码重复。将不同的服务绑定到同一个共享库会破坏我们首先使用服务的原因。

使用Bit等新的开源技术,在我们的微服务之间共享和重用公共代码变得比以往更容易,更有效。让我们看看为什么以及如何。

在微服务之间共享代码

在解释Bit如何帮助解决这个问题之前,让我们设定一下我们想要实现的主要目标。

  1. 在我们的微服务之间共享公共代码,同时保持我们的代码DRY。
  2. 避免通过共享库进行耦合,这消除了分离开发过程的优势。
  3. 启用简单更改并同步到我们在微服务之间共享的代码。

微服务被用于代码重复。例如,其他服务使用的任何服务都将导致所有这些其他服务复制所需的代码,以便使用该服务的API。

为任何这样的代码创建一个NPM包(带有一个新的repo)是非常不切实际的,并且会在更难以对代码进行更改时产生大量开销。

没有共享的Libs,没有耦合

Bit 是一个开源项目,它为我们在微服务架构中共享和重用代码提供了一种全新的方法。使用Bit,您不必创建新的存储库或配置包来共享代码而不是复制它。

相反,您可以简单地定义任何现有存储库的可重用部分并共享到其他存储库 - 作为包或跟踪的源代码。这样,您可以在不更改代码库中的单行代码,创建更多存储库或将微服务耦合在一起的情况下,使任何服务的部分可以从其他服务重用。

最好的部分是,Bit还允许您更改与任何其他服务共享的代码 - 因此您可以从基本上任何存储库开发和修改该代码。

示例工作流程

您可以使用Bit在项目之间隔离和跟踪源代码的能力,简单地隔离和同步任何可重用的代码,而不是通过公共库将您的微服务耦合在一起。您甚至可以在不同的存储库中使用NPM安装此代码,并且仍然可以从任何目的进行更改。

让我们在以下项目的目录结构中使用Bit来隔离和共享可重用的组件left-padsome-logichello-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

现在让我们 将组件共享到远程Scope

$ 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

不代表云加社区观点,更多详情请查看原文链接

原文链接:https://dzone.com/articles/how-to-share-and-sync-code-between-microservices

原文作者:Joni Sar

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 9个成功的微服务设计的基础知识

    人体是不同系统的组合,其中大多数系统是独立的,并且作为一个整体协同工作。每个系统都有自己的特定功能。所有具有多种其他支持框架的器官构成了一个功能完备的机构。现在...

    February
  • 用于在所有级别上构建微服务的29个顶级工具

    关于微服务有很多很棒的文章。对于那些一直没有接受微服务的人,或者新手,本文是为了提供顶级开源工具的整合。微服务架构,或仅微服务,是用于开发软件系统的高度可扩展的...

    February
  • 3个简单的步骤将帮助您立即开始使用微服务

    我们专业的开发人员和建筑师总是希望做和探索新技术,为我们的项目和客户带来新的东西,并提高我们的技术知识和职业。

    February
  • 使用服务网格/Istio开发微服务1:背景及开发约定

    微服务会把大的应用拆分成若干小的服务应用和前端应用,如何协调/治理这些应用,并解决在开发中遇到的各种问题是微服务面临的挑战。通常一个微服务系统需要关注的问题有:

    谢正伟
  • RPC原来就是Socket——RPC框架到dubbo的服务动态注册,服务路由,负载均衡演化

      序:RPC就是使用socket告诉服务端我要调你的哪一个类的哪一个方法然后获得处理的结果。服务注册和路由就是借助第三方存储介质存储服务信息让服务消费者调用。...

    intsmaze-刘洋
  • 微服务架构选型实践

    背景 随着公司一年多的成长,我们已经开发了数十个项目了,后台有 JAVA 的有 PHP 的,为了更好地提升开发与管理效率,各技术大牛小牛们时常进行激烈的 PK,...

    Java高级架构
  • OpenStack命令删除卷

    通过ID删除卷 [root@controller ~]# openstack volume delete 9c484900-f72e-4ee8-b44a-088...

    院长技术
  • OpenStack命令从虚拟机上分离volume卷

    命令:nova volume-detach SERVER-NAME-OR-ID VOLNAME

    院长技术
  • OpenStack命令创建一个卷

    院长技术
  • OpenStack命令查看卷列表

    院长技术

扫码关注云+社区

领取腾讯云代金券