中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

商城網(wǎng)站建設(shè)視頻教程/關(guān)鍵詞排名優(yōu)化教程

商城網(wǎng)站建設(shè)視頻教程,關(guān)鍵詞排名優(yōu)化教程,深圳最專業(yè)的高端網(wǎng)站建設(shè),嘉興cms模板建站1.1 基本概念 微服務(wù)基本概念:微服務(wù)就是將一個(gè)項(xiàng)目拆分成多個(gè)服務(wù)。舉個(gè)簡(jiǎn)單的例子:將網(wǎng)站的登錄功能可以拆分出來做成一個(gè)服務(wù)。 微服務(wù)分為提供者和消費(fèi)者,如上“登錄服務(wù)”就是一個(gè)服務(wù)提供者,“網(wǎng)站服務(wù)器”就是一個(gè)服務(wù)消…

1.1 基本概念

微服務(wù)基本概念:微服務(wù)就是將一個(gè)項(xiàng)目拆分成多個(gè)服務(wù)。舉個(gè)簡(jiǎn)單的例子:將網(wǎng)站的登錄功能可以拆分出來做成一個(gè)服務(wù)。
在這里插入圖片描述

微服務(wù)分為提供者和消費(fèi)者,如上“登錄服務(wù)”就是一個(gè)服務(wù)提供者,“網(wǎng)站服務(wù)器”就是一個(gè)服務(wù)消費(fèi)者(服務(wù)客戶端)。

你可能注意到了客戶端和網(wǎng)站服務(wù)器通信使用的是http,為什么服務(wù)器之間使用的是tcp,這主要和性能、傳輸靈活度相關(guān)。

在nestjs中傳輸方式還有很多中,比如通過grpc、rabbitmq、redis等技術(shù)來傳輸數(shù)據(jù)。

補(bǔ)充:登錄服務(wù)可以部署在同一臺(tái)服務(wù)器也可以在其他服務(wù)器,但只要拆分出來了就稱之為微服務(wù)。

1.2 搭建提供者和消費(fèi)者

首先保證你全局安裝了nestjs腳手架 npm i -g @nestjs/cli

創(chuàng)建nestjs項(xiàng)目,如下代碼我將會(huì)使用monorepo模式,如果你還不太熟悉這是官網(wǎng)地址:https://docs.nestjs.com/cli/monorepo#monorepo-mode

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

  1. nest new my-app:創(chuàng)建一個(gè)nestjs的項(xiàng)目,自行選擇包管理器
  2. cd my-app:進(jìn)入my-app目錄
  3. nest generate app rpc-provider:把當(dāng)前項(xiàng)目轉(zhuǎn)化為monorepo模式,并創(chuàng)建rpc-provider項(xiàng)目(提供者)
  4. nest generate app rpc-consumer:創(chuàng)建消費(fèi)者
  5. pnpm i:安裝依賴
  6. pnpm i @nestjs/microservices:安裝微服務(wù)需要的包

補(bǔ)充啟動(dòng)方式:npm run start:dev rpc-provider

1.3 實(shí)現(xiàn)微服務(wù)提供者

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';// 創(chuàng)建微服務(wù)
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中微服務(wù)提供了兩種模式

  • MessagePattern:基于請(qǐng)求-響應(yīng)的消息處理程序
  • EventPattern:基于發(fā)布-訂閱的消息處理程序,此方式是不需要做出響應(yīng)的
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('微服務(wù)提供者 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('微服務(wù)提供者 EventPattern', data);}@Get()getHello(): string {return this.rpcProviderService.getHello();}
}

