Tag Archives: Java

Get Architecture Done -《分布式Java应用:基础与实践》

按:承蒙林昊( @Bluedavy )看得起,嘱托我为他的大作《分布式Java应用:基础与实践》写序,倍感荣幸之余也颇有压力。读完本书的绝大部分章节后,这相信这会是我今年要向朋友们推荐的关于架构的图书。毕竟我在阿里系工作有年,对几家子公司的技术还算有所了解,内容有没有料还是可以一目了然的分辨的出来的。下文是推荐序。


  

提起诸如”高性能”、”高可用”、”大规模并发”、”可扩展性”这些词汇,我相信多数技术人的心情都是激动而稍有点复杂的,当然,也或许是不屑一顾。毕竟不是谁都有机会面对这些富有挑战的技术场景,也不是每个架构师在面对这些挑战之前都能做好技术上的准备。那些意外故障总是不期而至,疲于奔命的解决问题的场景回顾起来对架构师来说犹如一场噩梦。

  

本书阐述当一个面向数以亿计用户的网站经过几年高速发展,技术团队不得不面临大规模、高并发、高扩展性等挑战带来的技术困境的时候,一个出色的架构师经过多年一线实践后累积的经过时间考验的解决方案以及宝贵的实战经验。在这本书里,你会看到作者在解决一些关乎Web应用问题的指导原则、实践方法、多重工具的综合运用以及作者本人的感悟。要强调的是,本书讲述的内容是一个Web应用从小到大过程中遇到的棘手问题的解决之道,并非宏观解析,亦非屠龙之技。无论您面对的站点是大是小,皆会有参考作用,毕竟大站点会越来越复杂,而小站点总有一天也将变大。

  

如今到计算机书店里走一下,会发现Java架构相关的技术图书业已不少,但仍有理由相信本书内容填补了在Java架构实战方面的空白。在互联网应用大行其道的今天,有些名义上主题为Java架构的图书,要么单从Java本身阐述,缺乏整体应用的大局观;要么是高屋建瓴,从编程思想的高度坐而论道,缺乏实践性;要么是闭门造车之作,缺乏验证性。本书作者林昊多年来致力于推动OSGi在国内的发展,不乏理论技术功底,而后加盟淘宝网 (Taobao.com)的几年间奋战在架构一线,爬摸滚打积累了丰富的实践心得。所以,本书是一本不折不扣的”理论结合实践“之作。

  

考虑国内的技术图书出版环境以及必须尽力迎合读者的预期,写书本身是一件费力不讨好的事情,但将知识传递给更多人无疑是让人快乐的。现在,经过作者近两年的梳理与总结,这本书即将出版,相信您在研读本书之后有所收获并运用到您所面对的Web应用上,也期待将来有更多朋友能够分享架构实践经验,不亦快哉!

EOF
  

从选择 Java 框架谈谈技术人员的”舒适区”

[前言: 技术人员的舒适区是本文的要说的一点内容, 至于 Hibernate 是否优秀, 那是”专家”才有资格讨论的问题]
这几天, 一位 DBA 朋友很是苦恼. 起因是他所在的开发团队的架构师与程序员准备在接下来的项目中继续采用 Hibernate 作为 Java 框架 . 众所周知(有人说,他没有听到过类似的说法, 所以不能是”众”), 从 DBA 的角度来看, Hibernate 对 DBA 来说如同噩梦, 非常的不友好, 所以 DBA 极力推荐 iBatis . DBA 看来, 在该应用场合下, 应用 iBatis 更容易控制数据库的性能, 而程序员们也不用因为性能低下的 SQL 而一遍遍返工修改程序. 可是开发人员们罗列了各种 Hibernate 的优点证明使用 Hibernate 将会是正确的, 带来的开销是值得的.
DBA 也知道, 在过去几年的时间里, 这个开发团队一直在使用 Hibernate , 开发人员熟悉 Hibernae 的方方面面, 他们自认为针对 Hibernate 有足够的控制能力, 不愿意离开现在的技术环境, 这才是他们反对更换到其他环境下的主要原因.
当然, 今天我不是要比较这两个框架的优缺点. 而是要说说技术人员都会面临的一个很有趣的问题:舒适区.
最近几年, 舒适区这个词我们经常从一些”培训大师”的口中听到,引起了无数渴望成功者的共鸣.其实说的倒是自古以来人皆有之的一个共性.

