云栖问答

找不到答案?去提问题

2016-07-20 20:20:31

多应用部署在tomcat上内存分配


来源: [直播] 基于Java容器的多应用部署技术实践

相比单应用,多应用部署在tomcat上内存分配怎么设置

1个回答

0

weipeng2k

多应用部署存在两种不同的类型,一种是合并部署还有一种是多版本部署(同一个应用的不同版本),首先从机器配置上都会优于以往的机器配置,只是在隔离性上有不同的要求。

合并部署

合并部署对于外围的请求没有变化,而多个应用只是聚合在一起了,可以这么看,以往是这样的:

     ┌──────┐          ┌──────────┐          ┌───────────┐
     │WebApp│          │ServiceApp│          │ServiceApp2│
     └──┬───┘          └────┬─────┘          └─────┬─────┘
        │       query       │                      │      
        │ ──────────────────>                      │      
        │                   │                      │      
        │                   │        method        │      
        │                   │ ────────────────────>│      
        │                   │                      │      
        │                   │        return        │      
        │                   │ <────────────────────│      
        │                   │                      │      
        │       return      │                      │      
        │ <──────────────────                      │      
     ┌──┴───┐          ┌────┴─────┐          ┌─────┴─────┐
     │WebApp│          │ServiceApp│          │ServiceApp2│
     └──────┘          └──────────┘          └───────────┘

WebApp调用ServiceApp再调用ServiceApp2,而合并部署是将这些调用重新拉回到一个应用上,变成下面的状态:

     ┌──────┐                    
     │WebApp│                    
     └──┬───┘                    
        │────┐                   
        │    │ ServiceApp.query  
        │<───┘                   
        │                        
        │────┐                   
        │    │ ServiceApp2.method
        │<───┘                   
     ┌──┴───┐                    
     │WebApp│                    
     └──────┘                    

所以在合并部署方案中,由于外部的流量基本不变,所以对于应用间的内存分配没有特别需要注意的。

多版本部署

对于多版本部署,需要在多租户JVM的帮助下,彻底隔离两个版本应用对于内存的使用,当然后期可以调整配额。隔离内存的目的主要是防止多个版本在发布时,出现诸如OOM等问题对于整个系统产生的影响。

1
GO
1376
浏览
0
收藏
邀请他人回答