PasteSpider之提问与回答(持续更新... .. .)

通过提问和回答,将是了解一个东西的好办法,特别是你对这个领域有一定基础的时候,所以本文将通过问答的形式来介绍PasteSpider,问答来自PasteSpider的开发历程,也有部分来自网友的提问,如果后续你有疑问,可以到QQ群296245685提问,也可以在本文进行评论,现整理如下:

PasteSpider是什么东东,为啥和K8S来比较?

其实PasteSpider和K8S,还是K3S也好,或者说其他的容器管理工具,在我看来不是一个维度的东西,能比较的地方也仅限与他们都可以帮你部署你的项目到服务器上!在我看来有以下几点比较明显的点:

运行方式不一样,PasteSpider作为一个工具,就真的是工具,在平时你看PasteSpider不爽了,你可以直接docker stop xxxx他,不让他运行,对于你的其他服务来说是不会有啥影响的(PasteSpider没有在运行的时候,将无法为其他容器收集运行状态的数据,这个数据用于报表,比如展示最近1个小时某一个容器的内存占用情况,流量使用情况等)!

上手容易度不一样,把PasteSpider专题的几篇文章读一下,30分钟就可以入手和使用上PasteSpider,因为他里面的思想和开发很贴近,操作上都是图文操作的。如果使用中遇到问题,那么你只要搜索相关的原生知识点就行了,比如部署那就是docker/podman,路由相关的信息那就搜索nginx。

资源消耗不一样,PasteSpider使用过程中的资源消耗是可以说很小,大概在100~300MB内,他支持一个PasteSpider服务多台服务器,也支持多个PasteSpider合并成一个集群使用。我的一台服务器1GB内存的,我也给上了PasteSpider!

如何理解PasteSpider里面的项目,服务,环境等信息

PasteSpider我觉得他更适合于开发人员使用,因为他的部署思想是遵照开发人员的思维来设计的,比如你开发了一个商城系统,有api,node,web,h5等组成,他们可以公用一个域名来进行访问,那么这就是一个完整的项目,项目下挂载了api,node,web,h5等服务(不一定要运行在容器里面的才叫服务),如果我们把这些服务看成横向的话,那么纵向的理解就是环境了,比如开发环境,正式环境,一个环境包含一整套的服务!可能在发布上我们会部署成https://test.abc.com/测试环境,而https://www.abc.com为正式环境!

开发中如何隔离开,各自开发各自的

我个人角色微服务的最大贡献就是把工作分割了,各干各的,在PasteSpider里面表现为服务,一个服务一个人开发,比如api由张三开发,node模块由李四开发,最后部署的时候使用nginx的upstream和location进行路由的关联,在PasteSpider里面中,你可以为张三和李四绑定他们各自的服务,那么在升级过程中他们就只能看到这个项目下的各自的服务,各自部署各自的!PasteSpider里面支持按照项目,服务,环境的维度为账号授权!

如何保证部署时候的配置文件不搞混

拿.net来说明,现在的项目有一个配置文件appsettings.json,其实其他语言也有,没有的话你也可以自己弄一个出来,无外乎就是启动的时候读取这个配置,然后使用它!还有一个地方就是启动的时候传入的参数,使用docker的小伙伴应该很熟悉docker的一个命令docker run -e XXX=YYYY。如果是文件,那么你可以在服务的同步过滤中标注这个文件不升级,就是每次更新文件都不更新appsettings.json,而如果是环境参数的话,你可以使用PasteSpider里面的key-value,把环境变量打开,比方说你可以为api的服务在启动的时候分别导入-e runkey=abc或者-e runkey=bbc,这里的abc或者bbc你应该配置到Key-value里面。文件同步过滤还可以配置文件夹,也可以基于账号配置,比如张三不更新/page/这个文件夹的内容,李四不更新/mobile/这个文件夹的内容!

在PasteSpider配置路由后没有生效

在PasteSpider的路由模块中,你可以给某一个项目的某一个环境设定他的nginx的规则,也就是nginx的路由信息的模板,系统将基于这个模板生成nginx.conf内的upstream和server模块的内容。
1.可能是宿主服务器的路径设置错误,一般的这个路由文件放于/etc/nginx/conf.d/,要按照宿主实际的情况设定
2.PasteSpider需要触发了升级或者伸缩才会触发对路由文件的更新!还有对应的环境要对,比如你给项目A设定了测试环境的路由信息,结果发布的是正式环境的,那么这个路由文件是不会更新的!
3.可能在生成路由文件的时候遇到错误,这个可以查看任务详细可以看到。
4.从开始到路由可用的顺序错误了,正确的顺序应该是项目对应的服务先启动运行(服务-环境-构建于升级),然后去为这个项目的这个环境新建一个路由信息,这个时候可以直接点击预览,看看基于模板框的内容生成的路由信息是什么样子的,保存后,点击路由列表页面中这个路由的重载,重载就是基于这个路由的项目和环境信息,读取对应的内容,然后写入到对应的.conf文件上,然后执行命令nginx -t和nginx -s reload
如果配置的这个.conf文件已经在宿主的对应文件夹上看到了,还不能访问,那就要看生成的这个路由配置信息,基于Nginx的支持去排查了!

