Status
Principle
- Minimize user operations for managing and monitoring topologies
- REST Service centralized metadata management
- Consistent UI experience
...
- Make sure consistent semantics between the term application (user space) and topology (physical space only)
- Topology should read configuration from SiteApplicationEntity#config instead of configuration fileconfiguration can be edited on UI
- Use REST Service as only entry to manage application (START/STOP/HEALTH CHECKING) and ApplicationManager to schedule the task execution and update the execution information
- Eagle UI should support to manage/monitor the application on site/application page
- Single site/application may have more than one topologies (for example hdfsAuditLogMonitoring and userProfileMonitoring should have topologies running separately)
...
To have a better user experience with EAGLE ui, we could provide an interface to manage a certain topology via the ui page, such as submit a topology
Gliffy Diagram |
---|
| |
---|
name | ApplicationTopologyArch |
---|
|
Gliffy Diagram |
---|
| |
---|
name | topologyManagetopologyManagerArch |
---|
|
Schema
...
Topology Description Service
- Service name: TopologyDescServiceTopologyDescriptionService
- Entity: TopologyDescriptionEntity
- Table name: eagle_metadata
- Prefix: topologyDescription
| Attribute | Type | Description |
---|
tage | topology | String | topology name |
fields | exeClass | String | topology entry class |
| type | String | topology type: DSL or CLASS |
| description | String | description on this topology |
| version | String | topology version |
Topology Execution Service
- Service name: TopologyExecutionService
- Entity: TopologyExecutionEntity
- Table name: eagle_metadata
- Prefix: topologyExecution
- Description: define the relation between an application and an topology, and maintain the execution status as well_definition
| Attribute | Type | Description |
---|
tags | site | String | topology site | name |
| application | String | |
| topology | String | |
fields | fullName | String | application name = topology execution name: eagle_${site}_${application}_${topology} |
| url | String | topology tracking url |
| description | String | topology namerunning status description | fields
| mainClassstatus | String | application | main classrunning status {NEW, STARTING, STOPPING, STARTED, STOPPED} |
| typemode | String | topology | type: build-in topology or main-class topologyrunning mode: cluster or local |
| configenvironment | String | topology configexecution environment, e.g., storm |
| descriptionlastModifiedDate | String | description on this topology |
...
long | last status update time |
Topology Operation Service
- Service name: ApplicationExecutionServiceTopologyOperationService
- Entity: TopologyOperationEntity
- Table name: eagle_metadata
- Prefix: application_executiontopologyOperation
| Attribute | Type | Description |
---|
tags | applicationoperation | String | application name = ${site}_${application} |
fields | statusUrl | String | application tracking url |
| deployCluster | String | cluster name |
| localStatus | String | application running status {INITIALIZED, STARTING, STARTED, STOPPING, STOPPED} |
Use cases
...
- create a topology definition entity
...
- click START button
- check the topology's current status on the nimbus host
- a new thread is created to execute the submitting topology task
- update status
{START, STOP, STATUS} |
| site | String | |
| application | String | |
| operationID | String | |
| topology | String | topology name: ${topology} |
fields | status | String | {INITIALIZED, PENDING, FAILED, SUCCESS} |
| message | String | exception message |
| lastModifiedDate | long | last status update time |
Customized Restful Apis
HTTP Method | URL | Payload | Description |
---|
POST | /app/operation | TopologyOperationEntity | create an topology operation |
DELETE | /app/topology/{topology} | | delete a topology description |
...