如何利用Kubernetes编排实现Node.js程序的微服务化

可视化流程编排(Bpmn.js)介绍及实践 目前无界山工单平台对接40+流程,实现IT类工单、消保审核流程的上线运行、同时与各事业部就健康险台账流程、无界山2.0理赔流程、数生理赔特殊案件审核等相关保险业务流程进行了对接。 阅读详情

前言
本文着重介绍了微服务架构的某些细节,微服务其实也适用于Node.js应用程序。本文还介绍了如何利用容器和编排来实现Node.js的微服务化。

如今,大家都在谈论调度,微服务,Docker,以及Kubernetes如何改变编排领域。那么,在生产中部署Node.js应用程序意味着什么?有哪些是值得关注的?

Node.js微服务化

为了理解为什么每个人都想谈论微服务,我们需要了解应用程序开发的前身——The Monolith。

单体应用
如果你的应用程序是单体应用形式的,那么系统的所有代码都在一个代码库中运行,并生成一个入口。一个简单的npm start就可以启动应用程序,Monolith的核心是保持一切在一起运行。

它仍然是应用程序敏捷开发的好选择,但这样做的缺点是当你想要经常发布时,你将不得不重新部署整体,而无法通过仅更换组件来完成部署的更新。

微服务
开发应用程序的另一种方法是将你的代码库分解成较小的块。每个块都是一个服务。所有这些服务将一起为最终用户提供与单块相同的功能。

启动应用程序不仅仅是简单的npm start,你需要独立启动每个服务。当你将你的整体拆分成更小的块或你的应用程序是由不同的服务组成,这就是微服务架构。

至于上行方式,微服务器允许你经常发布,并仅重新部署系统的更改部分。但还存在一个问题,就是如何编排。有效的编排可以使整个流程变得完整而高效。

非单体应用的编排问题
如果你的Node.js应用程序正在使用非单体方法,将多个服务组合到单个应用程序中,则需要一种编排方式。Docker的优势就在这里凸显了!使用容器,你可以隔离每个进程(= service = npm start)并给每个进程自己的事件循环。

Node上的事件循环
所有的Magic 节点都发生在Node的事件循环中。Node正在使用事件驱动的范例来执行事件循环中的所有Magic节点。

在计算机编程中,事件驱动编程是一种编程范例,程序的流程由诸如用户动作,传感器输出或来自其他程序/线程的消息等事件决定。事件驱动的编程是用于图形用户界面和其他应用程序中的主要范例,其中以执行响应输入的某些动作为中心。

一旦检测到事件,就有一个中心机制来侦听事件并调用一个回调函数。这是Node的事件循环的基本原理。

这里有一些伪代码来演示Node的事件循环如何:
这里写图片描述

Node的事件循环是单线程事件循环。这可能会导致性能问题。例如,当你处于负载状态或负载大量CPU工作时,如何使我们的Node应用程序更具性能?这时候就需要微服务和容器来进行抢救了!

集中化每个服务
在生产中运行微服务的第一步是集中化每个服务。以此Express.JS为例:

这里写图片描述

要在一个孤立的过程中运行它,我们需要一个Dockerfile来容纳程序:

这里写图片描述
这时容器最大的好处是你可以通过启动更多容器并在集群周围进行调度来扩展服务和Node的事件循环的方式。例如,如果你的API部分负载较重,则可以扩展该部分并更有效地利用资源。如果压力正常,你可以缩小。

解决方案
正如我们之前所说的那样,将整体拆分成面向服务的体系结构的好处是,每个服务都可以有一个隔离的事件循环。因为每个Node进程都在容器中运行隔离!

当你希望在IT架构的改造中成功使用Node.js,以下四个阶段可以为你提供思路:

**编码你的服务并提交更改;
建立并测试你的服务;
配置你的基础架构;
在生产中部署,运行和维护你的服务。**

原文链接:
https://dzone.com/articles/kubernetes-orchestrate-your-nodejs-microservices

推荐阅读:
如何拆分你的微服务架构?
你不得不知的推进DevOps实践的四大趋势
为什么微软应该通过收购Docker来与Kubernetes竞争

