构建可扩展的Java EE应用(二) - 编程入门网
的好处就是memcached所具备的良好的水平扩展能力。由于客户 端做了一层hashing,这使得增加N多的节点到集群变得非常的容易,并不会因为 节点的互连造成负载的增高,也不会因为多播协议而造成网络的洪水效应。
实际上Memcached并不是一款java产品,但它提供了Java client API,这也就 意味着如果你需要在Java EE应用中使用memcached的话,并不需要做多大的改动 就可以从cache中通过get获取值,或通过put将值放入cache中。使用 memcached 是非常简单的,不过同时也得注意一些事情避免对扩展性和性能造成损失: 不要缓存写频繁的对象。Memcached是用来减少对数据库的读操作的,而非写 操作,在使用Memcached前,应先关注对象的读/写比率,如果这个比率比较高, 那么采用缓存才有意义。 尽量避免让运行的memcached的节点互相调用,对于memcached而言这是灾难性 的。 尽量避免行方式的缓存,在这样的情况下可采用复杂的对象来进行缓存,这对 于memcached来说会更为有效。 选 择合适的hashing算法。在默认的算法下,增加或减少服务器会导致所有的 cache全部失效。由于服务器的列表hash值被改变,可能会造成大部分的 key都要 hash到和之前不同的服务器上去,这种情况下,可以考虑采用持续的hashing算法 (http://weblogs.java.net /blog/tomwhite/archive/2007/11/consistent_hash.html) 来增加和减少服务器 ,这样做可以保证你大部分缓存的对象仍然是有效的。 构建可扩展的Java EE应用(二)(4)时间:2011-07-08 blogjava BlueDavyTerracotta Terracotta(http://www.terracottatech.com/)是一个企业级的、开源的、 JVM级别的集群解决方案。JVM级的集群方案意味着可以支撑将企业级的Java应用 部署部署到多JVM上,而且就像是运行在同一个JVM中。 Terracotta扩展了JVM的 内存模型,各虚拟机上的线程通过集群来与其他虚拟机上的线程进行交互 (Terracotta extends the Java Memory Model of a single JVM to include a cluster of virtual machines such that threads on one virtual machine can interact with threads on another virtual machine as if they were all on the same virtual machine with an unlimited amount of heap.)。 Figure 6: Terracotta JVM clustering 采用Terracotta来实现集群应用的编程方式和编写单机应用基本没有什么差别 ,Terrocotta并没有特别的提供开发者的API,Terracotta采用字节码织入的方式 (很多AOP软件开发框架中采用的技术,例如AspectJ和AspectWerkz)来将集群方 式的代码插入到已有的java语言中。 我猜想Terrocotta是通过某种互连的方式或多播协议的方式来实现服务器和客 户端JVM实例的通讯的,可能是这个原因导致了在我们实验室测试时的效果:当超 过20个节点时Terracotta扩展的并不是很好。(注:这个测试结果仅为在我们实 验室的测试结果,你的结果可能会不同。) 并行处理 我之前说过,单线程的任务会成为系统可扩展性的瓶颈。但有些单线程的工作 (例如处理或生成巨大的数据集)不仅需要多线程或多进程的运行,还会有扩展 到多节点运行的需求。例如,在我们实验室测试的一个Java EE项目有一个场景是 这样的:根据他们站点的日志文件分析URL的访问规则,每周产生的这些日志文件 通常会超过120GB,当采用单线程的Java应用去分析时需要耗费四个小时,客户改 为采用Hadoop Map-Reduce使其能够水平扩展从而解决了这个问题,如今这个分析 URL访问规则的程序不仅运行在多进程模式下,同时还并行的在超过10个节点上运 行,而完成所有的工作也只需要7分钟了。 有很多的框架和工具可以帮助Java EE开发人员来让应用支持水平扩展。除了 Hadoop,很多MPI的Java实现也可以用来将单线程 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |