模块化Java:声明式模块化
本文是模块化Java系列文章的第4篇,介绍的是声明式模块化。文中描述了组件如何以声明的方式来定义并组织在一起,而无需让代码依赖于OSGI API。
作者 Gavin Terrill 译者 曹云飞 发布于 2007年11月14日 上午12时45分
Michael Nygard是一位作家和No Fluff Just Stuff公司的演讲者,他最近发表了一篇文章,讨论了两种提高web应用的性能和伸缩性的方法: Cache Farms和Read Pools。
Cache Farms的思想是在一个集群中的所有应用节点共享一个外部的缓存而不是每个节点维护自己的缓存。这样可以减少冗余并减少使用应用服务器的堆空间:
通过从应用服务器进程中移出缓存,你可以从多个实例中访问相同的缓存,减少重复。把那些缓存对象从应用服务器的堆空间中除去,可以让堆空间变小,同时减少了垃圾收集时间。如果你使用分布式的外部缓存,那么你可以减少更多重复。
Read Pools利用了大多数数据驱动的应用执行读操作远多于写操作的特点。通过在一套专门的只读的复制的数据库上执行读操作,减轻了写数据库操作的负担:
你如何建立一个读缓冲池?很简单!Read Pools仅仅使用了数据库自己内建的复制功能。基本上,你只需要配置写控制器,把它的归档日志(或者你的数据库对他们的称谓)转移到读操作缓冲池数据库。
Michael指出读操作缓冲池数据库的更新也许不是实时的,这依赖于你所使用的数据库,但是这也许是一个完美的可以接受的平衡。MySQL用户可以利用使用MySQL-Proxy分离读/写的特征来实现读操作缓冲。
Michael 的总结如下:
查看英文原文:Scaling Web Applications using Cache Farms and Read Pools对于可伸缩性而言,有一个互为对照的答案:“在web层和应用层向外扩充(Scale out),在数据层向上扩充(Scale up)。”我希望这句话可以启示大家找到其他提高性能和容量的方法。(译者注:Scale out,指向系统中增加多个节点,比如向分布式系统中添加一台服务器;Scale up,指向系统中的一个节点中增加资源,通常包括给一台计算机增加CPU或者内存,也可以指扩充所运行线程的数量。译自Wikipedia)
本采访是在伦敦举行的QCon2009上记录的,Ian Robinson和Jim Webber探讨了如何将Web作为整合平台以及REST在理论上和实践中的好处。
项目管理对于项目成败至关重要,但实践中每个项目都有自己的独特性,没有现成的解决方案可以套用。书中从应对实际风险的角度出发,讲述了从项目启动、项目规划到项目结束的整个管理流程,展示了作者的思考过程。本迷你书从原书中精选出5个章节。
在这个演讲中,Fred将会揭示敏捷的一些外在因素,并会重点关注敏捷获得成功的内在原因。从案例研究和真实的项目经验来看,Fred认为:工具、管理体系都不能让你变得敏捷。敏捷的成功,植根于士气高涨、充分授权的工作者身上,他们能够以不同以往的方式思考问题。
Eben Hewitt的新书《Java SOA Cookbook》从Java实现的角度讨论了面向服务架构。Eben在书中讨论了SOA基础、工具、最佳实践和SOA治理等主题。
Mark Richards的新书《Java消息服务》第二版覆盖了JMS的许多主题, 包括发布和订阅模式以及点对点模式,消息过滤和事务等。InfoQ与Mark谈论了跟他的新作。
2 条回复
关注此讨论 回复