关于Ghostcloud
Ghostcloud(中文名:精灵云)坐落于成都天府软件园,是成都高新区重点扶持企业,国内首批从事容器虚拟化研发的企业,是西南地区唯一一家基于Docker的云计算服务商,为企业级行业客户提供针对互联网化、私有云管理平台、大数据业务基础架构的平台服务。
Ghostcloud因容器技术而生,以最新容器技术Docker为基础,为适应不同行业客户需求,全自主研发了一套调度引擎框架Newben,且全方位适配Kubernetes主流开源调度引擎,也是国内率先实现双调度引擎的企业,是一流的企业级容器云服务专家。Ghostcloud推出了企业级容器云PaaS/CaaS平台,命名为EcOS(EnterpriseContainer Operation System)。Ghostcloud将EcOS平台与微服务/DevOps相融合,运用至企业IT系统的全生命周期的开发、测试、运维及发布流程中,致力于为多个领域企业向“互联网+”转型提供针对互联网化、私有云管理平台、大数据业务基础架构的平台服务,帮助企业级客户降低成本、提升效率、简化运维及产品部署,并提升系统的可靠性和安全性。

Node.js后端服务容器化:从Docker到Kubernetes 我们的目的是教会大家如何把Node.js后端服务进行容器化处理,先是用Docker把服务打包成一个个独立的容器,然后用Kubernetes对这些容器进行管理和编排。范围涵盖了从Docker的基本操作到Kubernetes的高级应用,让你对整个容器化流程有全面的了解。我们会先介绍一些核心概念,包括Docker和Kubernetes是什么,它们之间有什么关系。然后讲解核心算法原理和具体操作步骤,包括如何编写Dockerfile和Kubernetes的配置文件。 阅读详情

相关推荐

探索 Node.js 后端开发的容器编排与管理

本文旨在为 Node.js 开发者提供全面的容器编排与管理指南,涵盖从基础概念到高级实践的全方位内容。容器化 Node.js 应用的最佳实践Docker 和 Kubernetes 的核心原理与集成生产环境中的部署策略和优化技巧监控、日志和安全方面的考虑介绍容器技术和 Node.js 的关系深入探讨核心概念和架构详细解析算法和数学模型通过实战项目演示完整流程讨论实际应用场景和工具推荐总结未来趋势和挑战容器(Container)

架构师的AI之路,分享AI应用开发架构的学习与实践。 787

Kubernetes 部署 node.js项目(半自动)

说明 全自动请看我的另一个文章 半自动:node.js项目已经编译为dist 手动制作镜像,可以将dist目录提交到git,通过kubesphere流水线制作 nodeport 和 ingress 选择一个即可 1.在dist目录下创建Dockerfile文件 FROM nginx:alpine # 目录不用改变,nginx镜像默认root目录就是下面的 COPY . /usr/share/nginx/html EXPOSE 80 2.制作镜像并推送到镜像仓库 docker login ${仓库地

null 1605

kubernetes-client:用于Node.js的简化Kubernetes API客户端

