论文报告《SPIN Service Performance Isolation Infrastructure.ppt
-
资源ID:85113653
资源大小:175KB
全文页数:20页
- 资源格式: PPT
下载积分:10金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
论文报告《SPIN Service Performance Isolation Infrastructure.ppt
论文报告论文报告SPIN:Service Performance Isolation Infrastructure in Multi-tenancy Environment 郑旭旭2009-4-13研究背景研究背景lSaaS的“多租户单实例”特点要求:运行在共享的主机资源上的单个服务实例能够同时满足来自不同租户的请求。l产生问题:大规模的资源共享容易产生租户间的性能干涉。一些恶意租户的行为影响其他租户的性能不平衡状态:一些租户能够达到很高的性能,以牺牲其他租户的性能为代价l解决办法:性能隔离。多租户下的两种成熟模式多租户下的两种成熟模式l模式一:在共享的硬件、操作系统或者中间件之上为每个租户提供专门的服务实例。l模式二:在共享的硬件、操作系统或者中间件之上所有的租户共享一个服务实例目前解决方案目前解决方案l虚拟化技术经常使用虚拟机创建服务托管环境为不同租户提供逻辑边界。缺点:l适用于模式一,限制不同租户之间的资源共享,导致额外的管理成本。Multi-Tenancy Using VirtualizationHost OS(Dom 0)Customer 1NetworkCustomer nNetworkVM 1JVM 1OpenNMS 1VM NJVM NOpenNMS nNetwork ManagementService ProviderVPNJVMTomcatUI 1UI nPgSQLRRDfilesVPN目前解决方案目前解决方案lvirtual service partition产品实例:SWSofts Virtuozzo,采用操作系统虚拟化技术的商业产品 可在单一物理服务器上创建多个相互隔离的分区 virtual service partition in general is not an effective method for Multi-tenancy,since it needs a different service instance for each partition and does not support multi-tenants to share all resources of hosting platform.SPIN简介简介lSPIN:服务性能隔离基础设施,能够允许托管系统中大规模的资源共享l同时满足:性能隔离和资源共享l基于模式二l关注对于同一个服务实例不同租户之间的性能隔离l满足如下性能隔离需求隔离性效率自适应性SPIN基本思想基本思想通过System Monitor(系统监视器)监视系统的运行情况并且记录每个租户的资源使用情况;根据System Monitor检测的系统运行情况,通过Anomaly Detection Model(异常检测模型)预测异常,产生异常报告;根据System Monitor记录的租户资源使用情况分析出是哪个租户引起的异常,系统进行自我控制来进行调整,如:先保留异常租户的服务请求,将资源先分配给其他租户使用。SPIN的功能模块的功能模块l异常检测功能通过识别、分析反应系统性能的变量来预测异常情况的发生。l监视器功能采集数据。这些数据一方面作为异常检测功能模块的输入;另一方面记录每个租户的资源使用情况,用来识别aggressive租户。传统数据收集是基于进程或者线程,SPIN中关注的是服务。监视器机制有两个关键限制:l不能修改原系统的代码l提供具有低性能开销的运行时检测l自适应决策功能运用可选的调整策略来隔离恶意租户的引起的负面影响异常检测模型异常检测模型lInstable State:托管系统已经达到其处理能力的极限,但是仍然不能满足所有租户的请求。l利用服务请求的平均到达速度和the mean service rate(服务平均处理速度)之间的差值来决定系统的稳定性。传统方法基本上是利用 threshold(阈值)l利用DWT(小波转换)和AR(自回归模型)根据 差值进行预测。此过程称之为WAQ。按照这种方式,服务系统的稳定性在短期内是可以预测的。系统监视器系统监视器 l租户资源消费账目监视器是基于事件的,监听两种事件:l进入或者退出一个服务边界对一个服务边界事件,当前正在执行的服务放到 accounting stack 中。accounting stack 用来进行资源消费的记录,目的是能够很容易的找到当前租户正在消费哪些资源。l一些资源被消费的时候对于资源消费事件发生的时候,从accounting stack 中取出 top unit作为资源消费的owner。In other words,the accounting stack is active at the time of resource being consumed and used as the context within which to determine accountability(确定会计责任)。系统监视器系统监视器lAggressive 租户识别当异常报告产生后,系统需要识别出是哪些租户试图以更快的速度消费资源,影响其他租户。l考虑到性能的因素,识别是离线实现的。对于每一个租户,所有的accounting events都被记录。基于这些事件,每个租户的资源消费的时间序列可以提供给用户。l由于不同租户的资源消费的absolute volume不同,每个租户资源消费的比例被计算出来用作不同租户之间的比较。租户分级l依据:两个连续accounting events之间的resource volumes的比率lrank最高的作为aggressive租户的候选者l资源的使用因request不同而不同,提出了衰减系数的概念来降低波动lV t i (1-f)V t i-1调整策略调整策略l提供开放的基础架构来运用灵活的调整策略l对于调整策略的设计不是本论文的重点系统检测功能的实现系统检测功能的实现l实现步骤lThe instrumentation phasebytecode instrumentation of the servicesoperations to be monitoredlThe data collection phaserunning the programgathering resource usage dataaccounting the consumption on proper tenants系统检测功能的实现系统检测功能的实现lInstrumentation to maintain Accounting StackAccounting Stack的实现是通过:the instrumentation of all service interface methods entry and exit points with specific method calls.对于每一个租户,第一次发送服务调用请求的时候,建立一个accounting stack。l在 instrumentation阶段,控制被监测的服务字节码来插并维护这个accounting stack的方法。l当一个web服务进入的时候,一个含有边界信息的stack frame进入accounting stack中。退出的时候,该stack frame退出。对于每一个资源消费事件,记录在目前的accounting stack中被消费的资源以这种方式,产生一个完整的记录:被租户访问的服务链和此服务时间内资源的使用情况 系统检测功能的实现系统检测功能的实现l通过资源消费代理收集数据资源消费代理的作用lDetermining resource consumptionlBilling the current accounting unitJava本地代理架构lTrackers:追踪CPU和内存的使用情况,通过JVMTI代理来实现资源l回收使用:分配对象的时候,为该对象加上将使用该对象的租户ID。当对象被释放的时候,利用JVMTI提供的callback事件通知代理,检索到该租户的ID,在accounting stack中减少内存消费数量。lJNI成本产生原因:Accounting Stack必须把CAT(Current Accounting Tenant)中的变化传送给资源消费代理。代理存在于本地空间,所以,CAT需要在本地可访问解决办法:使用java.nio.ByteBuffer,它的实例可以被java和本地代码访问 Java Native Agent未来工作未来工作l将SPIN应用于SLA之中,针对不同租户的SLA建立不同的异常检测模型,提供不同的自调整政策。比如:允许一些租户能够优先使用资源扩展扩展lSPIN除了能够保证资源共享和性能隔离之外,换个角度,这种机制其实也可以认为是一种安全保证。通过追踪不同租户的资源使用情况可以诊断出恶意的租户。l根据SPIN的思想,可以在SaaS架构下开发一个类似SPIN的服务插件挂在ESB下,该插件为每个租户建立一个堆栈用来记录每个租户的服务使用情况,从而可以根据不同租户对于服务的使用情况进行收费;同时,还可以实现一定程度的SLA保证,例如:租户的服务请求都在各自的堆栈里面,可以根据不同租户的级别选择先处理哪个租户的请求,以及选择要使用的服务、资源等。相关知识相关知识lJVMTI 提供了一套“代理”程序机制,可以支持第三方工具程序以代理的方式连接和访问 JVM,并利用 JVMTI 提供的丰富的编程接口,完成很多跟 JVM 相关的功能。lInstrumentation 简介提供允许 Java 编程语言代理检测运行在 JVM上的程序的服务。检测机制是对方法的字节码进行修改。使用 Instrumentation,开发者可以构建一个独立于应用程序的代理程序(Agent),用来监测和协助运行在 JVM 上的程序,甚至能够替换和修改某些类的定义。这样,开发者就可以实现更为灵活的运行时虚拟机监控和 Java 类操作 lStack frame 为单个函数分配的那部分栈空间就叫做 stack frame。在计算机科学中,Callstack 是指存放某个程序的正在运行的函数的信息的栈。Call stack 由 stack frames 组成,每个 stack frame 对应于一个未完成运行的函数。