当前位置: 首页 > news >正文

从需求角度介绍PasteSpider(K8S平替部署工具适合于任何开发语言)

        你是否被K8S的强大而吸引,我相信一部分人是被那复杂的配置和各种专业知识而劝退,应该还有一部分人是因为K8S太吃资源而放手!

        这里介绍一款平替工具PasteSpider,PasteSpider是一款使用c#编写的linux容器部署工具(使用PasteSpider和自己用啥语言开发没关系哈!),简单易上手(从0到一键发布30分钟学习足够了!)非常节省资源,支持Sqlite/Postgresql数据库,支持集群部署,以维护100个docker的container为例,PasteSpider本身消耗的内存大概在300MB(下图是273.4MB)左右!接下来我们将从需求角度介绍PasteSpider是怎么来的!

        我用java开发的,可以使用PasteSpider么?

        我用node开发的,能用PasteSpider部署我的项目么?

        我不开发,只是使用别人的镜像的,能用PasteSpider部署我的项目么?

        ... .. .

        使用PasteSpider部署你的项目,和你的项目本身的开发语言无关,只要满足以下条件即可

        1.你的项目是否需要发布到linux服务器上(因为目前PasteSpider还无法在windows服务器上运行)?

        2.你的项目是纯静态的么?比如html5,这种只要nginx路由一下就能访问的?这个也是可以的!

        3.你的项目通过Dockerfile后,可以打包到容器docker/podman里面运行么?

        只要是你的项目需要发布到linux上,是静态资源或者可以载入到docker/podman里面运行的就可以使用PasteSpider!

        以上是一台使用PasteSpider(myspider)管理的linux服务器上的容器运行情况图,NAME为xxxx_xx_xxx_xxxxxxxxxxx的容器为PasteSpider部署的!

部署现状

        从我的观察来看,目前市面上部署服务的,大概可以分3类,

1.使用强大工具部署的,比如使用K8S,K3S等,这类有一个通性那就是这些工具消耗的资源足够大,然后是上手有难度!

2.使用原始的方式部署,就是手打命令,或者从部署的文本或者history历史复制命令部署,主打一个冷静,安静,认真的工作小透明,一不小心就部署错了!

3.基于自己对部署步骤的理解,编写sh命令部署,其实和2是一样的,半手动而已!极大减少部署错误,但是不够自动,也对版本回滚等抓头抓脑!

        综上,大家迫切需要一款节省资源,又简单易上手的部署工具!PasteSpider绝对适合你!

运行原理

        PasteSpider的运行原理很简单,简单一句话就是程序化执行命令,用到的其他工具也就是我们常用的Nginx(作为路由,转发,代理用),docker/podman(作为容器管理用),PasteSpider没有K8S的各种POD等概念,遇到问题也不需要找特殊的资料,只要记住PasteSpider只是把部署的命令形成一条一条的命令,按序执行而已,所以遇到问题,你大可查看日志,然后找各自的资料!

图形操作

        PasteSpider使用图形界面,简单易上手,只要操作界面上的一些表单,即可完成项目,服务等的配置和部署工作!

        上图为PasteSpider管理端的主界面,可以看到大致板块和功能!

        上面是创建一个项目的服务的界面,可以看出都是图形输入的,简单易上手。

运行安全

        作为一个工具,辅助工具!必须不能寻宾夺主,提现在2个方面,

        1.占用的资源不能过多,目前很多流行的工具都是油老虎,动不动大几个GB的内存需求,服务器不要钱的啊???

        2.不能干扰主服务的运行,工具就要有工具的觉悟,不能因为工具嘎了就把客户的主服务也宕了,这不是瞎扯淡嘛!

        那么问题来了,服务器空闲的资源拿来干嘛用?空着不好么?空着应对流量高峰不好么?空着部署其他服务不好么?空着省点钱不行么?

        近几年也有很多新闻,由于工具的原因导致主服务宕机的,PasteSpider的运行作用只在于帮助部署和服务运行状态的数据获取(用于显示报表),如果PasteSpider挂了,其他运行的服务是不受影响的,主打的一个就是简单,干净,不牵扯!

        很多人部署后,跑起来就不管了,你咋知道你的代码有没有内存泄漏,死循环等?指望docker等的重启机制?这种问题往往在关键时候掉链子,所以及时发现问题及早处理才是正事!

