我们在开发中经常遇到对方的接口请求有频率限制,比如当前接口每秒的请求不能大于100,不能大于1000,对于这样的,我们作为请求方,如何做限定?
已经升级了,主要是left join的查询的时候没有过滤,其实这个问题,多租户也是一样的!
b不难吧,就几个地址!
2025.06之后的版本,可以为服务设置,默认10秒
已更新,其实就是js实现一个xxx_expend_select_values啥的,就是2边走的是同一个逻辑!
我记得gitea很自由的,应该很好实现!
注意类型要一样,否则不会覆盖,当然了字段名称也要一样!
[PasteHidden]
public new string word{get;set;}
重新申明,然后隐藏他!
注意类型要一样,类型不一样就是2个字段了,溜不溜???
稳定性啊!!!
在我看来就是如何更大程度的保护你的服务的运行
1.任务完成后,你直接停止PasteSpider,你的服务会继续运行,不受干扰!
至于升级等过程中,可能就会出现其他问题了,比如升级容器到一半,假设启动了8个容器
你突然停止了,那么nginx的upstream可能记录的容器数量是5个,那么还有3个就是游离状态!
2.内部任务采用线性模式,为啥要采用线性模式呢?我是从多个方面考虑的
a.我们部署服务的时候,很少情况要并发的,一般是有顺序的,比如redis-->rabbitmq-->db-->api
b.任务之间可能存在关联,比如构建升级,在PasteSpider中是拆分成2个任务的,先要执行构建镜像,然后才是升级,这明显的是线性的,前面没完成,后面不能干活的!
c.任务采用一次性模式,比如说你在某一个任务卡住了,这里有多方面的原因哈,最大可能就是网络的问题,比如打包镜像的时候一致打包卡住了,要么等待超时完成,要么,你可以直接重启PasteSpider!
注意重启后,在重启之前创建的任务都将丢弃
为啥要丢弃呢?因为你可能被某一个任务卡死了,如果重启后,又去执行之前的待完成任务,那么可能进入死循环
而直接丢弃的好处就是,你可以重新创建任务!!!
还有一个关键点和设计模式有关,PasteSpider的任务模式是,创建任务后,推送任务ID给队列,消耗队列完成任务后,从队列中获取下一个任务,而不是每隔几秒去数据库扫描未完成的任务,可以说这个设计模式是为了节省资源,也就是PasteSpider的设计初衷!
针对这个,PasteSpider做得还是比较到位的
这里从以前的容器版本说起,也就是PasteSpider的V2版本
执行docker run之后
等待10秒中(这个数值可以配置的,之前是全局配置,2025.06版本之后可以针对服务配置)
然后每隔一秒查询下这个容器的状态
1.是否正在运行
2.重启次数是否为0
为啥要加0这个判断呢,因为有些服务有异常了,触发了重启
我看之前的K8S是只判断是否正在运行,不知道后续修改了没有
V2的版本的时候,还加了一个API请求判断,后面去掉了
为啥?
因为引入了项目网关,这个时候PasteSpider对于你的服务来说未必是通的(因为你可能是以容器方式运行PasteSpider的)。。。
这个后续可能还会加回去!!!
添加一个二开支持吧!
已经有swagger了,可以自己接
所有的特性其实最终都是转化成ColumnDataTypeAttribute
既然说到了反射,那性能肯定有耗损的
不过还好的是PasteForm的反射影响的是管理端而非用户端
如果你要提升效率,可以缓存部分数据,比如获取ListDto模型,获取AddDto模型的数据
请注意不要缓存UpadteDto的数据,因为那个是附带了数据的模型数据!
[PasteSort]
默认排序规则是,当前的按照当前的排序,被继承的放后面
如果你要修改规则,注意添加[PasteSort(xx)]特性
这个特性有关键点
在反射获得所有字段信息后,会基于这个PasteSort排序,先按照小于0的进行排序
然后是默认放进去,最后是大于0的排序放进去
也就是
1.你可以所有字段,包括被继承的都给他们配置PasteSort,这也是最累的一种
2.你可以修改字段顺序,达到最大的排序效果,然后特定字段执行PasteSort微调,这也是建议的做法!
https://soft.pastecode.cn/doc/spider/
没有吧,我是可以访问
说的是二开的swagger吧?
之前由于某些原因注释了,下一个版本会开放,
新的需要登录后才可以访问,之前是可以直接访问,要模拟采用token!
目前有的话,比较麻烦,需要模拟登录,然后提交任务
这个看看下一个版本专门写一个接口来承载这个!
设计的思路是和现有的一致!
地址不一致,然后是密钥采用项目密钥,也就是API专用的!
都已经开源了,自己直接搞啊!
默认是这个ReadModelProperty
你得换DynamicModelPropery
好像是这个!
没有给PasteSpider.ApiHost执行权限吧
我知道是个人免费使用
gpl?glp?
个人免费用,而且直接是最高的专业版,企业版目前也没有开始收费
个人免费,免费!
那么问题来了,如何查看有哪些节点?哪些节点运行状态?
1.集群只支持非sqlite数据库,也就是postgresql,后续版本会支持mysql
2.然后是缓存必须是redis模式
3.设置运行模式为非single模式
需要设置CurrentHost表示当前节点是哪个地址,示例http://172.12.34.4:8200
然后是启动后,到管理端节点那边添加新的节点
1.集群互通
2.规划好哪些服务器归哪个节点管理,非ssh的话都是本地模式,所以Spider和服务器必须有关联的
3.集群密钥不要多个地方配置,统一使用KeeperConfig:UserToken
4.启动后,手动添加节点,让节点链接起来
5.服务器编辑,节点启动后再修改组别代码,这样才能分给节点
6.发布一个部署任务测试下,注意要先在服务的综合管理中管理服务器
节点有一个名称,在appsettings.json中的GroupName
然后查看服务器的分组名称
这2个名称一致的时候表示这个节点在管理这台服务器!
全部使用一套版本号,好处是一看代码版本就知道某一个服务器多久没升级了
坏处就是你问题,每个服务器的版本不是各自独立的!
其实各自独立还有另外一个问题,版本不同,升级的时候麻烦,要各自查询和确认版本号!
由于部署可能是混合模式
然后镜像是镜像,更多的在于配置
用统一的版本号可以很好的理解各个版本差异
如果各自有自己的版本号,就不知道他们到底差距多少了,
毕竟测试环境的升级频率肯定高于工厂模式的!
服务的模式改成镜像模式
然后镜像名称填redis:latest
然后你得确认你服务器上有redis:latest这个镜像!
服务的模式改成镜像模式
然后镜像名称填redis:latest
然后你得确认你服务器上有redis:latest这个镜像!
支持的,你创建多个服务器,然后选择不一样的运行方式就行,
IP是对于挂载她的PasteSpider而言的,
所以如果PasteSpider不是运行在Container内,
那么地址一般可以填写为127.0.0.1,
当然如果你多台服务器要代理互相访问,
那最好改写为局域网IP,这个看需求,
关键点项目路由nginx!
小道消息,测试已经进入尾声了,那就是剩下文档了,比较目前的很多说明文章都是V2的,得改成V5后就会发布了!
文档分2块,一个是操作文档,就是你在操作得时候,表单上直接点击字段名称可以查看
还有一个就是概念性得,或者说专题!
手动添加,按照要求添加,
这个只适用于windows的service
和linux的systemd模式
因为容器和IIS是可以直接同步的,在服务器列表中点击同步容器!!!
那只是默认值,你可以修改的
对啊,为啥不是10次!
666666666
生成前可以配置,在xxx.Domain项目下的template/config.json文件,注意反注释!
如果是生成dto后,则要自己写一个工具了!
去查下button的特性说明,有一个好像是args3写add