Each JFrog product can be deployed with 1 or more nodes. Each node has its microservices and a local router (service discovery and API gateway). All microservices of the same product are deployed on the same node/host.
The JFrog Artifactory service contains the following microservices:
|
Additional external JFrog services are:
|
Outside the JPD:
|
JFrog Xray Service
The Xray service contains the following microservices:
- Indexer- Responsible for the indexing process, including:
- Recursively extracting artifacts and builds
- Collecting artifact metadata from accompanying files
- Building an artifact components graph representation
- Persist- Responsibilities include:
- Matching the given components graph with the public component information
- Completing component naming
- Storing graph data and component metadata in PostgreSQL
- Analysis- Responsible for enriching component metadata such as vulnerabilities, licenses and versions.
- 服务器- Responsibilities include:
- Generating violations by matching analysis data with watches and policies
- Hosting the API and UI endpoints
- Running scheduled jobs such as the database synchronization process
- Router- Responsible for communication between all the microservices and cross-product.
JFrog Insight Service
The Insight service contains the following microservices:
- Insight-Handles insight related data management and API functions
- Insight-Scheduler- Manages scheduling for different Insight tasks
- Router- Responsible for communication between all the microservices and cross-product.
JFrog Distribution Service
The Distribution service contains the following microservices:
- Distribution- Responsibilities include:
- Hosting the API and UI endpoints
- Sending distribution tasks via Redis to the Distributor
- Syncing the other Distribution nodes with changes
- 处理分配任务
- Communicate with Artifactory edge nodes
- Communicate with the source Artifactory
- Router- Responsible for communication between all the microservices and cross-product.
JFrog Private Distribution Network (PDN) Service
The PDN service contains the following microservices:
- Private Distribution Network (PDN) Server: An dedicated service responsible for advertising and tracking available artifacts located on the PDN Nodes, the PDN Server serves as the initial artifact seeder.
- PDN Node:A standalone application (or Docker image) that is interconnected with other PDN Nodes to resolve files, this application is used by the client to download content and is deployed on a dedicated host or client machine. The PDN Node communicates with its parent and sibling nodes to resolve files (Pull) and to distribute Release Bundles (Push). It also serves files to external clients from both cached artifacts and on-demand (Pull).
JFrog Pipelines Service
The Pipelines service contains the following microservices:
- API- Responsible for hosting the API endpoints.
- Cron- Responsible for running internal jobs on intervals, including timing out steps and calculating statistics.
- HookHandler- Processes resource webhooks received by API.
- Logup- Transfers console logs from steps from the database to Artifactory as steps complete.
- 信号员- Responsible for starting build nodes in dynamic node pools.
- Nexec- Responsible for running scripts on auto-initialized build nodes.
- PipelineSync- Reads the YML files in the pipeline source and updates the pipelines and resources with any changes.
- RunTrigger- Responsible for creating runs when a run is triggered manually or through a resource update.
- StepTrigger- Determines which waiting steps are able to run and queues them to be picked up by the build nodes.
- WWW- Hosts Pipelines UI pages that are supplemental to the JFrog Platform, including Pipeline History and Run Logs.
- Router- Responsible for communication between all the microservices and cross-product.
- extensionSync- Responsible for onboarding Pipelines extensions on to the JFrog Platform.
- templateSync- Responsible for onboarding Pipelines templates on to the JFrog Platform
- reqSealer- Responsible for finalizing the status of a run/step.
- Frontend- Serves static Pipelines micro frontend pages.
3 Comments
Unknown User (ofira)
From the diagram/text in this page it is not clear where the DBs of Xray are located.
Unknown User (arturoa)
In the Overview, we talk about the "services of each product", meaning the microservices and also the "Additional external JFrog Services", meaning Xray, JFMC, Distribution. We should be consistent with our usage of services/microservices/products.
Prasanna Raghavendra
Router should be added as a micro service under Artifactory. we may need support bundle from router - so better to introduce it from the beginning.