【Express.js】微服务架构

这篇具有很好参考价值的文章主要介绍了【Express.js】微服务架构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

微服务架构

微服务

微服务架构是将一个单体应用程序拆分为一个个独立且保持松耦合的服务的一种架构方式,每个服务有着独立的数据库并且能独立运行部署,所有的服务最终可以被视作一个集群而进行统一管理

优缺点

从微服务的理念着手,它的优缺点绝大部分能通过与单体应用相对比得出

优点

微服务的优点,就是解决了单体应用的痛点

  • ★ 高可维护性与高可拓展性
    随着时间的推移,单体项目将不可避免的臃肿无比且交错杂乱,高耦合的屎山代码使得每一次维护与拓展都变得胆战心惊。而微服务将完整系统中的每一个模块抽离出来,使得业务更加清晰耦合度降低,维护与拓展将会容易很多
  • ★ 程序构建与迭代高效
    原本庞大的单体项目修改了源码之后需要整个项目进行重新编译与运行,如果体量足够大,可是要不少时间。拆分为微服务后,只需要重新编译与运行有限的几个微服务即可,由于微服务的体量小很多并且可以并行构建,效率肉眼可见的高
  • ★ 系统稳定与健壮性增强
    一体的单体应用中如果某一环出了问题,可能导致整个系统瘫痪的重大事故,而独立且松耦合的微服务系统,完全可以将瘫痪的范围缩小到有限的部分微服务上,而不至于导致整个系统下架维护
  • ★ 打破技术限制与瓶颈
    毕竟微服务是独立开来的,因此每个微服务完全可以采取不同的语言与开发环境,以适应各自的特色业务需求,比如需要强劲算力的微服务可以采用Rust语言和更快的GPU硬件,需要图形计算的微服务可以使用Neo4j作为数据库等等
缺点

当然了,微服务也是一把双刃剑,在解决了单体服务的痛点的同时,由于分布式的架构不可避免的带了一些原本不存在的挑战

  • 运维与部署成本高
    单体应用不出意外就一个应用程序和一个数据库,运维和部署是很容易的。虽然微服务的每个独立服务可以通过CI/CD实现自动化构建与部署,但考虑到各个微服务的特性与独立的数据,可能需要多台不同的服务器,配置过程也较为繁琐
  • 分布式系统的复杂性
    由于微服务架构遵从分布式,这将带来许多挑战与困难,比如系统容错、数据同步、分布式事务、网络延迟等等的问题
  • 通信接口维护成本高
    微服务之间通过内部的api交互,当其中一个api变动,其他依赖它的服务都需要做出相应的调整

设计原则

  • 单一职责原则
    微服务各司其职,只关心完整系统中的一部分功能
  • 服务自治原则
    微服务高度独立,与其他服务保持松耦合状态,在开发、测试、部署的过程中应当能做到独立运行而不强制依赖其他服务
  • 轻量级通信机制
    微服务之间相互通信,应该通过某些比较便捷且支持跨语言跨平台的手段,比如 Rest Api,比如消息队列等
  • 合理粒度原则
    合理地划分微服务的粒度,不是说代码量少就等于适合做成微服务,更要业务复杂性的体量以及与其他服务之间的关联程度

技术选型

在微服务落地中,有着一些非常不错的开源框架可供选择

  • SpringCloud 一款非常优秀且成熟的微服务开源框架
  • Dubbo 阿里开源的一款微服务框架
  • Spring Cloud Alibaba 阿里开源的基于SpringCloud的框架
  • Open Feign 出自Spring社区的Restful服务通信组件
  • Nacos 阿里开源的一款强大的服务注册中心
  • Seata 阿里和蚂蚁开源的分布式事务解决方案
  • Nginx 高性能http和反向代理服务器
  • Docker 实现微服务的容器化部署

借助已有的优秀开源框架,将帮助我们更好的理解和实践微服务架构。文章来源地址https://www.toymoban.com/news/detail-585936.html

下一章-evp-express-cli

