Cloud Node Mode β
erupt-cube supports distributed semantic models built on erupt-cloud: semantic models can be defined in different business projects (nodes) while the cube server discovers, manages, and queries them centrally β no need to gather every model into a single codebase.
Use cases
- Business lines develop and deploy independently, but modeling, dashboards, and AI query happen on one unified analytics platform
- Semantic models live next to their data sources (model and data deployed in the same project), avoiding cross-database data pulls
- The platform team governs model assets centrally, while business teams only write
@EruptCubeclasses in their own projects
Architecture β
ββββββββββββββββββββββββββββββ Heartbeat registration (modules + model list)
β Cube Server ββββββββββββββββββββββββββββββββ
β erupt-cube-puzzle β β
β erupt-cloud-server β Query passthrough β
β (modeling / analysis / β (AccessToken) β
β AI query) βββββββββββββββββββββββββββββββΊβ
ββββββββββββββββββββββββββββββ β
βββββββββββββββ΄ββββββββββββββ
β Business Nodes (many) β
β erupt-cube-semantic β
β erupt-cloud-node-jpa β
β @EruptCube models β
βββββββββββββββββββββββββββββ- Nodes register their modules and hosted semantic models with the server via erupt-cloud heartbeats
- The server automatically discovers nodes carrying the
erupt-cube-semanticmodule and exposes them as selectable model sources - Query requests are forwarded from the server to the node with the node's AccessToken; multi-instance nodes get automatic load balancing and failover
- SQL is generated and executed on the node side (data never leaves the node project's data sources); the server only receives result sets
Server Setup β
The server is a standard erupt-cube project plus the erupt-cloud server capability:
<dependency>
<groupId>xyz.erupt</groupId>
<artifactId>erupt-cube-puzzle</artifactId>
<version>${erupt-cube.version}</version>
</dependency>
<dependency>
<groupId>xyz.erupt</groupId>
<artifactId>erupt-cloud-server</artifactId>
<version>${erupt.version}</version>
</dependency>Note
erupt-cloud-server requires Redis β configure spring.data.redis on the server.
After startup, create a node under the Node Config menu and note the generated AccessToken for node registration.
Node Setup β
Add the semantic layer and cloud node dependencies to the business project:
<dependency>
<groupId>xyz.erupt</groupId>
<artifactId>erupt-cube-semantic</artifactId>
<version>${erupt-cube.version}</version>
</dependency>
<dependency>
<groupId>xyz.erupt</groupId>
<artifactId>erupt-cloud-node-jpa</artifactId>
<version>${erupt.version}</version>
</dependency>erupt:
# Local cube data sources on the node (models execute node-side)
cube:
datasource:
node_mysql:
jdbc-url: jdbc:mysql://localhost:3306/erupt
username: root
password: xxx
driver-class-name: com.mysql.cj.jdbc.Driver
# Register with the cube server
cloud-node:
server-addresses: [ 'http://cube-server:9999' ] # server address
access-token: QWROXUZ2MSAIPUZO # token generated in the server's Node Config
node-name: sales-node # node name
host-address: [ 'http://localhost:8899' ] # address the server uses to reach this node
heartbeat-time: 15000Then define semantic models in the node as usual:
@EruptCube(
datasource = "node_mysql",
name = "Node Sales Analysis",
sql = "SELECT region, category, amount, order_date FROM fact_sales"
)
public class NodeSalesCube {
@Dimension(title = "Region")
private String region;
@Dimension(title = "Category")
private String category;
@Measure(title = "Revenue", sql = "sum(amount)")
private Double total_amount;
}Usage β
Once a node registers, a model source dropdown appears wherever the server selects models (visual modeling, visual analysis, etc.):
local: models defined locally on the cube server- Node name: models hosted on that node β metadata and queries are transparently forwarded to the node
On the erupt-cloud server's Node Config list, click Model Count to browse all resources hosted by a node; the Cube tab shows the semantic models the node reported.
Version requirements
Both server and nodes require erupt 2.1.0+ and erupt-cube 2.1.0+. Older nodes can still register and serve passthrough queries, but they won't report their cube model list on the node management page.