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

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 本文着重介绍了微服务架构的某些细节,微服务其实也适用于Node.js应用程序。本文还介绍了如何利用容器和编排来实现Node.js的微服务化。

前言
本文着重介绍了微服务架构的某些细节,微服务其实也适用于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的事件循环如何:
11

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

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

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

这时容器最大的好处是你可以通过启动更多容器并在集群周围进行调度来扩展服务和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系统的全生命周期的开发、测试、运维及发布流程中,致力于为多个领域企业向“互联网+”转型提供针对互联网化、私有云管理平台、大数据业务基础架构的平台服务,帮助企业级客户降低成本、提升效率、简化运维及产品部署,并提升系统的可靠性和安全性。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
8天前
|
运维 Kubernetes Docker
利用Docker和Kubernetes构建微服务架构
利用Docker和Kubernetes构建微服务架构
|
6天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
6天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
6天前
|
安全 持续交付 Docker
微服务架构和 Docker 容器化部署的优点是什么?
微服务架构和 Docker 容器化部署的优点是什么?
|
7天前
|
存储 监控 Docker
探索微服务架构下的容器化部署
本文旨在深入探讨微服务架构下容器化部署的关键技术与实践,通过分析Docker容器技术如何促进微服务的灵活部署和高效管理,揭示其在现代软件开发中的重要性。文章将重点讨论容器化技术的优势、面临的挑战以及最佳实践策略,为读者提供一套完整的理论与实践相结合的指导方案。
|
11天前
|
JavaScript 前端开发
利用事件循环提高 JavaScript 程序的性能
本文介绍了事件循环在JavaScript中的工作原理,以及如何通过合理利用事件循环来优化程序性能,包括异步操作、任务优先级和避免阻塞等技巧。
|
14天前
|
JavaScript 持续交付 Docker
解锁新技能:Docker容器化部署在微服务架构中的应用
【10月更文挑战第29天】在数字化转型中,微服务架构因灵活性和可扩展性成为企业首选。Docker容器化技术为微服务的部署和管理带来革命性变化。本文探讨Docker在微服务架构中的应用,包括隔离性、可移植性、扩展性、版本控制等方面,并提供代码示例。
52 1
|
22天前
|
Kubernetes 负载均衡 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
本文介绍了Docker和Kubernetes在构建高效微服务架构中的应用,涵盖基本概念、在微服务架构中的作用及其实现方法。通过具体实例,如用户服务、商品服务和订单服务,展示了如何利用Docker和Kubernetes实现服务的打包、部署、扩展及管理,确保微服务架构的稳定性和可靠性。
75 7
|
18天前
|
Kubernetes 关系型数据库 MySQL
Kubernetes入门:搭建高可用微服务架构
【10月更文挑战第25天】在快速发展的云计算时代,微服务架构因其灵活性和可扩展性备受青睐。本文通过一个案例分析,展示了如何使用Kubernetes将传统Java Web应用迁移到Kubernetes平台并改造成微服务架构。通过定义Kubernetes服务、创建MySQL的Deployment/RC、改造Web应用以及部署Web应用,最终实现了高可用的微服务架构。Kubernetes不仅提供了服务发现和负载均衡的能力,还通过各种资源管理工具,提升了系统的可扩展性和容错性。
53 3
|
21天前
|
Kubernetes 负载均衡 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
【10月更文挑战第22天】随着云计算和容器技术的快速发展,微服务架构逐渐成为现代企业级应用的首选架构。微服务架构将一个大型应用程序拆分为多个小型、独立的服务,每个服务负责完成一个特定的功能。这种架构具有灵活性、可扩展性和易于维护的特点。在构建微服务架构时,Docker和Kubernetes是两个不可或缺的工具,它们可以完美搭档,为微服务架构提供高效的支持。本文将从三个方面探讨Docker和Kubernetes在构建高效微服务架构中的应用:一是Docker和Kubernetes的基本概念;二是它们在微服务架构中的作用;三是通过实例讲解如何使用Docker和Kubernetes构建微服务架构。
55 6