《java计算池技术架构课件》由会员分享,可在线阅读,更多相关《java计算池技术架构课件(50页珍藏版)》请在金锄头文库上搜索。
1、Java计算池技术规划,高可伸缩性Java集群,目录,背景,技术背景 目标 解决方案,技术要点解析 我们业务现状 业务解决方案 技术实施计划表,背景,越来越多的关键任务与大规模应用运行在Java EE技术上。 系统需要越来越高的高可用性(HA) 系统需要越来越好的可扩展性。 saas的发展和应用要求我们建设可伸缩,高可靠,高性能的计算环境运营架构 目前数商平台的基础架构还需要解决可伸缩性问题,技术背景,传统的Java应用服务器集群的方法 基于会话复制的水平扩展 基于会话粘滞的水平扩展 基于cache的集中式会话的水平扩展,基于会话复制的水平扩展,负载均衡器(lvs),应用服务器1 jboss,
2、数据库(mysql),应用服务器2 jboss,应用服务器3 jboss,会话复制,基于会话粘滞的水平扩展,负载均衡器(lvs),应用服务器1 jboss,数据库(mysql),应用服务器2 jboss,应用服务器3 jboss,会话粘滞,基于cache的集中式会话的水平扩展,负载均衡器(lvs),应用服务器1 jboss,数据库(mysql),应用服务器2 jboss,应用服务器3 jboss,中心会话服务器 memcached,传统应用服务器水平扩展对比,传统方法的问题,考虑一下这样的场景: 一台Web服务器可能驻留了很多Web应用,每个Web应用都同时有几百个并发用户,每个用户将生成特定
3、的浏览器会话。 所有这些会话信息都将被备份下来以防服务器实例失败。 更有甚者,会话时时刻刻都在改变:会话创建、过期;会话中的属性添加、修改与移除;为了判断会话何时过期,会话最后修改时间也随着访问时间而改变。 所以性能就成为会话失败转移解决方案中的关键问题。,目标,Java应用的计算进行池化 具有出色的扩展能力,计算能力的扩展能够线性增长或者减小 具有高可用性 不需要应用程序进行代码的定制 很好的失败转移能力 实现应用的无状态 培养综合的,高级的系统管理人员,目标,负载均衡器,负载均衡器,Java计算池,1,1,1,2,2,2,2,3,3,3,3,3,3,3,4,1,数据库池,1,1,2,3,3
4、,2,2,3,4,1,3,1,3,1,1,1,3,3,3,随着处理需求的增加,自动的填加服务器 随着实际处理能力的减少,自动的减少某个应用占用的处理资源 服务器可动态的增加和减少,达到运行时的平衡.,解决方案,技术要点,网络,千兆网络,分层 负载均衡-lvs Terracotta, JVM-level cluster 存储池-hadoop 数据库集群-Continuent,squeoia,mysql 自动化维护管理-cfengine+SVN 监控系统-分布式集群监控系统ganglia 管理系统,SVN/监控/配置引擎自动化管理,Java应用,LVS,入口,LVS,入口,Mysql/oracle
5、,数据集群中间件 服务器,Hadoop DataNode,Hadoop NameNode,Java应用,Java应用,JVM集群服务器terracotta服务集群,JVM集群服务器terracotta服务集群,Mysql/oracle,Mysql/oracle,Hadoop NameNode,Hadoop DataNode,Hadoop DataNode,数据集群中间件 服务器,存储池,DSO JVM,DSO JVM,DSO JVM,计算池系统架构,网络设计,网络结构是整个系统的基础保障 分层结构设计 外部应用网连接应用与外部用户,应用服务器接口eth1 内部应用网连接应用与数据库或存储,应用
6、服务器接口eth0, 数据库服务器接口eth1. 管理网络管理指令,监控通讯,物理上是与内部应用网复用,应用服务器接口eth0,数据库服务器接口eth0 远程控制网控制服务器启动状态,硬件状态监控,应用服务器远程控制接口,数据库服务器远程控制接口 IP网络规划 管理网IP,全网唯一,按机房机架位置分配,一一对应 远程控制网IP,与管理网IP一起整体规划 内部应用网IP,全网规划,按需分配 外部应用网IP,按需分栩 千兆交换/百兆交换 千兆交换能有效提高网络络处理速度 IDC机房出口速度的约束,可以百兆交换,用户,应用,数据库/存储,外部应用网,内部应用网,管理网,远程控制网,负载均衡LVS,负
7、载均衡用开源软件LVS实现 Heatbeat,ldirectord, ipvsadm 负载调度模式, 直接路由,IP隧道 对java应用池做负载均衡 设备需求 2台服务器,千兆网络,至少512MB内存,cpu不限,JVM集群解决方案,Terracotta 是企业级,开源,JVM级的集群解决方案.JVM级集群简化了企业JAVA应用,使得在多个JVM上的应用,就如同在一个JVM上运行一样. Terracotta扩展了java 的内存模型,包括了虚拟机的集群,运用无限量的堆,便得多个虚拟机之间能够作用 用Terracotta的应用集群的编程与开发单个应用一样,没有针对集群的特定代码. Terraco
8、tta 用字节码的处理方式,这种技术是目前许多 面向方面的开发框架,如AspectJ ,AspectWerkz,Terracotta, JVM-level cluster,会话集群的性能,传统应用结构的问题-瓶颈问题,Java应用集群架构Terracotta, JVM-level cluster,Scale-out,Java应用集群功能Terracotta, JVM-level cluster,功能 堆级的复制-共享几乎所有对象 ACID Replication - no new exceptions or error scenarios 中央存储- 保持应用的状态 通讯集中-集中管理共享对象
9、的通讯,没有多点通讯和裂脑产生 Virtual Memory - page in objects on demand Coordination - We have extended our support to wait / notify and other useful tools,App Server,Web App,JVM,DSO Libraries,Shared Objects,Terracotta Server Clustering the JVM,App Server,Web App,JVM,DSO Libraries,Shared Objects,App Server,Web A
10、pp,JVM,DSO Libraries,Shared Objects,集群中会话问题的解决方案对比,传统集群方法与terracotta方法的对比结论,通过基于JVM集群,terracotta方法能够实现具有线性扩展和高性能的Http会话集群 Terracotta 方法的优点: 线性扩展 明显的减少总拥有成本TCO 高性能集群解决方案 不需要改变应用程序, 网络效率没有序列化,只检测变化的区域进行传输 只在需要的地方进行数据的复制,Terracotta 分布式共享对象DSO架构,DSO不需要特殊的技术要求,就能够建立一个高可用的集群,并且对应用来说是完全透明的.比如,缓存和j2ee集群要求所有
11、的对象是序列化的,而DSO处理这些对象就当没有这些需求.正确配置的DSO能够认识和响应应用的计算状态的变化。图中,DSO处理应用程序的执行环境作为第1级缓存。它还提供了一个二级高速缓存,用于传播的计算状态的变化到所有其他节点,Hibernate 的解决方案GETTING MAXIMUM HIBERNATE PERFORMANCE WITH TERRACOTTA,今天,将对象数据映射成数据库的关系型格式是目前最普遍无状态应用的应用架构, 而Hibernate是最受欢迎的对象-关系映射方式。应用这样的设计,有两个原因。首先,数据库的扩展是已知的并且是可调的。第二,数据库的可用性要比应用服务器的可用
12、性更接近于5个9。 尽管这些原因,共享java应用状态的数据库开发人员和应用开发人员的负担还是很高的。 虽然Hibernate减轻了开发者在开发数据库接口上的工作量, Terracotta仍然降低了Hibernate对数据库高可用和可扩展性的依赖, Terracotta 和Hibernate结合简化了应用的开发和极大的提高应用程序的性能。这就是在某些方面降低总成本数量级的原因。,Hibernate的三种方案,Hibernate独立的Hibernate应用 Hibernate with the second level cache clustered by Terracotta for high
13、 availability,通过用Terracotta实现Hibernate的二级缓存 Hibernate with Hibernate-generated POJOs clustered by Terracotta in disconnected mode.通过用Terracotta实现独立的带有Hibernate生成系统的普通JAVA对象集群,Hibernate独立的Hibernate应用,如果我们的应用操作要成为无状态的,那么在每个请求开始的时候就要进行数据库的查询,当应用返回给用户的时候,会产生大量的更新。在下面的有三个应用服务器的例子中,工作流程上就会有6个JDBC的数据库调用。,H
14、ibernate with the second level cache clustered by Terracotta for high availability,在这个案例中,JDBC的调用已经从6个减到了4个。是因为有2个load是从cache得到,terracotta 实现了hibernate的内部二级缓存集群,使得所有节点表现的和一个节点一样。用terracotta,在扩展应用节点的时候,始终保持一致。 因为缓存了一个,就等于缓存了所有,所以不管是数据库用粘滞的负载均衡还是不用, Hibernates caches 将关闭转移负载功能,Hibernate with Hibernate
15、-generated POJOs clustered by Terracotta in disconnected mode.,对数据库的访问已经降为2个,前面三种方案的性能OPERATIONS THROUGHPUT,三种方案的商业价值对比,高峰时段5,000并发 10个应用服务器 Oracle 10g 单8路CPU 70%数据库利用率,传统架构挑战:高峰时段增加5,000并发 10个应用服务器不够,扩充到20 1个 Oracle 10g 8路CPU不够,扩充到2个的RAC, 投资增加:120万美元用于数据库,30万用于服务器,仍然用单个的8路CPU数据库服务器 数据库利用率下隆到30% 应用服
16、务器仍然用10个节点 Terracotta企业版和相关硬件花费50万美元 用Terracotta节省投资100万美元,Terracotta 能做什么,1) 堆级的复制:集群时需要拷贝的对象在堆之间进行 2) 超大的虚拟堆:由于是JVM层次的集群,所以堆要比单个JVM大很多 3) 多种集群锁语法:distributed wait/notify and synchronized 4) 运行实时监控 5) 无需序列化实现集群 6) Find-Grained Changes:由于集群时,terracotta不要求序列化,所以对象拷贝可以细化到对象中的每一个字段,就是说在进行复的时候,当对象发生变化的时候,不需要整个对象进行拷贝,只需要拷贝发生变化的那个field。 HTTP Session Replication - Tomcat, Weblogic, Websphere,jboss,glassfish,Jetty, Geronimo Distr