引用I : 现代西方认知心理学认为”舒适区” (Comfort Zone)是指人们一定限度的感知和联想的范围,在这一范围里,个人或集体能有效地运作,不会出现不自在和恐惧,所以人们会本能地寻找自己的”心理舒适区”。

从”舒适区”的角度上看, 架构师/程序员不愿意更换到其他框架下无疑也有一部分心里因素的问题. Hibernate 已经使用了几年, 对他们来说已经相当熟悉了, 迁移到其他环境下不确定性因素很多, 这样”不确定性因素”给他们带来了不安全感. 所以, 他们自然会熟记 Hibernate 的各种优点, 并期望一直使用下去.
不过换个角度上看, 这种保守性无疑在需要快速面对变化的软件业有一定的风险.

引用 II: 每当人们处在舒适区中,就会有安全感、自信心,觉得自己能够胜任所担当的一切。但如果长时间 处于这样的状态,就像留恋在温水盆里游泳的青蛙一样,等有一天自己想跳出来时却已经太迟了!

就拿这个 Hibernate 来说, 最近就有 FireStar 软件公司在指控 JBoss 公司的 Hibernate 3.0 软件侵犯了其连接关系数据库与面向对象的软件的技术专利, 如果 FireStar 胜诉并要求停止开发该软件, 依赖于 Hibernate 的程序员们该怎么办呢? 这个事情就好比青蛙泡在缓慢加热至沸腾的水中一样,代价恐怕是惨痛的.
作为技术人员, 积极的心态面对变化是必需的. 如果死死的守住一个小技术环境, 回报率自然会下降. 从软件业的发展来看, 也是这样.
oops, DBA 也不要把自己捆在一种数据库上……
–End.
–Updated:
针对 一本正经地道听途说 的回复:

我说的“众所周知”的”众”指DBA 而言, 当然,如果用你没有听过就不算”众”倒也说得过去.
你应该不是DBA吧 ? 从一个开发人员看问题,自然是另外一回事。我们曾经面临这样一个案例: 数据库执行计划走错, 需要修改 SQL, Hibernate 上作这样的修改,并不是很快捷(因为不是直接的数据库SQL, 当然现在的 Hibernate 3.0 支持naive SQL 了)。这个案例,如果放到 iBatis 上,可能只是几分钟的事情. 或许,你已经把 Hibernate 玩得灵活无比, 做起变更灵活无比, 那只能说佩服了。真希望每个项目中的人员都能够有这样的天才.
另外,也不一定是 Hibernate “专家”才可以发表评论. 每个人看问题的角度不同. DBA反对 这个东西,或许有他的理由(正如那篇Blog讨论的”舒适区”) . 不要忘了,一个领域是所谓的专家,可能另一个领域就是新手.
或许你认为别人没引用英文信息就是”道听途说”, 那么 “主观推测’ 算什么呢?

从一个DBA的角度读《Spring in Action》(中文版)

同事中的几位大侠翻译了《Spring in Action》, 今天公司组织买了一些,”抢”到了一本。书是刚刚上市不久的–还热乎的呢 :)
有的同事看我也看 Java 方面的书,可能觉得比较好笑。其实,作为一个 DBA,如果要有效地与开发人员的沟通, 不熟悉系统中所用的框架, 就会吃力许多, 刚开始到目前的团队中工作的时候也偶尔会闹笑话. 自己想了解一些 J2EE 框架基本概念的念头也有好久了,正好趁着有资料,学习学习。
今天匆忙读了第四章”征服数据库”, 有几点给我留下了比较深的印象.
1) 数据访问异常的划分很清晰; 应用排错的时候很容易定位到具体问题;
2) 通过一定的设置, 任何一个 SQL 都能够输出到 Log 里, 对于 DBA 的优化调试非常有帮助;
3) 对 DAO 层数据库访问很容易隔离; 一部分程序员可以不用太关心数据库层, 而把这一部分的诸如效率、稳定性交给 DBA 处理; 也的确如书中所说简化了应用系统的复杂度并能提高开发效率;
4) 可重用的 DAO. 对于 DBA 来说, 应该注意因为 DAO 重用有的时候可能会带来一些多余的 SQL 解析. 在 Tuning 的时候需要注意。
我对 Java 一窍不通, 有理解不对的地方请读者指正!

继续阅读