【Node.js】初识微服务

概述

Node.js 的微服务架构是一种通过将应用程序分解为独立的、松耦合的小服务的方式进行系统设计。

每个微服务负责处理一个特定的业务功能,并且这些服务可以独立开发、部署、扩展和管理,并且可以通讯。

它的核心思想就是解耦。

微服务和微前端是类似的,微前端就是借鉴了微服务的理念去设计的。

单体架构和微服务架构

  1. 单体架构适合小型,并发量不高的项目(5-10w),就是所有的功能放在单个项目里面
  2. 微服务架构适合大型项目,并发量高的情况,就是把每一个小模块单独拆分成一个小项目这样,可以独立部署

Node.js 微服务的开发步骤

微服务构建没有固定的实现方式,需要根据自己的业务调整。

目前流行monorepo架构,就是多项目使用一个仓库,也就是 Vue3 正在使用的架构模式。

需要pnpm支持。

tsconfig.json 由 全局 ts 的命令 tsc --init 生成。

基本目录结构:

配置 pnpm-workspace.yaml 进行管理:

pnpm-workspace.yaml

yaml 复制代码
packages:
  # 自动扫描安装以下文件夹下各个模块的包
  - 'packages/*'
  - 'common/*'

然后执行 pnpm install ,每个package.json 管理的文件夹内都被安装上了相应的包(node_modules)。

Node.js 微服务的优势与挑战

优势:

  • 模块化和可扩展性:每个微服务都可以独立扩展,适应业务增长,使得系统可以更好地应对流量高峰和负载增加的情况。
  • 技术独立性:每个服务可以根据需要使用不同的技术栈和编程语言,可以根据需要选择合适的技术提高开发效率。
  • 开发效率:团队可以并行开发多个微服务,缩短交付时间。
  • 独立部署:每个微服务都是独立部署的,当某个服务进行更新或者修复,只需要重新部署该服务即可。

挑战:

  • 服务间通信复杂度:微服务之间的通信会增加网络延迟和故障传播风险。
  • 分布式系统复杂性:管理和调试分布式微服务系统需要额外的工具和技术。
  • 数据一致性:由于每个微服务可能有自己的数据库,保持数据一致性和事务处理变得困难。
相关推荐
赤生云电竞43 分钟前
GPU算力共享平台架构实践:任务分发与资源隔离的关键配置
算法·架构·gpu算力
一条Go3 小时前
OnCall 时段路由:跨午夜、左闭右开与「Local 不是时区」
后端·架构·github
Dawson Zhu4 小时前
【LLM推理与Serving⑨】业务模型推理引擎开发:以BEV自动驾驶为例的专用推理实践
人工智能·语言模型·架构·aigc·agi
Anymous5 小时前
我手写的 Redis 锁,输给了 10 秒的 TTL
后端·架构
草莓熊Lotso5 小时前
【C++ 基于微服务的即时通讯系统】文件存储子服务实战:UUID生成、文件IO封装与全接口单元测试
开发语言·网络·数据库·c++·微服务·架构·单元测试
非优秀程序员16 小时前
第04章 邮箱大战,163 与 QQ 的暗战|《互联网产品恩仇录》
java·vue.js·架构
非优秀程序员16 小时前
第02章 杭电的英语老师与一台服务器|《互联网产品恩仇录》
数据库·node.js·代码规范
Dawson Zhu20 小时前
【LLM推理与Serving⑪】MoE推理与MLA:DeepSeek-V3架构下的显存与通信权衡
人工智能·语言模型·架构·aigc·agi
Hone20 小时前
juejin-skills 系列 ②:我把「看掘金热榜」也做成了 Agent 技能
开源·node.js·ai编程
IT规划师1 天前
NET10 高并发架构契约与落地实现
架构·.net