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

天津建设网工程信息网站网站后台登录界面代码

天津建设网工程信息网站,网站后台登录界面代码,wordpress文章密码,民宿网络营销方式前言 在微服务架构中#xff0c;服务发现是一项基础且关键的功能#xff0c;它允许服务实例在网络中被动态发现。Consul 是一种服务网格解决方案#xff0c;提供了服务发现、运行状况检查#xff0c;过去和现代应用程序的连接等功能。 本教程将向您展示如何在 NestJS 框架…前言 在微服务架构中服务发现是一项基础且关键的功能它允许服务实例在网络中被动态发现。Consul 是一种服务网格解决方案提供了服务发现、运行状况检查过去和现代应用程序的连接等功能。 本教程将向您展示如何在 NestJS 框架中集成 Consul 实现服务发现的能力。 什么是 Consul Consul 是由 HashiCorp 公司开发的一种服务网格解决方案它提供完整的服务网格特性并且可以在任何运行您的应用程序的环境中运行。 它具有以下几个主要功能 服务发现 - Consul 客户端可以注册服务例如一个web服务器以便其他客户端可以使用 Consul 来发现服务的位置。运行状况检查 - Consul 客户端可以提供任何数量的运行状况检查服务以便可以自动移除不健康的服务实例。KV 存储 - Consul 提供一个简单的键值对存储用于存储配置和其他用途。多数据中心 - Consul 支持多数据中心这是其特别适用于大型公司和企业的原因。 使用步骤 以下是在 NestJS 应用程序中集成 Consul 用于服务发现的步骤 一、 安装 Consul 在您的本地机器或服务器上安装 Consul。详细的安装教程可以在 Consul 的官方网站找到。您可以通过它们的指南快速启动和运行 Consul 代理。 # 例如在macOS上安装 Consul brew install consul# 启动 Consul agent consul agent -dev 二、初始化 NestJS 项目 如果您还没有 NestJS 项目可以用以下命令创建一个 nest new project-name 三、安装必要的库 为了使 NestJS 能够与 Consul 集成您需要安装 node-consul这是 Consul 的 Node.js 客户端库。 npm install consul 四、创建 Consul 服务模块 在 NestJS 项目中创建一个新模块用于封装 Consul 基本操作 // consul.service.tsimport { Injectable } from nestjs/common; import * as Consul from consul;Injectable() export class ConsulService {private consul: Consul.Consul;constructor() {this.consul new Consul({// Consul 的配置项host: localhost,port: 8500 // 根据实际端口号修改});}async registerService(serviceInfo: Consul.Agent.Service.RegisterOptions) {return new Promisevoid((resolve, reject) {this.consul.agent.service.register(serviceInfo, (err) {if (err) {reject(err);return;}resolve();});});}// 其他 Consul 的操作方法 } 五、 在 NestJS 应用生命周期中应用 Consul 服务 让 NestJS 在应用启动时自动注册服务并在应用关闭时自动注销服务。 在您的主模块例如 AppModule中导入刚才创建的 ConsulService 服务并在模块中注册 // app.module.ts import { Module } from nestjs/common; import { ConsulService } from ./consul.service;Module({// ...providers: [ConsulService], }) export class AppModule {} 修改您的主 AppService 或自定义一个新服务来实现 NestJS 应用的生命周期的钩子 onModuleInit 和 onApplicationShutdown // app.service.ts import { Injectable, OnModuleInit, OnApplicationShutdown } from nestjs/common; import { ConsulService } from ./consul.service;Injectable() export class AppService implements OnModuleInit, OnApplicationShutdown {constructor(private consulService: ConsulService) {}async onModuleInit(): Promisevoid {// 当模块初始化时注册服务try {await this.consulService.registerService({name: nestjs-service,// 其他需要的配置});console.log(服务成功注册到Consul);} catch (error) {console.error(服务注册失败:, error);}}async onApplicationShutdown(signal?: string): Promisevoid {// 应用关闭时注销服务try {// 具体的服务注销逻辑console.log(服务注销成功);} catch (error) {console.error(服务注销失败:, error);}} } 将 AppService 添加到您的主应用模块中去。这样可以确保注册的服务在 NestJS 应用生命周期中被正确管理 // app.module.ts // ... import { AppService } from ./app.service;Module({// ...providers: [ConsulService, AppService], }) export class AppModule {} 这样当您的 NestJS 服务启动时它会自动向 Consul 注册服务当服务关闭时它又会自动从 Consul 注销服务。 如何调用 Consul 注册的微服务 消费通过 Consul 发现的服务意味着您需要从 Consul 获取服务的地址和端口信息然后基于这些信息去发起请求。以下步骤将介绍如何在 NestJS 应用中实现这一点。 一、查询服务 在我们创建的 ConsulService 服务中实现一个方法来获取所有活跃的服务实例。 // consul.service.ts// ... (其他代码)Injectable() export class ConsulService {// ... (其他代码)async discoverService(serviceName: string): PromiseConsul.Agent.Service[] {return new Promise((resolve, reject) {this.consul.agent.service.list((err, result) {if (err) {reject(err);return;}const services [];for (let id in result) {if (result[id].Service serviceName) {services.push(result[id]);}}resolve(services);});});} } 二、实现服务消费逻辑 在您要消费服务的地方比如某个服务或控制器中调用刚才实现的 discoverService 方法获取服务实例。 // some.service.tsimport { Injectable } from nestjs/common; import { HttpService } from nestjs/axios; import { ConsulService } from ./consul.service; import { firstValueFrom } from rxjs;Injectable() export class SomeService {constructor(private httpService: HttpService,private consulService: ConsulService) {}async consumeService(serviceName: string) {try {const services await this.consulService.discoverService(serviceName);if (services.length 0) {throw new Error(服务未发现);}// 假设我们只关注第一个服务实例const serviceInstance services[0];// 构建服务实例的地址以便请求const url http://${serviceInstance.Address}:${serviceInstance.Port}/path-to-service-resource;// 发送请求到服务实例const response await firstValueFrom(this.httpService.get(url));return response.data;} catch (error) {throw error;}} } 注意在实际环境中您可能希望实现更复杂的逻辑比如负载均衡选择多个实例或者使用失败重试机制等。 三、调用服务 在控制器或者其他需要消费服务的地方调用 SomeService。 // some.controller.tsimport { Controller, Get } from nestjs/common; import { SomeService } from ./some.service;Controller() export class SomeController {constructor(private readonly someService: SomeService) {}Get()async consume() {const data await this.someService.consumeService(nestjs-service);return data;} } 这样当您的控制器收到 HTTP 请求时它将通过 SomeService 使用 Consul 服务发现机制来消费远端的服务。 总结 集成 Consul 到 NestJS 应用中是微服务架构中一个关键的步骤。通过这一流程您的服务可以被动态地发现和管理。在微服务架构中你可以根据实际业务场景针对性地实现高可用性和负载均衡等策略。使用 NestJS 框架和 Consul 服务发现你可以构建一个既灵活又可扩展的微服务系统。
http://www.pierceye.com/news/259178/