kubernetes客户端 适用于Node.js的简化的客户端。 安装 通过npm安装: npm i kubernetes-client --save 初始化中 kubernetes-client根据Swagger / OpenAPI规范在运行时生成Kubernetes API客户端。 您可以使用集群的kubeconfig文件和该集群的API规范生成客户端。 要创建客户端所需的配置,您可以: 让kubernetes-client自动配置,方法是先尝试KUBECONFIG环境变量,然后再尝试~/.kube/config ,再~/.kube/config集群内服务帐户,最后尝试使用默认代理配置: const client = new Client ( { version : '1.13' } ) 提供您自己的文件路径: const { KubeConfig } = require ( 'kubernetes-client' ) const kubeconfig = new KubeConfig ( ) kubeconfig . loadFromFile ( '~/some/p

在kubernetes中部署完整的Node js应用程序

First, you need to have Docker installed on your computer so that it will make this process easy for you. Docker and Kubernetes are two different things but you need Docker as a container runtime for ...

weixin_26714375的博客 1663

k8s-nodejs:显示如何将Node.js服务器应用程序部署到Kubernetes集群的示例

这是有关如何在Kubernetes集群上运行Node.js服务器的简单演示。 Node.js服务器代码为car.js。 给定其车辆识别码(vin),它会返回一些属性,例如车型,制造商和年份。 服务器在端口3000上运行。 运行演示的步骤: 首轮: kubectl create -f deployment.yaml 让豆荚启动并运行: kubectl get pods -l app=nodeapp 然后运行: kubectl create -f service.yaml 该服务在端口6000上运行 检索服务IP地址和端口: export SERVICE_IP=$(kubectl get service nodeapp-service -o go-template='{{.spec.clusterIP}}') export SERVICE_PORT=$(kubectl get ser

Node.js-使用nodejs的微服务示例

使用nodejs的微服务示例

Kubernetes(k8s)容器编排数据存储

目录 1 什么是数据卷 1.1 存储卷概述 1.2 存储卷类型 1.2.1 非持久性存储 1.2.2 网络连接性存储 1.2.3 分布式存储 1.2.4 云端存储 2 emptydir 2.1 使用场景 2.2 使用示例 2.2.1 案例说明 2.2.2 创建资源清单 2.2.3 创建deploy 2.2.4 访问测试 2.3 测试存储卷 2.3.1 登录sidecar 2.3.2 登录nginx 2.4 测试文件持久性 2.4.1 登录sidecar 2.4.2 访问测试 2.4.3 删除Pod

赵广陆 1296

Unable to negotiate with XXXX port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss

打开ssh_config此文件,滑动到最下面,新增自己git主机地址(这里我直接默认*)执行命令 git clone git@xxxxxxxxxxxxx.git。代码仓库已经添加了ssh公钥之后,克隆代码到本地时就报了这个问题。首先是找到git安装目录(根据自己安装时选项,找到这个目录)再进入ssh目录,找到 ssh_config 配置文件。配置完成后,保存配置文件后再次去clone代码。直接复制下面这一段到文件中最底部位置即可。然后进入 etc目录,找到ssh目录。终于可以克隆下来了。

萌兔兔MMQ!! 3359

Kubernetes (K8s) 解读:微服务与容器编排的未来

Kubernetes (K8s) 为微服务和容器编排的未来铺设了坚实的基石。无论你是开发者、运维工程师还是技术爱好者,深入理解和掌握K8s都是非常有价值的。

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 1387

最终篇——SWAT模型的建立

同理,Soil Data也是同样的方法导入,在Soil Database Options的选项中,选择UserSiol,用同样的方法导入土壤类型,进行重分类。打开窗口后,只定义HRU Thresholdes,其余两个不用设置,设定各数据单元的计算率,这里的10%的意思是计算精度,即分成级HRU计算单元太小,小于平均计算单元的10%,我们就不对这HRU单元进行计算(也就是说太破碎的计算单元不进行计算),若选择0%意味着全部进行计算,需要耗费大量的内存和时间,对计算机要求较高,不建议。

m0_72556434的博客 5623

科普:Frenet坐标

理想情况下,描述这种常见驾驶行为在数学上应该很容易。一种方法是使用新的坐标系。现在,而不是放下一个正常的笛卡尔网格,我们做一些事情,就像你看到下面…Frenet Coordinates是一种以比传统x,y笛卡尔坐标更直观的方式表示道路位置的方式。如果我们想要方程式来描述这个动作,那就不容易了!想象一下像下面这样一条弯曲的道路,笛卡尔坐标系就位于它的上面…使用这些笛卡尔坐标,我们可以尝试描述车辆通常在路上行驶的路径…那么在Frenet坐标系下呈现的典型轨迹是什么样的?在这里,我们定义了一个新的坐标系统。

OceanStar的博客 1万+

Dockerode与Kubernetes深度集成:Node.js容器编排高效管理实用技巧

在当今云原生应用开发领域,Dockerode作为Node.js与Docker Remote API交互的核心模块,为开发者提供了强大的容器管理能力。通过与Kubernetes生态系统的深度集成,Dockerode能够构建完整的容器编排解决方案,实现从单机容器管理到集群级编排的无缝过渡。 ## 核心价值探索:为什么选择Dockerode进行容器编排 让我们深入探讨Dockerode在容器编排领域

gitblog_01068的博客 768

国产麒麟系统PXE安装-UEFI引导

注意: 适用uefi引导 适用x86_64架构 一键部署脚本扣我 1.上传ISO到PXE服务器,拷贝ISO文件 # mkdir /kylin_iso # mount -o loop Kylin-Server-10-SP1-Release-Build04-20200711-x86_64.iso /kylin_iso/ 2.配置http,获取安装源 # yum -y install httpd # mkdir /var/www/html/{ks,kylin} # 注意一定是"/kylin_iso/

河静 5056

使用 K8S、Docker 测试和部署 Node.js 应用程序

作者:Joyce Lin编译:小君君(才云)技术校对:星空下的文仔(才云)、bot(才云)编者按:如今,随着云应用程序复杂性的增加,很多研发团队开始将应用程序部署为分布式微服务架构,以此来加快软件交付。工程师们也在一直寻找简化和自动化持续部署代码的方法。本文将从容器的含义出发,使用一个简单的 Node.js 应用程序阐述如何使用 Docker 和 Kubernetes 部署可伸缩的 Web 应用程...

cpongo011702 2198

宝塔部署若依前端出现502解决方法

若依系统是一个基于Java语言的开源项目,旨在帮助开发者减少开发时间,特别适用于需要快速开发出一套具有用户管理、菜单管理、权限管理、定时任务、日志管理等功能的简单系统。系统分为前后端分离、分布式等架构前后端分离部署教程然而通过宝塔来部署若依系统会遇见一些问题,特此在这里记录一下。

m0_74823683的博客 776

基于PWM的汽车仪表步进电机微步驱动优化实践

本文深入探讨了基于PWM的微步驱动技术,用于优化汽车仪表步进电机的运行性能。通过将传统的分步驱动升级为PWM微步细分驱动,利用正弦/余弦查表法合成旋转磁场,有效消除了指针抖动与噪声,实现了指针的平滑、精准运动。文章以STM32和VID2905电机为例,提供了详细的硬件连接、代码实现及高级优化技巧,为提升汽车仪表体验提供了实用方案。

weixin_29169505的博客 514

多核CPU利用:Node.js集群化部署方案

你是否曾遇到Node.js应用在多核服务器上CPU利用率不足25%的尴尬情况?是否为单线程阻塞导致的性能瓶颈而头疼?本文将系统讲解从基础集群模块到企业级容器编排的全栈解决方案,帮你彻底释放服务器算力。读完本文你将掌握:4种集群化部署架构的选型指南、PM2与Nginx性能对比表、从零构建K8s自动扩缩容集群的完整步骤,以及10个生产环境调优技巧。 ## 一、Node.js单线程困境与多核机遇 #...

gitblog_00697的博客 923

【100%通过率】华为OD机试真题 Python 实现【字符串重新排列】【2022.11 Q4新题】

给定一个字符串s,s包括以空格分隔的若干个单词,请对s进行如下处理后输出: 1、单词内部调整:对每个单词字母重新按字典序排序 2、单词间顺序调整: 1)统计每个单词出现的次数,并按次数降序排列 2)次数相同,按单词长度升序排列 3)次数和单词长度均相同,按字典升序排列 请输出处理后的字符串,每个单词以一个空格分隔。

