sysMaster: 全新1号进程实现方案,秒级自愈,保障系统全天在线

news2024/11/26 21:48:11

认识 1 号进程和 sysMaster

在 Linux 操作系统中,1 号进程是 init 进程,它是所有其他进程的祖先进程。init 进程是系统启动时第一个被创建的进程,它负责启动和管理其他所有进程,并在系统关机时关闭它们。在现代 Linux 系统中,init 进程已经被 systemd 进程所取代,但是 1 号进程的概念仍然存在。它的最小功能包括系统启动和回收僵尸进程。

「sysMaster」 是 openEuler 针对不同场景下 Linux 系统初始化和服务管理面临的问题和特点进行总结和思考后的一种改进和探索,旨在改进传统的 init 守护进程,提供统一的系统初始化和服务管理解决方案,支持嵌入式、服务器和云场景下的进程、容器和虚拟机管理。使用 rust 语言编码,引入故障监测和秒级自愈等多种技术手段,从而提升 OS 的稳定性和业务的可用度。

如下 sysMaster 系统架构图所示,主要包含三个方面的内容:

  • sysmaster-init:提供系统初始化/僵尸进程回收/监控保活等功能,功能极简,特别是可单独应用于嵌入式场景。
  • sysmaster-core:提供服务单元的生命周期管理等核心功能,支持热重启/热升级/秒级自愈等能力,保障业务 24 小时在线。
  • sysmaster-extends:提供系统关键功能的组件集合(如设备管理 devMaster,总线通信 busMaster,统一代理 uniMaster 等),各组件可单独使用,在不同场景下灵活选用。

图片

为什么开发 sysMaster

常见的初始化系统有 sysvinit、Upstart 和 systemd,它们各有特点,如下表所示:

Init 软件说明启动管理进程回收服务管理并行启动设备管理资源控制日志管理
sysvinit早期版本使用的初始化进程工具,逐渐淡出舞台-----
UpstartDebian、Ubuntu 等系统使用的 initdaemon---
systemd提高系统的启动速度,相比传统的 System V 是一大革新,已被大多数 Linux 发行版所使用。

尽管 systemd 在启动速度和功能方面有很大的改进,但其系统架构和实现越来越复杂,不符合 Keep It Simple 的原则,也不支持灵活组合,对于嵌入式和一些 IoT 设备等场景的支持不足。此外,systemd 每个版本引入的问题都不是一个收敛状态,并且近些年问题越来越多,这些问题会带来系统级别的宕机。这与 openEuler 面向边缘、嵌入式、服务器和云场景的愿景不符。

图片

在云化场景下,服务的管理对象由进程演变为虚拟机和容器。通过 OpenStack、Kubernetes 等平台结合节点上的 agent(如 kubelet、nova)进行管理。这些 agent 在节点上通过 Systemd 进行管理,并且也使用了 Systemd 提供的一些基础能力,如日志输出。对于 Node(VM、Host)内部的一些关键服务,如 Nginx,通过 Systemd 进行生命周期的管理。这些服务也是分布式的,当前出现问题时,由服务自行进行处理,无法像容器实例和虚拟机实例一样通过类似 Kubernetes、OpenStack 平台统一编排。

图片

现有的成熟初始化系统,如 systemd 和 Upstart,明确不支持嵌入式场景。其中最有名的 systemd,组件众多,功能不独立,依赖关系复杂,且资源占用较高,无法在嵌入式等场景很好的发挥优势。

sysMaster 应该聚焦什么

操作系统的初始化和服务管理是系统中非常重要的功能,随着场景和外部形式的变化,我们期望提供一套统一的系统初始化和服务管理框架,以消除现有问题并适应传统场景和云场景的需求。

我们的目标是:

  1. 消除现有初始化系统内存安全类问题,降低故障发生的可能性。
  2. 支持快速部署、升级和恢复,实现故障秒级恢复,对业务无感知。
  3. 极致轻量、灵活,能够满足嵌入、服务器和云等场景对资源开销的不同需求。

对于云场景节点内部的运行实例(如容器、虚拟机和进程),我们的目标是:

  1. 提供统一的实例生命周期管理接口,对接分布式管理框架(如 Kubernetes 和 OpenStack),屏蔽容器引擎和虚拟化管理平台的差异。
  2. 对于 VM 中的关键云化服务,能够复用当前云实例调度平台的能力,实现分布式管理。

