关于使用 Node.js 构建 Javascript 微服务的全方位见解!

已发表: 2022-03-21

您的 JavaScript 应用程序的大小是否在快速增长? 如果是,那么维护代码、修复错误和实施新更新对您来说一定是一个挑战。 那么,解决方案是什么? 雇用更多的开发人员可能会有所帮助,但同时可能会增加项目的复杂性并增加费用。

最好的解决方案是采用微服务架构——分布式系统,将大型单体设计拆分为较小的独立程序,这些程序相互通信以执行操作和交换数据。 使用这种方法,可以将应用程序构建为松散耦合服务的合并。

让我们详细探索 JavaScript 微服务,并了解为什么建议使用 Node.js 架构来构建微服务。 此外,获取使用 Node.js 构建 JavaScript 微服务的分步指南。

微服务是什么意思?

在软件应用程序开发方面,微服务是指一种 SOA(面向服务的架构)。 在这里,互连服务的集合形成了应用程序结构。 由于微服务,应用程序的架构是使用LDAP、OpenLDAP等轻量级协议创建的。应用程序可以分解成更小的服务,并且还有增强模块化的空间。 如今,大多数具有 GraphQL/REST 接口的基于云的应用程序都是使用微服务开发的。

微服务相对于单体架构的优势

在微服务的前身单体架构中,所有的软件组件和服务都放在一个大容器中,然后紧紧地包装在一起。 虽然单体应用程序是一个单一的统一单元,但微服务将应用程序结构分解为更小的独立单元,这些单元将每个应用程序进程作为不同的服务执行。 因此,每个服务都有自己的逻辑和数据库,并执行特定的功能。 因此,与单体应用程序相比,微服务应用程序更灵活、可扩展、可靠且与语言无关; 涉及较轻的迭代; 充分优化时间; 系统地组织数据。 此外,微服务的接口(API 端点)包含一个基本 URI。 此 URI 标识数据对象和用于操作对象的标准 HTTP 方法,例如 POST、GET、PUT、PATCH 和 DELETE。

对于基于 JavaScript 微服务构建的应用程序,您可以专注于创建具有精确接口和明确定义操作的单功能模块。 这使应用程序开发过程更加敏捷,最大限度地减少了持续测试的麻烦。

但是,由于在测试、部署、缓存等活动期间必须单独处理每个微服务,因此这种方法并不适合所有类型的项目。 理想情况下,在开发不使用太多业务逻辑的轻量级应用程序/软件解决方案时,建议使用单体架构。 建议使用微服务来构建复杂的应用程序和具有扩展需求的不断发展的应用程序,例如在 SaaS 解决方案中,一天可能有一千个用户,第二天可能有一万个用户。

Node.js 微服务

Node.js 是构建 JavaScript 微服务的首选。 Node.js 是用 JavaScript 引擎编写的开源跨平台 RTE(运行时环境),用于开发服务器端和网络应用程序。 Node.js 在 Node.js 运行时内的 Linux、Microsoft Windows 和 OS X 等操作系统上执行。

为什么首选 Node.js 创建微服务?

Node.js 框架提供了一个丰富的数据库,其中包含多个 JavaScript 模块,可以简化 JavaScript 微服务的开发。 它是构建 I/O 绑定应用程序、基于 JSON API 的应用程序、SPA、数据密集型实时应用程序、数据流应用程序等的首选技术。使用 Node.js 进行微服务开发的好处如下:

异步性质: Node.js 环境的非同步和非阻塞库,无需等待上一个 API 返回数据,即可继续下一个 API。

更好的成本控制: Node.js 和微服务都具有出色的扩展能力,从而降低了开发和维护成本。 此外,Node.js 最大限度地减少了基础设施需求,如内存、CPU 等,与其他服务相比,服务相同数量的请求,从而降低了费用。

出色的性能: Node.js 是一种流行的 Web 技术,具有动态社区支持和大量可用资源。 此外,Node.js 提供了标准的流式 API,因此可以确保在线游戏、聊天应用等实时应用程序的安全开发和良好的性能。此外,如果一个微服务由于问题或错误而关闭,整个应用程序不会'不受影响 而且,JavaScript 作为一种解释性语言,可以在编译阶段节省时间。 这就是使用带有 Node.js 的 JavaScript 微服务的应用程序表现良好的原因。

速度和响应性: Node.js 是单线程的,并且由于事件循环,服务器采用非阻塞机制进行响应。 此外,由于通知“Node.js 的事件”,应用服务器可以捕获之前 API 调用的响应。 缓冲是最小的,因为数据是分块发布的。 随着速度的加快,V8 JavaScript 引擎使 Node.js 开发人员能够非常快速地执行代码。

Node.js 用例场景

Node.js 非常适合以下用例场景:

  • 您正在构建一个需要支持各种客户端、本机移动应用程序和移动/桌面浏览器的企业应用程序; 提供第三方可以使用的 API,为应用程序设置持续部署管道; 通过消息代理或 Web 服务与其他应用程序集成; 并在各种机器上运行应用程序的多个实例,以满足 NFR 的可用性和可扩展性要求。
  • 您需要迁移单体应用程序以增强灵活性、可扩展性和可管理性等方面/能力,或者您必须重新构建遗留应用程序的平台。
  • 您必须隔离独立的端到端服务,例如身份验证和加密。
  • 服务提供商向客户提供所需的基础设施管理和计算资源(如定价或预测服务)的场景。
  • 您必须为可能从各种数据源或渠道收集数据的前端响应式 Web 应用程序提供后端服务。