如何应对服务器重启的问题

docker有一个重启机制,就是启动容器的时候设定restart=always,所以重启就变成docker的问题了,其实PasteSpider里面有一个运行数量监听的机制,创建服务后,一般会给这个服务的指定环境在某一台服务器上配置至少运行一个容器,在下一次PasteSpider监测服务运行情况的时候,如果容器数量小于设定的,则会基于这个服务的配置启动一个容器!这点作用在podman可以理解为podman重启后,其他容器如何重启的问题(只要配置PasteSpider开机重启,然后就等待PasteSpider检查容器运行情况了)
对于容器来说重启的另外一个问题是IP的问题,一般路由我们使用端口映射,或者内部IP,所以PasteSpider引入了自定义网关的模式,一个项目一个网关,为容器配置了网关和IP的,重启后这个IP是不变的!!!

2024-05-24

文件同步中部分失败,构建升级了咋办

首先PasteSpider的文件同步(就是把你要打包到容器镜像的文件同步到服务器)是采用差量同步的,依据为服务端是否缺失这个文件和文件的md5进行校验。单次同步的时候,如果有至少一个同步失败,则会弹出提醒!正常同步的话是没有这个对话提醒的,文件同步器PasteSpiderFile已经告诉你有文件同步失败了,你不听劝继续构建升级那我也没办法,你可以点击对比,再次执行同步!在一键部署中,如果有文件同步失败,则这个一键部署的任务讲被打断!

如何处理版本回滚的问题

我们把项目中的服务成为几种类型,主要分为能够打包成镜像的(api,node等),和不能打包成镜像的(一般为web的静态文件),如果是打包成镜像的,则每次打包的版本会+1,比如imgspider:1100和imgspider:1101,这里面的1100和1101就是镜像imgspdier的TAG,这样你要回退某一个版本,就需要到镜像列表中找到这个镜像,回滚到此版本即可!如果是静态的服务(不需要打包的),则需要你去对应的文件夹复制文件到工作目录,比如/spider/static/shop/web.1100内的文件覆盖到/spider/static/shop/web,其中这个1100的文件夹表示这个静态服务的1100这个版本更新的差量文件!为了防止无限个历史版本占用电脑硬盘,在对应的服务中可以配置保留几个历史版本,所以这个回滚版本也是有版本限制的!
在这里插入图片描述

项目服务过多,同步的时候忘记操作到哪个了

文件同步器中的最上方和最下方各表示最后一次操作的服务是哪个,最后的点击是那个,这样可以提醒你刚刚操作了啥,如下图:
在这里插入图片描述

容器内如何知道我当前是测试环境还是正式环境

在启动容器的时候,会带入一个参数-e “RunConfig:Model=default” 至于容器内如何获得这个环境RunConfig:Model信息那就是开发的事情了哈!这个你也可在工作列表找到这个任务,任务详细中找到有一个叫dockerrun的,点击详细,会看到这个子任务执行的命令是什么!

如何知道当前容器的IP等信息

有些时候我们需要知道自己当前处于啥状态,比如集群的,就需要知道自己的IP等信息,由于容器还没启动前很多信息是未知的,所以你可以经过占位符把当前容器的ID或者Name用环境参数的形式传递给容器,启动后延迟些时间,然后通过API接口去读取,或者通过/api/spider/Open/ReadRoute信息获得所在项目的全部运行容器的信息,再经过启动的时候传递的ID或者Name来定位,你也可以为项目的推送地址填写自己url,这样在项目部署后会推送这个项目的容器信息给你配置的地址!

集群部署的时候,某一个容器宕机了,是如何正常工作的

你可以使用PasteSpider为某一个服务部署多个容器,也就是我们说的集群部署,无论是在一台服务器上还是在多台,部署完成后PasteSpider其实改变的是对应的Nginx的信息,也就是对应的upstream里面应该可以看到有几个容器来分载这个转发,至于哪个宕机了,其实就是nginx的知识了!在下次PasteSpider检查容器运行数量的时候,如果不满足,则会伸缩这个服务对应的容器,然后会重新更新对应的Nginx配置!

同步过滤忽略的文件如何升级

有些时候我们为某个服务的某个文件设定为忽略,就是后续更新都不更新他,这个时候在对比后,你会看到下方有左右两个区域,左边区域表示本地文件,右侧表示服务端,在左侧区域找到你要上传的文件右键上传到服务器,这个操作是忽略同步过滤的配置的!

未完待续,后续继续… … .

  • 25
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值