JFrog Xray RabbitMQ队列
Xray使用RabbitMQ来管理异步操作。
本文档描述了主要队列和Xray使用它们的方式。
RabbitMQ队列
有3种主要类型的队列:
新内容—不带后缀,例如“Index”。这种类型的队列负责与添加到系统中的新内容相关的事件。例如,将一个新工件上传到一个标记为索引的存储库,将在Index队列中创建一条消息。
现有内容—包含“ExistingContent”后缀,例如IndexExistingContent。这种类型的队列负责系统中已经存在的内容。例如,重新索引存储库将向此队列发送消息。
重试-失败的消息将被发送到这个队列,并将在那里停留一个TTL。一旦TTL过期,消息将返回到原始队列。请参阅重试部分。
工人
每个队列都有工作者,它们是队列的消费者。配置是应用程序的每个节点。
例如,如果系统配置了10个Index工作者,并且有3个HA节点,则系统将为Index队列配置30个消费者。
指数
从JFrog Artifactory下载并创建组件图。
队列
指数-新的工件索引。将影响新构建、工件和发布包的索引。
indexExistingContent-通过索引库触发的现有工件索引。
坚持
将依赖关系图持久化到Postgres数据库。
队列
坚持-持久化新工件的依赖关系图。消息将在这里从索引工作者发布。将影响新构建、工件和发布包的索引。还负责在删除事件之后删除未使用的依赖关系图。
persistExistingContent-保留现有工件的依赖关系图。消息将在这里由IndexExistingContent工作者发布。
分析
将安全数据与组件匹配
队列
分析—分析新工件的依赖关系图,匹配安全漏洞。
analysisExistingContent—分析现有工件的依赖关系图,匹配安全漏洞。可以通过重新扫描手表并重新索引来触发。
警报
根据政策和观察创建违规行为,准备电子邮件和webhook。
队列
警报支持这些队列:
警报-根据政策和观察创建违规行为,为新工件创建电子邮件和webhook。
alertImpactAnalysis-对于现有工件,由影响分析触发(见下文)。
通知
执行实际发送电子邮件和webhook。
队列
通知-所有生成的通知。
影响分析
在db同步之后使用新的漏洞和许可证数据更新依赖关系图的过程。
队列
impactAnalysis—现有组件的新漏洞和license数据。
MDS更新
使用安全信息更新元数据服务器的过程。该信息将在通过UI/API进行搜索时公开
队列
mdsUpdate-为新部署的工件通过REST向元数据服务(与Artifactory一起安装)发送更新。
mdsUpdateExistingContent-将现有工件的更新通过REST发送到元数据服务(与Artifactory一起安装)。可以由其他' ExistingContent '工作者触发。此队列的大部分负载来自Impact Analysis流。
重试
内置重试机制的工作原理如下:
具有可恢复错误(如网络错误、磁盘限制等)的失败消息将被写入具有较小TTL(从6秒开始)的相应重试队列。
TTL过期后,消息将自动(由RabbitMQ)移动到原始队列。
当再次发生错误时,消息将被传输到具有2*(原始TTL)的重试队列。如果TTL大于7天,消息将被认为是失败的,并保存在失败表中(也显示在UI的“System Messages”下)。
规模
扩大员工规模可以通过两种方式完成:
增加特定队列的工作线程数量
添加新的x射线节点
向外/向上扩展的注意事项:
扩容可能会影响以下外部资源:2022世界杯阿根廷预选赛赛程
PostgreSQL -可能会影响连接数,CPU,磁盘和内存的使用
人工工厂和元数据服务器——增加MdsUpdate工作者的数量,可能会导致人工工厂和元数据服务器上的负载显著增加。
RabbitMQ—增加worker的数量通常不会对RabbitMQ造成不良影响。通常,当队列变得非常大时,RabbitMQ会消耗大量资源。2022世界杯阿根廷预选赛赛程
配置
所有队列的工作线程都可以通过REST API进行配置。一个例外是MDS工作者,它只能在system.yaml,没有单独的配置MdsUpdateExistingContent和MdsUpdate.
需要重新启动才能应用worker配置中的更改。
在将来,我们计划将所有工人的配置移到system.yaml.
API://www.si-fil.com/confluence/display/JFROG/Xray+REST+API#XrayRESTAPI-ConfiguringtheWorkersCount
System.yaml:
服务器。mdsUpdateWorkers: 5(默认为5)
