『贴代码』
PasteSpider
PasteApeart
精选作品
优选问答
成长笔记
【本期话题】更多
                                    我们在开发中经常遇到对方的接口请求有频率限制,比如当前接口每秒的请求不能大于100,不能大于1000,对于这样的,我们作为请求方,如何做限定?
                    
优选问答
问题详情
返回问答列表
南城旧梦 南城旧梦 2025-06-10 21:38 4 个回答
PasteSpider是如何保持稳定性的?或者说为了稳定性如何做了哪些妥协?
全部回答 2
安之若素 安之若素 2025-06-13 10:55

稳定性啊!!!
在我看来就是如何更大程度的保护你的服务的运行
1.任务完成后,你直接停止PasteSpider,你的服务会继续运行,不受干扰!
至于升级等过程中,可能就会出现其他问题了,比如升级容器到一半,假设启动了8个容器
你突然停止了,那么nginx的upstream可能记录的容器数量是5个,那么还有3个就是游离状态!
2.内部任务采用线性模式,为啥要采用线性模式呢?我是从多个方面考虑的
a.我们部署服务的时候,很少情况要并发的,一般是有顺序的,比如redis-->rabbitmq-->db-->api
b.任务之间可能存在关联,比如构建升级,在PasteSpider中是拆分成2个任务的,先要执行构建镜像,然后才是升级,这明显的是线性的,前面没完成,后面不能干活的!
c.任务采用一次性模式,比如说你在某一个任务卡住了,这里有多方面的原因哈,最大可能就是网络的问题,比如打包镜像的时候一致打包卡住了,要么等待超时完成,要么,你可以直接重启PasteSpider!
注意重启后,在重启之前创建的任务都将丢弃

迷于归途 迷于归途 2025-06-13 10:55

为啥要丢弃呢?因为你可能被某一个任务卡死了,如果重启后,又去执行之前的待完成任务,那么可能进入死循环
而直接丢弃的好处就是,你可以重新创建任务!!!
还有一个关键点和设计模式有关,PasteSpider的任务模式是,创建任务后,推送任务ID给队列,消耗队列完成任务后,从队列中获取下一个任务,而不是每隔几秒去数据库扫描未完成的任务,可以说这个设计模式是为了节省资源,也就是PasteSpider的设计初衷!

快捷注册
用户问答更多
  • 不用选,后面都是PasteApeart,他们其实是一个东西

  • 看版本,PasteApeart.Helper 26.9.2之后,就按照基类前面的顺序了,也符合阅读顺序,当然你可以使用PasteSort再次改变他!

  • 1.语言吧,这本身只是一个开发思想,其实其他语言也可以用,不过最优雅实现的还是.NET

    2.特别适用于需要表单,表格的系统,所以哪些EMS,CRM,ERP等都合适

    3.扩展,比如这个思想,你也可以应用于C/S,理论上也是可以的

    4.这个主要针对的是管理端,附带UI的CRUD,也就是说对于业务代码,是没影响的!

    5.可能入门会麻烦点,毕竟有接近100个PasteXXXX特性要了解,幸运的是都是Paste开头,官方的也支持,比如MaxLength,Required等!

最新动态
  • 117.****.236 正在查看 项目列表页 !
  • 117.****.236 正在查看 项目列表页 !
  • 117.****.236 正在查看 项目列表页 !
  • 117.****.236 正在查看 正在查看笔记页面 !
  • 117.****.236 正在查看 正在查看笔记页面 !
  • 117.****.236 正在查看 项目列表页 !
  • 117.****.236 正在查看 项目列表页 !
  • 117.****.236 正在查看 项目列表页 !
  • 117.****.236 正在查看 项目列表页 !
  • 117.****.236 正在查看 项目列表页 !
  • 117.****.236 正在查看 项目列表页 !
欢迎加入QQ讨论群 296245685 [PasteSpider]介绍 [PasteForm]介绍 @2022-2023 PasteCode.cn 版权所有 ICP证 闽ICP备2021013869号-2