MISAYAONE的博客 7982

Node.js(十四) 微服务架构

Node.js微服务架构摘要: 微服务架构将应用拆分为独立部署的小型服务,通过轻量级通信交互。Node.js因其异步I/O、高并发和轻量特性,非常适合构建微服务,具备高性能、开发效率高等优势。典型实现包括服务拆分、HTTP/REST/gRPC通信、服务注册发现、API网关等。常用技术栈有Express/Koa、Consul、RabbitMQ、Docker等。架构示例展示Express微服务与API网关实现。优点包括易扩展、故障隔离,但存在系统复杂度高、运维难度大等挑战。建议先掌握Node基础,再逐步实践微服

onlymscn的博客 817

基于STM32、HAL库的SC16IS752IPW总线转UART驱动程序设计

/ FIFO空间不足。// 设置LCR寄存器的DLAB位为1以访问DLL/DLH。// 设置LCR寄存器,先访问DLL/DLH。// 设置LCR寄存器(不包含DLAB位)

corlin6688的博客 817

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

一个购物车看懂 11 个微服务:Online Boutique 微服务 Kubernetes 实战指南

Online Boutique 是 Google 出品的云原生微服务演示应用。它用 11 个微服务,通过 gRPC 打通了浏览、加购、下单、支付、发货的完整购物流程,一套 Kubernetes 清单就能部署上集群。如果你正在学 K8s,或者想找个能真正跑起来的 gRPC 微服务演示练手,这个项目的落地程度很高。 [![Online Boutique 微服务 Kubernetes 商城界面截图](

gitblog_00158的博客 354

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

容器编排定时任务新范式:node-cron与Kubernetes无缝集成实战指南

在容器化应用的日常运维中,定时任务(Cron Job)的稳定性与灵活性直接影响业务连续性。传统的Linux Cron服务存在容器环境下的调度盲区,而Kubernetes原生CronJob资源又面临配置复杂、调试困难等问题。本文将系统讲解如何通过**node-cron**实现容器内轻量级定时任务管理,并提供与Kubernetes平台的集成方案,帮助运维团队构建高可靠的分布式任务调度系统。 ## 技...

gitblog_00341的博客 1089

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Online Boutique 微服务演示:用 11 个多语言微服务理解 gRPC 与 Kubernetes 部署

想系统练手微服务、云原生部署或 gRPC,却常找不到“既不太简单、也不太难”的示例。Online Boutique 就是一个这样的云原生微服务演示应用:它模拟浏览商品、加入购物车、下单支付的完整购物流程,可以在任意 Kubernetes 集群上运行,源码和部署配置全部开放,适合作为学习微服务拆分、服务间通信和集群部署的实操对象。 [![Online Boutique 微服务架构图](https:

gitblog_00201的博客 444
上一篇: 你不得不知的推进DevOps实践的四大趋势
下一篇: 如何利用Kubernetes编排实现Node.js程序的微服务化
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值