应用云平台的可用性——从新浪SAE看云平台设计
云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。
该内容已经被标记书签!
标记书签错误,请重试!
作者 R.J. Lorimer 译者 张凯峰 发布于 2008年8月1日
由Sun的Brian Goetz和Robert Eckstein合作撰写的有关Java和实时系统的文章最近登载在Sun开发者网络上,该系列文章由两部分组成。在一个真正的实时环境中,线程优先级是极其重要的,没有一个系统可以保证,所有的任务都能够准时完成。然而,一个实时系统能够确保的是,当有些任务即将超过最终时限时,可以先牺牲低优先级的任务来保障它的执行。Goetz和Eckstein接着提到Java实时系统规范的核心概念——实时线程:
RTSJ定义了至少28种优先权级别,并要求严格执行此规定。然而,正如本篇文章前面所说,RTSJ的实现依赖于支持多种优先权的实时操作系统,和高优先级线程抢占低优先级线程的能力。
此外,RTSJ可允许非实时和实时活动同时存在于一个Java应用中,对一个活动的时序保证程度依赖于活动所属线程类型:第一部分讲到的最后一个概念是,支持内存管理所做的各种扩展。由于与垃圾回收及对象分配相关的延迟的存在,三个内存区域被划分出来:java.lang.Thread或javax.realtime.RealtimeThread线程类型。
- 标准java.lang.Thread(JLT)线程用来支持非实时的活动。JLT线程可以应用Thread类定义的10种优先权级别,但是它们不适用于实时活动,因为不能够提供时序执行保证。
- RTSJ还定义了
javax.realtime.RealtimeThread(RTT)线程类型。RTTs可以利用RTSJ提供的强大的线程优先权支持,它的调度遵循运行直至阻塞(run-to-block)原则,而非按时间片运行原则。这就意味着,当有另外具有较高优先权的RTT出现时,调度程序会抢占该RTT。
引入RealtimeThread的扩展类——NoHeapRealtimeThread,以实时友好的方式辅助管理这些独特的内存区域:
RTSJ提供一个RTT的子类,称为然而,即使软件正在使用特定的内存区域,它的资源使用依然很容易受到内存其它非关键部分的GC的影响。由于这个原因,该系列文章的第二部分集中于和垃圾回收相关的问题,阐述了可用于实时Java系统的不同GC方法,然后介绍了Sun的商业实时Java系统:Java RTS。在第二部分中描述了四种垃圾回收算法:NoHeapRealtimeThread(NHRT)。该子类得实例可以避免由垃圾回收引起的不稳定情况。这个NHRT类是为硬实时(hard-real-time)活动所准备的。
为最大化可预测性,NHRTs不能访问垃圾回收堆,也不能操纵堆变量。否则,线程会遭遇GC暂停,这将导致任务错过运行时限。与此相反的是,NHRT可以更具预测性的方式使用作用域内存和永久内存特性分配内存。
译者 张凯峰 InfoQ中文站编辑,有多年软件开发和测试经验,热衷参与技术社区与技术传播。
云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。
淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011。
2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。
12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011。
篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011。
本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。
随着JDK 7的发布,字节码指令集终于迎来了第一位新成员——invokedynamic指令。这条新增加的指令是JDK 7实现“动态类型语言(Dynamically Typed Language)”支持而进行的改进之一,也是为JDK 8可以顺利实现Lambda表达式做技术准备。在这篇文章中,我们将去了解JDK 7这项新特性的出现前因后果和它的意义。
随着互联网应用的发展,Java分布式远程服务技术受到越来越多的关注,本文将对各种相关实现以示例的形式逐一介绍,并总结其中的优缺点,使读者能够在技术选型时有所准备。这是文章的下篇。
没有回复
关注此讨论 回复