微服务的结构:
微服务体系结构是开发软件系统作为独立部署服务的一种方式。在此体系结构中,构建了一个应用程序作为相互通信的小型模块化服务的集合。
每个微服务都专注于做一件事情,可以独立开发,测试,部署和缩放。
使用Nestjs构建微服务很重要,原因有几个。首先,Nestjs提供了专门为微服务体系结构设计的优化框架。
它处理依赖性管理,异步通信和可伸缩性等挑战,这些挑战在复杂的微服务生态系统中很常见。
Nestjs使用渐进的JavaScript,打字条和经过验证的架构模式,例如依赖项注入以创建一致的企业级服务。
其次,Nestjs提高了开发人员的生产率和速度。像CLI这样的声明性,模块化体系结构和开箱即用的开发人员工具使开发人员可以专注于业务逻辑而不是构建样板。
内置功能(例如验证,序列化和CORS处理)也加速了开发。
微服务体系结构的一些关键特征:
- 服务是独立部署的 - 可以独立部署每个服务而无需部署整个应用程序。
- 服务是围绕功能组织的 - 服务是根据业务能力分解的。
- 可以使用不同的编程语言和技术实施服务 - 由于每个服务都是独立的,因此他们可以使用任何语言或技术最有意义的。
- 服务通过API进行通信 - 服务公开其他服务可以消费的API。使用的常见协议是休息,GRPC或异步消息传递。
- 服务是松散的耦合,具有高度凝聚力,但与他人松散。这可以轻松维护和灵活性。
- 服务可以独立缩放 - 可以根据需求扩展服务,从而可以高可扩展性。
微服务体系结构使复杂应用程序的敏捷开发和部署更加容易。它还有助于可扩展性和维护服务。缺点是协调和部署许多独立服务的复杂性。
Microservices的Nestjs优势:
nestjs是一个渐进式node.js框架,为在打字稿中构建有效,可扩展的微服务提供了理想的工具包。以下是使用Nestjs的一些优点:
- 对微服务的内置支持 -Stestjs对微服务体系结构具有一流的支持。它使构建独立的,可部署的服务变得容易。
- 依赖注入 -Stestjs提供了依赖性注入。这允许在服务和更好的模块化之间松散耦合。
- 易于缩放 - Nestjs使用node.js和javaScript,因此易于跨多个节点缩放微服务。该体系结构还有助于可扩展性。
- 打字稿 - Nestjs使用Typescript,为大型企业应用程序提供类型安全和其他好处。
- 使用MVC 模块化 - 代码被模块化为模块,控制器,服务和提供商。这使代码更容易按大规模维护和组织。
- 内置CLI - Nestjs CLI允许快速样板代码生成,使开发人员可以专注于业务逻辑。
- 对开放API和协议的一流支持 -Stestjs与GRPC,MQTT,REDIS等通用微服务API协议很好。
- 模块的丰富生态系统 - 用于配置,日志记录,缓存,速率限制等任务的丰富模块生态系统,有助于加速开发。
Nestjs结合了节点,打字稿和架构模式的最佳特征,例如依赖注入以构建可扩展和可维护的微服务。
项目的设置:
这是使用Nestjs设置新的微服务项目的步骤:
步骤1:使用NPM安装Nest CLI:
npm i -g @nestjs/cli
这将在您的系统上全球安装Nestjs CLI。
步骤2:应创建新的微服务
使用Nest CLI生成新的微服务应用程序:
nest new microservice-name
这将为新的微服务应用程序,文件夹,文件和示例代码提供脚手架。
步骤3:导航到新创建的微服务应用程序的目录
cd microservice-name
更改为刚创建的应用程序目录。
步骤4:创建模块
模块用于将代码整理到Nestjs中的逻辑边界中。在src/创建一个新模块下: p>
nest g module cats
这将在src/cats/cats.module.ts
下生成catsmodule模块步骤5:创建一个控制器:
控制器处理传入的请求和Nestjs中的返回响应。生成一个新的控制器:
nest g controller cats
这将在src/cats/cats.controller.ts下创建一个catscontroller,已导入到catsmodule
步骤6:创建服务
服务包含业务逻辑并处理数据访问和处理。生成猫服务:
nest g service cats
这将在导入到catsModule的src/cats/cats.service.ts下创建CatsService服务类。
步骤7:配置通信
生成的文件包括示例代码,显示控制器如何使用服务。控制器的请求处理方法可以调用服务类上的方法执行业务逻辑。
步骤8:主文件配置
打开src/main.ts,并为您的微服务应用更新任何必需的配置。 NestFactory用于创建Nest App实例。
步骤9:通过运行
开始您的微服务npm run start
这将编译打字稿代码并启动应用程序。微服务将在配置的端口上运行。
模块组织
Nestjs通过将代码组织为模块,控制器,服务和提供商来促进模块化。这是创建模块化微服务的示例工作流程:
示例:如何使用其模块,控制器和服务在Nestjs中组织微服务。
步骤1:创建一个新的微服务,称为“用户服务
nest new user-service
步骤2:导航到微服务目录
cd user-service<
步骤3:为微服务创建一个新模块
nest g module users
这将生成一个用户模块
步骤4:创建一个处理传入HTTP请求的控制器
nest g controller users
这将创建一个用户controller
步骤5:创建一个包含业务逻辑的服务
nest g service users
这将生成一个用户服务
步骤6:定义控制器的路由
在用户controller中定义了请求的路由和处理程序方法:
@Get()
findOne() {
return this.usersService.findOne();
}
步骤7:服务逻辑
实现控制器调用的服务方法的业务逻辑:
findOne() {
return 'user';
}
步骤8:更新模块定义 - 导入控制器和服务
在用户模块中导入控制器和服务:
imports: [UsersController, UsersService]
步骤9:bootstrap微服务:更新src/main.ts
添加必需的应用程序设置代码:
const app = await NestFactory.create(UsersModule);
await app.listen(3000);
步骤10:运行微服务
npm run start
这个模块化组织使维护清洁,独立的服务变得容易。控制器处理Web请求,而服务使用提供商处理业务逻辑。模块将它们绑在一起。
总而言之,Nestjs提供了使用Node.js和Typescript构建可扩展微服务的理想框架。
通过模块,服务和开发人员工具的有效模块化,Nestjs加速了微服务开发和部署。
如果您发现这篇文章令人兴奋,请在Learnhub Blog上找到更多令人兴奋的帖子;我们编写从Cloud computing到Frontend Dev,Cybersecurity,AI和Blockchain的所有技术。
resources
这是我阅读的一些博客/帖子。您应该检查一下:
- Asynchronous JavaScript (JS) Demystified By Thanh Truong’s
- JavaScript Async/Await Tutorial – Learn Callbacks, Promises, and Async/Await in JS by Making Ice Cream 🍧🍨🍦 By Joy Shaheb
- Getting Started with Programming
- Javascript Email with Nodemailer
- How to send an email in node.js using nodemailer
- Javascript Array method
- 20 Best React JavaScript Frameworks For 2023