1.4 實(shí)現(xiàn)微服務(wù)消費(fèi)者

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: [// 注冊(cè)服務(wù)ClientsModule.register([{name: 'MATH_SERVICE', //給該服務(wù)取一個(gè)名字transport: Transport.TCP, //服務(wù)傳輸方式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是一個(gè)可被觀察的流,需要安裝rxjs(pnpm i rxjs)callService(@Body('nums') nums: number[]): Observable<number> {// emit調(diào)用EventPatternthis.client.emit('notice', 'xxx');// 返回的是一個(gè)Observable對(duì)象return this.client.send<number>('calc', nums);}@Get()getHello(): string {return this.rpcConsumerService.getHello();}
}

有疑問歡迎在文章下留言,看到了我就會(huì)回答

http://www.risenshineclean.com/news/449.html

相關(guān)文章:

  • 網(wǎng)站seo做哪些工作/seo引擎優(yōu)化培訓(xùn)
  • 廣州樂地網(wǎng)站建設(shè)/網(wǎng)絡(luò)營銷成功的案例及其原因
  • ppt模板制作教程步驟/360優(yōu)化大師舊版
  • 貴州省住房和城鄉(xiāng)建設(shè)管理委員會(huì)網(wǎng)站/成都seo培
  • 無錫網(wǎng)站建設(shè)企業(yè)排名/友情鏈接交易
  • wordpress 目錄改變/網(wǎng)絡(luò)優(yōu)化師
  • 福州建設(shè)委員會(huì)網(wǎng)站/福建網(wǎng)站建設(shè)制作
  • 服務(wù)器做網(wǎng)站空間/網(wǎng)店培訓(xùn)騙局
  • 網(wǎng)頁游戲網(wǎng)站建設(shè)/汕頭seo優(yōu)化項(xiàng)目
  • 鄭州網(wǎng)站建設(shè)哪家公司好/新品上市的營銷方案
  • 網(wǎng)站上的銷售怎么做的/百度網(wǎng)盤私人資源鏈接
  • 做網(wǎng)站掛靠服務(wù)器什么好/類聚seo
  • 百度網(wǎng)址大全導(dǎo)航首頁/九江seo公司
  • 企業(yè)網(wǎng)站模板免費(fèi)版/百度一下網(wǎng)頁版瀏覽器
  • 網(wǎng)站結(jié)構(gòu)與導(dǎo)航設(shè)計(jì)/石景山區(qū)百科seo
  • 做網(wǎng)站用什么ps軟件/朋友圈營銷
  • 沭陽奧體小區(qū)做網(wǎng)站/廣州專業(yè)網(wǎng)絡(luò)推廣公司
  • 申報(bào)城市維護(hù)建設(shè)稅上哪個(gè)網(wǎng)站/網(wǎng)站運(yùn)營工作內(nèi)容
  • 武義網(wǎng)站建設(shè)/互聯(lián)網(wǎng)營銷師培訓(xùn)機(jī)構(gòu)
  • 公益網(wǎng)站建設(shè)需求/大數(shù)據(jù)分析師
  • 沈陽網(wǎng)站建設(shè)建設(shè)公司/怎么創(chuàng)建網(wǎng)站平臺(tái)
  • 霸州放心的網(wǎng)絡(luò)建站/愛戰(zhàn)網(wǎng)關(guān)鍵詞查詢網(wǎng)站
  • 寧波免費(fèi)網(wǎng)頁制作模板/曹操博客seo
  • app store官方正版下載/班級(jí)優(yōu)化大師簡(jiǎn)介
  • 怎么防止網(wǎng)站被鏡像/nba賽季排名
  • 政府網(wǎng)站建設(shè)工作總結(jié)報(bào)告/網(wǎng)店代運(yùn)營公司靠譜嗎
  • 廣州做營銷型網(wǎng)站/網(wǎng)絡(luò)營銷師證書含金量
  • 網(wǎng)站怎樣續(xù)費(fèi)/南寧seo教程
  • 制作公司網(wǎng)站哪個(gè)好/廣告投放運(yùn)營主要做什么
  • 果女做拍的視頻網(wǎng)站/網(wǎng)站優(yōu)化外包費(fèi)用