到了这里,关于【Express.js】微服务架构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Express.js】页面渲染

    常见的页面分为两种,一种是静态页面,比如用 Vue、React 等写好的静态页面,另一种是动态模板页面,如 Thymeleaf,JSP 等。 本节将简要介绍如何在 express 中渲染静态页面,以及适用于 express 的模板引擎 pug 。 写前端的和搞部署的同学应该都清除,页面渲染的用到的 css, js, f

    2024年02月13日
    浏览(47)
  • 【Express.js】请求类型

    本节将介绍常见的http请求方式,并站在后端的角度初步感受它们的不同点 GET 意图是 获取 ,不会对服务器上的数据产生影响,将要携带的数据放在 URL 上,通常不带请求体,带了也不一定兼容 POST 意图是 提交 ,通常用于修改和新增服务器上的数据,偏向 新增 ,路径定位较

    2024年02月09日
    浏览(43)
  • Express.js认识

         Express 是 Node.js 老框架,以简单和轻量著称,几行代码就可以启动一个 HTTP 服务器。 市面上主流的 Node.js 框架,如 Egg.js、Nest.js 等都与 Express 息息相关。 Express 框架使用标准 Node.js 语法,主要由以下 3 个核心部分组成: 路由。 中间件。 错误处理。      Express  基本结

    2024年02月21日
    浏览(37)
  • 【node.js从入门到精通】使用express创建web服务器,路由,进行中间件的创建链接路由及其他中间件

    目录 前言 初识express 使用express创建基本的web服务器 初识express路由 路由匹配概念 路由模块化 中间件 中间件和路由的区别 定义中间件函数 中间件作用   局部生效中间价 中间件分类  1.应用级别中间件  2.路由级别的中间件  3.错误级别中间件  4.内置中间件  5.自定义中间

    2024年02月02日
    浏览(55)
  • 【Node.js】Express-Generator:快速生成Express应用程序的利器

    在Node.js世界中,Express是一个广泛使用的、强大的Web应用程序框架。它为开发者提供了一系列的工具和选项,使得创建高效且可扩展的Web应用程序变得轻而易举。然而,对于初学者来说,配置和初始化Express应用程序可能会有些困难。为了解决这个问题,Express团队推出了一款名

    2024年02月10日
    浏览(55)
  • 【Express.js】软件测试

    本节介绍如何在 express.js 使用 Jest 进行单元测试 准备一个基础的 express 项目,本文基于 evp-express-cli 安装 Jest 生成 Jest 配置 创建测试文件,以 .test.js 后缀命名,Jest 在运行期间会自动查找并执行符合 *.test.js 命名的文件,为规范起见,新建一个 test 目录,存放所有的测试文件

    2024年02月13日
    浏览(36)
  • 【Express.js】处理请求数据

    本节将具体介绍express后端处理请求源携带数据的一些方法和技巧 很多时候我们需要处理一些类似但有操作差别或不同对象的业务,我们可以监听一段基本路径,将其中某一个段或者某几段路径作为变量,在接口中根据不同的路径变量执行不同的业务操作,这是一种REST风格比

    2024年02月11日
    浏览(39)
  • 【Express.js】全局错误处理

    在前面几节里,我们处理异常的方法都是手动在可能引发异常的地方捕捉错误,这固然是必要的,可以有针对性得处理异常,但很多时候,有许多潜在的异常,有一句话叫永远不要相信输入的数据,你永远都不知道什么时候可能会以什么方式触发某些阴间异常从而造成系统崩

    2024年02月10日
    浏览(47)
  • 【Express.js】集成Websocket

    本节我们介绍在如何在 express 中集成 websocket。 WebSocket 服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。 创建一个 express.js 项目(本文基于evp-express-cli) 安装ws.js: (本教程使用更通用的ws.js,有

    2024年02月13日
    浏览(35)
  • 【Express.js】集成SocketIO

    本节我们介绍在如何在 express 中集成 Socket.IO Socket.IO 算是 WebSocket 的一个超集,进行了一些封装和拓展。 创建一个 express.js 项目(本文基于evp-express-cli) 安装socket.io.js: 正常的项目都是分层的,为了避免循环依赖,本文采用代理类构造单例的方式来创建websocket服务器。 wsPro

    2024年02月13日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包