当前位置: 首页 > news >正文

商城网站建设视频教程/关键词排名优化教程

商城网站建设视频教程,关键词排名优化教程,深圳最专业的高端网站建设,嘉兴cms模板建站1.1 基本概念 微服务基本概念:微服务就是将一个项目拆分成多个服务。举个简单的例子:将网站的登录功能可以拆分出来做成一个服务。 微服务分为提供者和消费者,如上“登录服务”就是一个服务提供者,“网站服务器”就是一个服务消…

1.1 基本概念

微服务基本概念:微服务就是将一个项目拆分成多个服务。举个简单的例子:将网站的登录功能可以拆分出来做成一个服务。
在这里插入图片描述

微服务分为提供者和消费者,如上“登录服务”就是一个服务提供者,“网站服务器”就是一个服务消费者(服务客户端)。

你可能注意到了客户端和网站服务器通信使用的是http,为什么服务器之间使用的是tcp,这主要和性能、传输灵活度相关。

在nestjs中传输方式还有很多中,比如通过grpc、rabbitmq、redis等技术来传输数据。

补充:登录服务可以部署在同一台服务器也可以在其他服务器,但只要拆分出来了就称之为微服务。

1.2 搭建提供者和消费者

首先保证你全局安装了nestjs脚手架 npm i -g @nestjs/cli

创建nestjs项目,如下代码我将会使用monorepo模式,如果你还不太熟悉这是官网地址:https://docs.nestjs.com/cli/monorepo#monorepo-mode

或者你也可以直接按照我如下步骤操作

  1. nest new my-app:创建一个nestjs的项目,自行选择包管理器
  2. cd my-app:进入my-app目录
  3. nest generate app rpc-provider:把当前项目转化为monorepo模式,并创建rpc-provider项目(提供者)
  4. nest generate app rpc-consumer:创建消费者
  5. pnpm i:安装依赖
  6. pnpm i @nestjs/microservices:安装微服务需要的包

补充启动方式:npm run start:dev rpc-provider

1.3 实现微服务提供者

1.3.1 apps/rpc-provider/src/main.ts

import { NestFactory } from '@nestjs/core';
import { RpcProviderModule } from './rpc-provider.module';
import { MicroserviceOptions, Transport } from '@nestjs/microservices';// 创建微服务
async function bootstrap() {const app = await NestFactory.createMicroservice<MicroserviceOptions>(RpcProviderModule,{transport: Transport.TCP,options: {host: '127.0.0.1',port: 2999,},},);await app.listen();
}
bootstrap();

1.3.2 apps/rpc-provider/src/rpc-provider.controller.ts

说明:nestjs中微服务提供了两种模式

  • MessagePattern:基于请求-响应的消息处理程序
  • EventPattern:基于发布-订阅的消息处理程序,此方式是不需要做出响应的
import { Controller, Get } from '@nestjs/common';
import { RpcProviderService } from './rpc-provider.service';
import { EventPattern, MessagePattern } from '@nestjs/microservices';@Controller()
export class RpcProviderController {constructor(private readonly rpcProviderService: RpcProviderService) {}@MessagePattern('calc')async accumulate(nums: number[]): Promise<number> {console.log('微服务提供者 MessagePattern', nums);return await new Promise((resolve) => {setTimeout(() => {resolve(nums.reduce((pre, cur) => pre + cur, 0));}, 10);});}@EventPattern('notice')handleUserCreated(data: string): void {console.log('微服务提供者 EventPattern', data);}@Get()getHello(): string {return this.rpcProviderService.getHello();}
}

1.4 实现微服务消费者

1.4.1 apps/rpc-consumer/src/rpc-consumer.module.ts

import { Module } from '@nestjs/common';
import { RpcConsumerController } from './rpc-consumer.controller';
import { RpcConsumerService } from './rpc-consumer.service';
import { ClientsModule, Transport } from '@nestjs/microservices';@Module({imports: [// 注册服务ClientsModule.register([{name: 'MATH_SERVICE', //给该服务取一个名字transport: Transport.TCP, //服务传输方式options: {host: '127.0.0.1',port: 2999,},},]),],controllers: [RpcConsumerController],providers: [RpcConsumerService],
})
export class RpcConsumerModule {}

1.4.2 apps/rpc-consumer/src/rpc-consumer.controller.ts

import { Body, Controller, Get, Inject, Post } from '@nestjs/common';
import { RpcConsumerService } from './rpc-consumer.service';
import { ClientProxy } from '@nestjs/microservices';
import { Observable } from 'rxjs';@Controller()
export class RpcConsumerController {constructor(private readonly rpcConsumerService: RpcConsumerService,@Inject('MATH_SERVICE') private client: ClientProxy,) {}@Post()// 说明:Observable是一个可被观察的流,需要安装rxjs(pnpm i rxjs)callService(@Body('nums') nums: number[]): Observable<number> {// emit调用EventPatternthis.client.emit('notice', 'xxx');// 返回的是一个Observable对象return this.client.send<number>('calc', nums);}@Get()getHello(): string {return this.rpcConsumerService.getHello();}
}

有疑问欢迎在文章下留言,看到了我就会回答

http://www.jinmujx.cn/news/449.html

相关文章:

  • 网站seo做哪些工作/seo引擎优化培训
  • 广州乐地网站建设/网络营销成功的案例及其原因
  • ppt模板制作教程步骤/360优化大师旧版
  • 贵州省住房和城乡建设管理委员会网站/成都seo培
  • 无锡网站建设企业排名/友情链接交易
  • wordpress 目录改变/网络优化师
  • 福州建设委员会网站/福建网站建设制作
  • 服务器做网站空间/网店培训骗局
  • 网页游戏网站建设/汕头seo优化项目
  • 郑州网站建设哪家公司好/新品上市的营销方案
  • 网站上的销售怎么做的/百度网盘私人资源链接
  • 做网站挂靠服务器什么好/类聚seo
  • 百度网址大全导航首页/九江seo公司
  • 企业网站模板免费版/百度一下网页版浏览器
  • 网站结构与导航设计/石景山区百科seo
  • 做网站用什么ps软件/朋友圈营销
  • 沭阳奥体小区做网站/广州专业网络推广公司
  • 申报城市维护建设税上哪个网站/网站运营工作内容
  • 武义网站建设/互联网营销师培训机构
  • 公益网站建设需求/大数据分析师
  • 沈阳网站建设建设公司/怎么创建网站平台
  • 霸州放心的网络建站/爱战网关键词查询网站
  • 宁波免费网页制作模板/曹操博客seo
  • app store官方正版下载/班级优化大师简介
  • 怎么防止网站被镜像/nba赛季排名
  • 政府网站建设工作总结报告/网店代运营公司靠谱吗
  • 广州做营销型网站/网络营销师证书含金量
  • 网站怎样续费/南宁seo教程
  • 制作公司网站哪个好/广告投放运营主要做什么
  • 果女做拍的视频网站/网站优化外包费用