概念清晰

        PasteSpider的部署设计主要是基于项目的维度,偏向于微服务(其实我更偏向于说是分布式),比如有一个商城系统,我们把她拆分成api,web,manage,h5,node,grpc等服务,这几个服务可以通过nginx的location配置串联起来,比如访问/api/的路径,就转发到api所在的服务,访问/node/就转发到Node的websocket实时通讯,以此类推!

项目

        一个项目可以包含多个服务,服务有多种类型(纯静态的,不需要构建镜像的,直接放宿主服务器的,比如web,或者是打包后的vue等),需要构建镜像,然后载入到容器中运行的(比如.net/java/php/go等编写的api),其他的组件非自己编写的代码,比如redis等。可以这么理解,一个或者多个服务有关联的,可以用一个项目来描述他们!

服务

        服务之间是隔离的,比如你可以把node交给张三开发,api交给李四开发,然后在PasteSpider的后台为张三或李四指定对应的权限,那么他们就只能发布自己的服务。可以简单理解为子项目为一个服务,比如开发接口的,开发前端的,开发管理端的。在nginx的配置中往往是一个location作为一个服务!

环境

        做开发的都知道,开发一般会有至少2个环境,测试环境和正式环境,PasteSpider为了解决不同环境的测试问题,也引入了环境的概念,环境是另外一个维度的划分,比如nginx的配置,会按照项目和环境进行分割,也可以通过key-value的配置,针对不同环境配置不一样的启动环境变量,比如SqlConnectionString等

路由Nginx

        部署的升级必须得平滑!为了解决发布的时候遇到的服务断开的问题,PasteSpider引入Nginx作为代理模块,从环境和项目维度出发,支持服务的平滑升级,发布的时候自动更新对应的nginx内容,内置模板案例,简单配置即可使用。(Nginx安装于宿主服务器)

仓库Registry

        PasteSpider支持使用docker的registry作为私有仓库使用,如果有多个服务器需要关联使用,则强烈建议启用仓库模式,这个仓库就是一个存放镜像的地方,这样只要一个地方打包,其他服务可以拉取这个镜像进行运行等。PasteSpider采用一键创建仓库。目前在centos7和ubuntu上都测试使用过。

预警

        服务器的运行状态,虽然说我们没必要实时知道,但是如果有情况,还是希望能够知晓的,比如某一个服务的CPU一直100%,比如服务器的硬盘占用过多了(由于硬盘爆满导致宕机的事件应该不少吧!),PasteSpidre里面使用2个维度进行了数据的监听,服务监控和服务器监控,可以让你在第一时间知晓危险,及时做出处理,避免不必要的宕机事件!

定时任务

        由于服务器的特性,很多时候我们往往不能随时升级,一般会选择在闲时进行升级,这个时候就需要定时任务了,定时任务支持任务串,也就是多个服务升级,按照一定顺序执行,比如我进行升级的顺序就是api-->grpc-->rabbit-->web,一般在凌晨进行,这个时候定时任务就帮上大忙了!

源码构建发布

        devops还是很火的,通过配置PasteSpider也支持这git/svn的源码发布,大致流程是通过git/svn的提交触发webhook通知PasteSpider进行对某一个服务执行拉取源码,编译,发布,构建,升级等一序列操作!

简单部署

        以上只是PasteSpider的常用功能,PasteSpider的部署也是很简单的,只需要把PasteSpider的文件下载后,根据命令构建PasteSpider的镜像,然后一行代码就可以启动自己的PasteSpider,几分钟就可以开启你的PasteSpider之行!

部署案例

        比如我们在编写api服务的代码,需要发布到服务器上,只要使用配套的PasteSpiderFile文件快稳准的完成部署工作!

        以.net的服务为例,在VS上发布到文件夹后(项目生成成功,不一定能够发布成功),按照上图的操作,选择对应的项目,然后按照顺序执行文件同步(采用差量升级,所以每次升级的文件数量很少的),最后点击构建升级,然后等待webhook的通知即可完成项目的发布工作!

  其他问题

nginx的路由,如何和container挂钩?

        针对这个问题,建议使用内部ip,能局域网的就不建议使用域名访问,项目中的服务支持是否开启监听端口模式(这种一般用于多服务器模式),配置路由的话,部署项目服务的时候会根据container的内部ip进行代理转发。

