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