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

當前位置: 首頁 > news >正文

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

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

1.1 基本概念

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

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

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

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

補充:登錄服務可以部署在同一臺服務器也可以在其他服務器,但只要拆分出來了就稱之為微服務。

1.2 搭建提供者和消費者

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

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

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

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

補充啟動方式:npm run start:dev rpc-provider

1.3 實現(xiàn)微服務提供者

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)建微服務
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:基于發(fā)布-訂閱的消息處理程序,此方式是不需要做出響應的
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 實現(xiàn)微服務消費者

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調(diào)用EventPatternthis.client.emit('notice', 'xxx');// 返回的是一個Observable對象return this.client.send<number>('calc', nums);}@Get()getHello(): string {return this.rpcConsumerService.getHello();}
}

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

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

相關(guān)文章:

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