docker重启后,container的IP会变更,如何保证nginx的代理不出问题?

        针对这个问题,PasteSpider引入了网关,也就是一个项目一个网段,自定义网关的话,docker重启后,container的内部ip是不会变更的。

集群发布的时候,如何保证多个container不会占用同一个文件

        同一个服务,我们在部署的时候,设定的虚拟目录一般是一样的,其实可以通过key-value里面把环境变量打开,然后就可以在部署的时候往集群中的container写入不一样的变量,比如container1设定的目录可以为/spider/path1/,container2设定的目录可以为/spider/path2/,比如container的日志文件,我们就希望他们写入不同的文件中!

部署的时候,子任务执行失败,要如何处理?

        一个部署任务,其实是由多个子任务组合而成的,子任务有执行顺序,有错误等级,通过任务的详细,可以查看子任务的执行情况,点击子任务可以查看执行的语句和结果,通过这些信息进行排查!PasteSpider系统并没有自己的command,所有的command都是有他的来源的,比如构建镜像,就是docker build或者podman build等,搜索对应的知识库即可!

至于附件的下载等,群共享文件里面有最新版本的,欢迎使用更多问题可以加入QQ群(296245685)进行讨论!

相关文章:

从需求角度介绍PasteSpider(K8S平替部署工具适合于任何开发语言)

你是否被K8S的强大而吸引,我相信一部分人是被那复杂的配置和各种专业知识而劝退,应该还有一部分人是因为K8S太吃资源而放手! 这里介绍一款平替工具PasteSpider,PasteSpider是一款使用c#编写的linux容器部署工具(使用PasteSpider和…...

线性三角化

点的线性三角化 输入一堆的点 [ R w c , t w c , p u c ] [R_{wc},t_{wc},p_{uc}] [Rwc​,twc​,puc​]转化成空间的一系列射线 [ P w i , t w i ] , P w i t w c , t w i R w c p u c [P_{wi},t_{wi}],P_{wi}t_{wc},t_{wi}R_{wc}\times p_{uc} [Pwi​,twi​],Pwi​twc​…...

Golang os.Rename invalid cross-device link的原因

文章目录 背景运行环境 文件系统对比linux下的文件系统mac下的文件系统linux下的mv指令 golang的os.Rename源码os.Renamesyscall.Renamesyscall.RenameatSYS_RENAMEAT是什么 查看系统调用函数文档什么是man pageman page的用法user commandssystem calls renameat不支持跨挂载点…...

Flutter 中的 Badge 小部件:全面指南

Flutter 中的 Badge 小部件:全面指南 在移动应用设计中,徽章(Badge)是一种常见的UI元素,用于吸引用户注意并展示重要信息,如未读消息数量、新通知等。Flutter 通过各种第三方包提供了徽章小部件&#xff0…...

Java 多线程抢红包

问题需求 一个人在群里发了1个100元的红包,被分成了8个,群里有10个人一起来抢红包,有抢到的金额随机分配。 红包功能需要满足哪些具体规则呢? 1、被分的人数抢到的金额之和要等于红包金额,不能多也不能少。 2、每个人至少抢到1元…...

【PB案例学习笔记】-08 控件拖动实现

写在前面 这是PB案例学习笔记系列文章的第8篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gitee…...

读书笔记整理

1.对天才而言,任何努力都如做游戏般容易和有趣,兴趣是发展的原动力。从这个角度来看,通过普通人的劳动是无法创造天才的。 2.让孩子理解语法是很困难的。苦背不如练才是行之有效的办法。孩子们永远是故事迷,在教孩子们外语时&…...

uniapp蓝牙打印图片

前言 这是个蓝牙打印图片的功能,业务是打印界面固定的demo范围,这里通过html2canvas插件生成的图片base64,然后图片base64绘制到canvas中去后,获取canvas中的像素信息,然后对像素信息进行一个灰度值处理,灰…...

Ajax用法总结(包括原生Ajax、Jquery、Axois)

HTTP知识 HTTP(hypertext transport protocol)协议『超文本传输协议』,协议详细规定了浏览器和万维网服务器之间互相通信的规则。 请求报文 请求行: GET、POST /s?ieutf-8...(url的一长串参数) HTTP/1.1 请求头…...

LeetCode 题解:112. 路径总和,递归,JavaScript,详细注释

