Skip to content

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>
    ]
}

Distribution Expression

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"

Microservice Description

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.

Example

{
    "name": "MyMicroservice",
    "instances": 1,
    "capacity": 1000,
    "loadbalancer_strategy": "round_robin",
    "patterns": [
        List<Pattern Description>
    ],
    "s_patterns": [
        List<Pattern Description>
    ],
    "operations": [
        List<Operation Description>
    ]
}

Operation Description

Property Description
name The name of the operation.
demand The computational demand of the operation.
dependencies List of Dependencies descriptions.

Example

{
    "name": "MyOperation",
    "demand": 1000,
    "dependencies": [
        List<Dependency Description>
    ]
}

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".

Examples

{
    "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"
		}
		]
	}
	]
}