使用 Node.js 构建 JavaScript 微服务的步骤

验证业务需求

确定您的业务需要哪些服务。 例如,您需要一项服务,其中需要识别两个邮政编码和它们之间的距离。 需要使用验证技术来识别邮政编码和计算距离。 为此,这 . 微服务需要配置外部API调用。 而且,如果您实施内部缓存,则可以通过快速复制 API 调用来节省成本。

初始化程序

首先,在您的工作站/计算机上安装 Node.js,为此,建议使用 8.1.1 版本。 Node.js 数据包管理器,通常称为 NPM,是安装套件的一部分。 NPM 执行项目启动、依赖加载和服务执行等关键功能。

Foe项目初始化,打开Node.js平台,进入根目录,然后运行命令$ npm init。 命令执行后,它为 package.json 文件的创建让路,该文件的创建构成了项目执行的基础。

微服务将基于以下两个主要包创建:

  • “请求”——微服务使用此包连接基于 Web 或第三方的 API。
  • “表达。” – 这个包提供了一个支持 Node.js 应用程序的结构,并支持该微服务的 Node.js 基础。

这些包可以通过这些简单的步骤添加到 package.json 文件中——输入命令 $ npm install express request,在命令末尾添加 save,然后运行此命令。

结果:

mpm init 命令创建用于构建微服务的文件/文件夹结构,Request 和 Express 包以依赖项的形式保存在此结构中。 此后,编码开始。

设置服务器

这一步是编码的第一部分,在这里您需要创建一个识别和接受请求的服务器。

创建一个名为 server.js 的入口文件; 它将在服务器启动时执行。 通过在路由对象中传递应用程序的实例,使路由在主文件中可用。 然后定义路由,当您运行服务器时,应用程序会侦听端口 3000 或在 PORT 环境变量中指定的任何其他端口。

指定路线

然后是微服务开发的下一个关键步骤,即指定响应传输的路由。 较早构建的服务器将分配路由,这些路由将确保处理所有请求。

在您的 api_routes 文件夹中创建一个名为 routes.js 的文件,并向其中添加所需的代码。 现在,路由文件指定了两个端点——about 端点指定了应用程序的详细信息,而 distance 端点使用外部 API 计算了两个邮政编码之间的距离(以英里为单位)。

控制器文件包含这些端点的实现,并将带我们进入下一步。

构建控制器

现在必须将控制器逻辑添加到微服务中,以赋予它一些有用的功能。 控制器对象用于解释用户意图以及动作以传达处理对象的新更改数据。 它在处理之前创建的路由模块收到的请求时也很有用。 控制器文件执行两个函数——getDistance() 和 about()。

about() 函数接受两个参数——请求和响应。 它们的名称以及版本值存储在 package.json 的属性中。 同样,getDistance () 函数也包含请求和响应参数对; 它调用已在服务文件夹中定义的函数 find API。

建立外部 API 调用

要创建 API 调用,请使用第三方 API,ZipCodeAPI.com。 – 可以通过注册帐户或使用测试 API 密钥获得免费的 API 密钥。

现在,通过以下步骤创建微服务代码:

  • 加载处理外部HTTP请求的请求包
  • 加载环境变量中可用的 API 密钥和 zipCodeURL

在 find()function 选项下构建一个请求对象,然后指定一个在接收到响应时将调用的回调函数。 如果上述函数没有错误并且响应包含HTTP状态码200,则该步骤成功执行。之后,响应的主体被解析然后返回。 如果响应被解析而不是直接转发,则可以以最佳效率处理响应。 如果出现任何故障,它们会被记录到控制台并返回 -1 的响应。

执行程序

现在,通过在项目的终端中运行 npm start 命令来执行程序。 如果所有功能运行顺利,点击选项 /about web 端点并在 web 浏览器上查看此输出 - {“name”: “microservices”, “version”: “1.0.0”}

此外,点击 /distance 端点选项并通过查询字符串将一些值传递给它; 然后将产生所需的输出。

在这里,对象的距离被导出。 控制器能够根据需要表示外部 API 调用的具体功能和实例。 最后,为了完成微服务执行过程,检查代码以检测命令中的任何拼写错误。

这是构建用于查找两个邮政编码之间距离的微服务的示例。

将数据库集成到您的架构中

现在,您的 Node.js 应用程序已创建,并且需要将数据存储在数据库中。 为此,您可以使用数据 API 或数据库。 而且,为了从 Node.js 应用程序与您的数据库无缝交互,请使用 JavaScript 驱动程序。

结束语

我希望这篇文章能帮助你收集到关于使用 Node.js 框架构建 JavaScript 微服务的方便信息,并且你已经清楚地了解了构建微服务的过程。

需要技术帮助来构建有效的 JavaScript 微服务? 与经验丰富的 Node.js 应用程序开发公司 Biz4Solutions 联系。 我们的服务已被我们的全球客户公认为最好的服务之一。

要了解有关我们其他核心技术的更多信息,请参阅以下链接:

反应原生应用程序开发

斯威夫特应用程序开发

PHP 应用程序开发