-
Notifications
You must be signed in to change notification settings - Fork 2
ArchitectureDescription
franksn90 edited this page Aug 26, 2022
·
3 revisions
MiSim architecture descriptions consist out of a list of microservice descriptions and an optional definition of default Network latency.
{
"network_latency": <Distribution Experssion>,
"microservices": [
List<Microservice Description>
]
}
To model distributions, MiSim supports a simple distribution expression. It shapes a normal distribution with a mean and a standard deviation. Optionally, the left and right deviation can be specified separately.
Type | Formula | Example |
---|---|---|
Constant | <const> |
"42" |
Normal Distribution | <mean>+-<std> |
"42+-3" |
Skewed Distribution | <mean>+<leftDeviation>-<rightDeviation> |
"42+1-3" |
Property | Description |
---|---|
name | The name of the microservice |
instances | The number of starting instances of the microservice |
capacity | Capacity of each instance |
loadbalancer_strategy | The load balancing strategies to use.* |
patterns | List of instance owned pattern descriptions that should be used.* |
s_patterns | List of service owned pattern descriptions that should be used.* |
operations | List of operation descriptions |
* See Supported Resilience Mechanisms.
{
"name": "MyMicroservice",
"instances": 1,
"capacity": 1000,
"loadbalancer_strategy": "round_robin",
"patterns": [
List<Pattern Description>
],
"s_patterns": [
List<Pattern Description>
],
"operations": [
List<Operation Description>
]
}
Property | Description |
---|---|
name | The name of the operation. |
demand | The computational demand of the operation. |
dependencies | List of Dependencies descriptions. |
{
"name": "MyOperation",
"demand": 1000,
"dependencies": [
List<Dependency Description>
]
}
Property | Description |
---|---|
service | Target service name |
operation | Target operation name |
probability | Probability of the dependency to be executed. |
custom_delay | Custom latency to be used. Overrides default network latency |
alternativeProbability | Probability of the dependency to be selected as alternative. |
iterations | Number of repetitions for the execution of subordinate dependencies. |
type | Can be alternative, loop, or basic (default). |
Note that dependencies can be nested with alternatives and loops as intermediate dependencies. Service and operation name can also be combined as fully qualified name in the operation property, e.g., "service.operation".
{
"service": "MyService",
"operation": "MyOperation",
"probability": 0.5,
"custom_delay": <Distribution Expression>
}
{
"name": "INTERNAL_DEP2",
"demand": 1,
"dependencies": [
{
"type": "alternative",
"dependencies": [
{
"service": "example-service",
"operation": "example-service.get",
"alternativeProbability": "0.8"
},
{
"service": "example-service2",
"operation": "example-service2.get2",
"alternativeProbability": "0.2"
}
]
}
]
}
{
"name": "INTERNAL_DEP",
"demand": 1,
"dependencies": [
{
"type": "loop",
"iterations": "2",
"dependencies": [
{
"service": "gateway",
"operation": "INTERNAL_DEP2"
}
]
}
]
}