Application Group
应用程序可以嵌套到以组作为分支、以应用作为叶子的n元树中。应用程序组是用来将多个应用程序划分成可管理的集合。
如上图所示的结构,该定义看起来是这样的:
{
"id": "/product",
"groups": [
{
"id": "/product/database",
"apps": [
{ "id": "/product/mongo", ... },
{ "id": "/product/mysql", ... }
]
},{
"id": "/product/service",
"dependencies": ["/product/database"],
"apps": [
{ "id": "/product/rails-app", ... },
{ "id": "/product/play-app", ... }
]
}
]
}
依赖
应用程序可以有依赖。例如,一个Play应用程序可能需要一个数据库来运行。如果依赖在应用规范中被定义,那么Marathon会跟踪应用程启动,停止和升级等操作的正确顺序。
依赖可以用应用级别和应用程序组级别来表示。如果依赖是应用程序组级别上表达,这种依赖会在改组中所有可传递应用和可传递组中被继承。
依赖关系可以通过绝对或相对路径来表示。
例如:如果在应用程序组的服务的定义,以下3种定义具有相同的含义:
{
...
"dependencies": ["/product/database"],
"dependencies": ["../database"],
"dependencies": ["specific/../../database"],
...
}
Group Scaling
可以对整个组进行scaling。所有可传递应用实例的数量也会相应的改变。
PUT /v2/groups/product HTTP/1.1
Content-Length: 21
Host: localhost:8080
User-Agent: HTTPie/0.7.2
{ "scaleBy": 2 }
通过执行上面的示例操作,每个应用程序的实例数是执行前的一倍。
参考资料:
[1]:http://mesosphere.github.io/marathon/docs/application-groups.html