sysMaster 采用多级拆分的 1+1+N 架构,确保每个组件专注于自己的职责,降低单组件的复杂性,确保组件架构简单,从而提升系统整体架构的扩展性和适应性,降低开发和维护成本。sysMaster 具有以下主要特点:

  1. 轻量化调度,支持更快的启动速度。sysMaster-core 中的 job 调度器和事件驱动器负责相关启动任务的处理。job 调度器提供轻量化、并行化的调度能力,并支持事务能力,保障服务启动的原子性。事件驱动器接受外部事件并驱动 job 调度器完成事件相关任务,如管理控制命令和设备发现等。
  2. 插件架构,支持服务类型灵活拓展。Unit 管理器提供插件化机制,支持动态加载各种服务类型,实现按需加载,支持服务的灵活扩展。
  3. 状态外置,多级还原点;语言级原生安全,支撑极致可靠。可靠性框架支持状态外置、多级 checkpoint 支持自定义,并实现资源对账、数据自恢复,实现故障的快速自恢复,同时具有热升级能力,实现不中断业务的版本快速升级能力。sysMaster 选择内存安全的 Rust 语言进行开发,原生消除内存安全类问题,提高 1 号进程自身的鲁棒性,提升系统整体的可靠性。
  4. 迁移工具支持 Systemd 到 sysMaster 无缝迁移。提供生态迁移工具,支持客户和开发者从 Systemd 快速切换到 sysMaster,实现无缝切换和迁移。
  5. sysMaster 吸收现有云化场景的一些特点,结合容器引擎(iSulad)和 Qemu,提供统一的容器实例和虚拟化实例的管理接口,并将由 sysMaster 管理的一些关键应用实例的管理统一对接到 Kubernetes 和 OpenStack 等分布式调度框架。这样,sysMaster 可以提供单节点运行对象生命周期管理的统一接口。
  6. 原生支持鸿蒙和 Linux 内核。sysMaster 定位为支持嵌入式、服务器和云等全场景的支持,当前原生支持鸿蒙微内核和 Linux 内核,为微内核和宏内核提供统一的服务管理框架。

sysMaster 当前进展及规划

自 2022 年 9 月份发布首个技术验证版本以来,最新版的 sysMaster 引入了故障恢复机制,当 sysMaster 服务管理功能异常导致进程崩溃时,可以秒级恢复,而不是重启整个系统来恢复故障。同时,sysMaster 已完成 init 全部功能以及 core 主体功能,打通了系统容器/虚拟机的场景。

图片

今年,sysMaster 将重点发力快速启动方面的特性,以提升 sysMaster 在启动速度和运行底噪方面的优势。这将包括对 sysMaster-core 中的 job 调度器和事件驱动器进行优化,以提高启动速度和响应速度。此外,sysMaster 还将重点开发设备管理及其他必要组件,以满足虚机场景的需求。设备管理(devMaster)是 sysMaster 的一个重要组件,它可以帮助用户管理和监控系统中的硬件设备,包括网络接口、磁盘、CPU 等。这将有助于提高系统的可靠性和稳定性。未来,sysMaster 将继续探索在云场景下的应用,以满足不断变化的需求。sysMaster 将继续优化其架构和性能,以提高系统的可扩展性和适应性。同时,sysMaster 还将继续开发新的功能和组件,以满足不同场景下的需求,如容器化、虚拟化、边缘计算等。sysMaster 将不断努力,成为一个强大的系统管理框架,为用户提供更好的使用体验和更高的效率。

图片

加入我们

sysMaster 项目地址:https://gitee.com/openeuler/sysmaster

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/513429.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数组--part 4--长度最小的子数组(力扣299/904/76)

文章目录 算法基本思想leetcode 209 长度最小的子数组leetcode 904 水果成篮leetcode 76 最小覆盖子串 算法基本思想 首先对于滑动窗口,题目可以先去看看leetcode 209 进行相关的了解后,再来书写代码。 首先我们的第一想法肯定就是暴力解法&#xff1a…

html实现汉诺塔小游戏

文章目录 1.设计来源汉诺塔由来1.1 主界面1.2 游戏规则1.3 游戏完成界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/130606736 html实现汉诺塔小游戏源码 汉诺塔&…

数据结构-链表(详解)

前言:内容包括:链表的分类,无头单向非循环链表的增删查改的实现,带头双向循环链表的增删查改的实现 目录 链表的分类 1. 单向或者双向 ​编辑 2. 带头或者不带头 3. 循环或者非循环 无头单向非循环链表: ​编辑…

造梦日记 Printidea 用户手册

*Hi 造梦日记* 欢迎来到造梦日记的空间~ 造梦日记Printidea是一款基于AI算法、输入文字或图片即可生成高质量图片的工具,由西湖大学深度学习实验室和西湖心辰联合出品,超强算力,0.8秒出图,目前支持微信小程序、网页端…

边缘计算盒子的特点?边缘计算盒子适用于什么场景

边缘计算盒子(Edge Computing Box)是一种用于边缘计算的硬件设备,它通常是一个小型的计算设备,具备一定的计算能力和存储资源,并且能够连接到网络。边缘计算盒子的主要目的是在物联网(IoT)和分布…

续ShaderEditor、Inspector之后又一成功爆品,2周260+单!

01 前言 大家好,我是98K!五一前,我上架 Cocos Store 的『高性能割草框架』增加 Cocos Creator 2.4.x 引擎,已经支持的老铁可免费更新! 后续的更新计划是:完善2D游戏案例、增加3D案例、支持RVO和群聚&#…

Android WebView 长按弹出的文本选择器如何监听滑动和如何弹出完全自定义的菜单栏

在这次改版中,h5小伙伴与我沟通说要把长按选择改用成原生的拉选框,之前我也没搞过呀,开始研究吧。 怎么研究呀,当然是百度一下了。 百度了一天总结如下: 好多文章都是告诉你如何在系统的基础上来修改自己的文字和点…

