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