原题链接: 112. 路径总和 解题思路: 如果求根节点到叶子节点的路径上的节点值之和,假设共有3个节点,那么写成计算式是val1 val2 val3 sum那么将计算式转换就可以得到val3 sum - val1 - val2也就是说,问题可以从…...

Spring (15)Spring Boot的自动配置是如何工作的

Spring Boot的自动配置是通过条件注解(如ConditionalOnClass,ConditionalOnBean等)和EnableAutoConfiguration注解来实现的。这一机制主要是为了简化配置过程,让开发者在满足特定条件时自动配置Spring应用。接下来,我们…...

【机器学习】—机器学习和NLP预训练模型探索之旅

目录 一.预训练模型的基本概念 1.BERT模型 2 .GPT模型 二、预训练模型的应用 1.文本分类 使用BERT进行文本分类 2. 问答系统 使用BERT进行问答 三、预训练模型的优化 1.模型压缩 1.1 剪枝 权重剪枝 2.模型量化 2.1 定点量化 使用PyTorch进行定点量化 3. 知识蒸馏…...

54. UE5 RPG 增加伤害类型

在正常的RPG游戏中,都存在一个类别就是属性伤害,比如,在一个游戏里面有一个火属性的技能,它造成的伤害就是火属性类型的,并且它还有可能有附加伤害,比如给予目标一个灼烧效果,每秒造成多少的火属…...

llama3 微调教程之 llama factory 的 安装部署与模型微调过程,模型量化和gguf转换。

本文记录了从环境部署到微调模型、效果测试的全过程,以及遇到几个常见问题的解决办法,亲测可用(The installed version of bitsandbytes was compiled without GPU support. NotImplementedError: Architecture ‘LlamaForCausalLM’ not sup…...

C++三剑客之std::any(二) : 源码剖析

目录 1.引言 2.std::any的存储分析 3._Any_big_RTTI与_Any_small_RTTI 4.std::any的构造函数 4.1.从std::any构造 4.2.可变参数模板构造函数 4.3.赋值构造与emplace函数 5.reset函数 6._Cast函数 7.make_any模版函数 8.std::any_cast函数 9.总结 1.引言 C三剑客之s…...

【C语言】8.C语言操作符详解(2)

文章目录 6.单⽬操作符7.逗号表达式8.下标访问[]、函数调⽤()8.1 [ ] 下标引⽤操作符8.2 函数调⽤操作符 9.结构成员访问操作符9.1 结构体9.1.1 结构的声明9.1.2 结构体变量的定义和初始化 9.2 结构成员访问操作符9.2.1 结构体成员的直接访问9.2.2 结构体成员的间接访问 6.单⽬…...

vivado 物理约束KEEP_HIERARCHY

KEEP_HIERARCHY Applied To Cells Constraint Values • TRUE • FALSE • YES • NO UCF Example INST u1 KEEP_HIERARCHY TRUE; XDC Example set_property DONT_TOUCH true [get_cells u1] IOB Applied To Cells Constraint Values IOB_XnYn UCF Examp…...

Linux 三十六章

​​​​​​​ 🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C,linux 🔥座右铭:“不要…...

ntsd用法+安装包

ntsd是一个强大的进程终止软件,除了少数系统进程之外一律杀掉 用法 1.ntsd -c q -p 进程的pid 2.ntsd -c q -pn 进程名 记得解压到System32里面 当然,资源管理器的进程是可以杀的所以也可以让电脑黑屏 同样可以让电脑黑屏的还有taskkill /f /im 进程…...

Nacos 微服务管理

Nacos 本教程将为您提供Nacos的基本介绍,并带您完成Nacos的安装、服务注册与发现、配置管理等功能。在这个过程中,您将学到如何使用Nacos进行微服务管理。下方是官方文档: Nacos官方文档 1. Nacos 简介 Nacos(Naming and Confi…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制&#xff0…...

C++ 基础特性深度解析

目录 引言 一、命名空间(namespace) C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用(reference)​ C 中的引用​ 与 C 语言的对比​ 四、inline(内联函数…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器

一、原理介绍 传统滑模观测器采用如下结构&#xff1a; 传统SMO中LPF会带来相位延迟和幅值衰减&#xff0c;并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF)&#xff0c;可以去除高次谐波&#xff0c;并且不用相位补偿就可以获得一个误差较小的转子位…...

在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例

目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码&#xff1a;冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...