相关文章:

  • 苏州模板建站平台自助快速建站
  • 域名查询网ip郑州百度网站优化
  • 泉州网站建设 乐本园东昌府网站制作
  • 电子产品配件采购网站阿里云 虚拟主机 wordpress
  • 网站的电子手册用什么做的百度云搜索引擎官网
  • 网站代码隐蔽代码jsp网站开发pdf
  • 厚街手机网站制作网站开发年终总结
  • 泉州网站建设技术外包网站建设的具体奖罚措施
  • 汕头企业网站推广技巧南宁关键词网站排名
  • 做我的世界背景图的网站阿里云服务器做网站外网访问慢
  • 云南百度智能建站登录wordpress数据库吗
  • 万网买好域名后如何开通网站网站历史记录怎么恢复
  • 游戏租号网站开发网页设计的技术有哪些
  • 工信部网站备案文件合肥网站制作建设
  • 网站架设标准网站域名注册费用
  • 东莞网站制作功能十堰微网站建设价格
  • google关键词分析工具网站建设seo 视频教程
  • 泸州市规划建设局网站网站建设及维护包括范围
  • 网站设计培训成都哪个网站开发软件
  • 四川炜航建筑公司网站新郑网络推广外包
  • 网站建设名头网站项目建设方案
  • 可以用asp做哪些网站简历模板大学生免费
  • 公司 宜宾网站建设头条小程序
  • 大连h5建站学院网站建设申请报告
  • 大蒜做营销型网站贵州最好的网站建设推广公司
  • 单仁资讯做网站怎样备案网站应用服务
  • 如何生成一个网站怎么查看一个网站有没有做推广
  • 温州网站设计案例wdcp创建多个网站
  • 做个公司网站专业做网站app的公司
  • 动漫网站源码下载莱芜金点子最新招工信息