vue2 框架运行原理剖析系列(二)之 组件挂载$mount神秘之旅!!!

一、vue组件挂载 1.1 上一篇文章中,介绍到组件执行 mountComponent 函数,本文对此展开详细的讲解。 1.2 调用改方法的位置在于entry-runtime-with-compiler.js 的Vue.prototype.$mount,具体代码如下: 其中, &#xff…

【图像融合】Dif-Fusion:基于扩散模型的红外/可见图像融合方法

文章目录 摘要一、前言二、相关工作1.红外线和可见光的图像融合2.扩散模型(可见博主之前的博客) 三、方法1.红外线和可见光图像的联合扩散2*.多通道扩散特征的融合 四、实验1.实验设置2.融合性能分析(效果展示)3.泛化实验 总结 摘…

通知短信 API 技术细节以及发送流程机制原理解析

引言 短信是一种简单、直接、高效的通信方式,被广泛应用于各个领域。在移动互联网时代,短信成为了客户服务、政府通知、公共服务等方面的重要工具。为了更好地利用短信这种通信方式,通知短信 API应运而生。短信API可以帮助企业、政府和应用程…

RK3588旗舰32T人工智能多网口边缘智能网关交换机

32T边缘智能网关发布,助力多行业数字化升级,运维降本增效,搭载RK3588旗舰芯 搭载瑞芯微RK3588芯片的边缘智能网关XM-RK3588,算力可扩展至32T,适用于电力能源、智慧交通、智慧城市、智慧安防、智慧医疗、工业互联网等领…

前端的加密和解密,crypto-js的应用,AES / RSA / md5

每日鸡汤:每个你想学习的瞬间,都是未来你的向自己求救 内容预警*****新手内容,自己学习总结用****大佬请绕道 之前看https原理,看到对称加密和非对称加密,各种加密方法,看得云里雾里,即便是总结…

报错main.py: error: unrecognized arguments: stack_size 4 1001,770,123

运行从GitHub上面下载下来的代码时,按照作者提供的输入命令输入后报错: main.py: error: unrecognized arguments: stack_size 4 1001,770,123 将报错的部分在网上百度,找到部分方法,得出理解:输入的命令是出错的&am…

【RS专题】怎么知道你遇到的是rs风控

本文属于技术分享、如有侵权可联系本人下架 最简单的方法就是查看cookie,在控制台输入【document.cookie】 如果出现如上图中有【xxxxxxT】或者【xxxxxxP】的,并且它的值都为英文数字和下滑线加点,那么基本可以确定这个网站用了rs反爬 什么是rs反爬,下面抄一段内容 瑞数动…

【瑞数RS专题】首层代码分析,和获取eval层代码,cookie反爬虫详解

如有侵权、联系本人下架 以下面两个网站为例 1.aHR0cDovL3d3dy5mYW5nZGkuY29tLmNuL25ld19ob3VzZS9uZXdfaG91c2VfZGV0YWlsLmh0bWw= 2.aHR0cHM6Ly93d3cubm1wYS5nb3YuY24veWFvd2VuL3lwamd5dy9pbmRleC5odG1s 首先明确一下目标,我们要先获取网页200的源代码,RS5代第一次响应为…

unittest自动化测试框架讲解以及实战

为什么要学习unittest 按照测试阶段来划分,可以将测试分为单元测试、集成测试、系统测试和验收测试。单元测试是指对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作,通常指函数或者类,一般是开发完成的。 单元…

软件架构:软件架构设计的三个维度

架构设计是一个非常大的话题,不管写几篇文章,接触到的始终只是冰山一角,更多的是实践中去体会。这篇文章主要介绍面向对象OO、面向方面AOP和面向服务SOA这三个要素在架构设计中的位置与作用。   架构设计有三个维度,或者说是我们…

文案改写神器软件-文案改编神器

文案改写神器软件 文案改写神器软件通常致力于通过人工智能技术将一篇已有文案进行改写和改编,以达到复用或优化的目的。以下是文案改写神器软件通常可以做的事情: 改写原文:文案改写神器可以通过自定义规则、语法分析和文本相似性匹配等功能…

设计模式之【组合模式】,树形结构的完美解决方案

文章目录 一、什么是组合模式1、组合模式三大角色2、组合模式应用场景3、组合模式注意事项和细节 二、透明组合模式1、学院院系案例2、透明组合模式总结 三、安全组合模式1、linux目录系统案例2、安全组合模式总结 四、源码中使用的组合模式1、HashMap2、ArrayList3、MyBatis 一…

跨平台应用开发进阶(六十一):uni-app 跨平台技术开发框架可行性调研

文章目录 一、流程类二、研发类(uni-app框架)三、心得分享(研发踩坑&uni-app踩坑)四、拓展阅读 一、流程类 IOS和安卓企业开发者账户申请流程(申请渠道、需要提供的相关证明、审核时间等)。 答:uni-app使用HBuliderX作为开发IDE,支持邮箱、密码方式注册&#x…