马丁·福勒是谁?正如我在上一篇文章中所写的,他是《重构》、《分析模式》、《企业应用架构模式》、《领域特定语言》等一系列知名书籍的作者,他很少谈论操作系统、数据库、互联网等底层的东西,很少听他讲高并发和海量用户,也没有开发过什么知名软件,却被奉为软件开发的“教父”。如果软件是分层的,他其实生活在顶层:这一层挤满了很多程序员,因为越往下,路越难走。必须耐得住寂寞,经得起诱惑,对某一领域有着极其深刻的研究。但MartinFowler之所以能够在应用层做主,是因为他有一项特殊的能力:他善于将一些软件开发实践总结成“概念”。显然,这需要大量的抽象。MartinFowler最著名的作品可能就是《重构》了。他对软件编程中各种修改代码的方法进行了抽象、归纳和命名,影响了世界上每一位开发者。他还有一本书,名叫《企业应用架构模式》,MartinFowler分门别类地总结了企业应用开发中的一些最佳实践。比如领域逻辑模式方面的“事务脚本”、“表模块”、“领域模型”、“服务层”等。说说ORM的“单表继承”、“类表继承”、“活动记录”等等。MartinFowler绝对是在应用层开发的程序员的楷模!前天浏览MartinFowler的个人网站(https://martinfowler.com/)时,发现了这样一个宝藏:《分布式系统模式模式》(PatternsofDistributedSystems)。不由得乐了:看来MartinFowler也没闲着,又开始整理模型了。这次更加宏观,直接进入了分布式系统!但仔细一看,却有些失望。不是马丁福勒自己干的!是由一位名叫UnmeshJoshi的ThoughtWorks顾问撰写,MartinFowler在模式方面提供了一些指导和帮助。这两天看完,觉得质量还是挺高的。比如文章开头我讲了分布式系统的几个常见问题:进程崩溃、网络延迟、进程挂起、时钟异步,进而导致分布式系统。如何解决这些问题值得商榷。比如非常经典的Write-AheadLog模式,可以用来解决进程崩溃时的数据持久化问题:先把数据作为命令放入持久化的日志文件中,这样即使KVStore进程崩溃了,也可以仍然可以从从日志中恢复数据访问。人们很清楚程序员的交流语言是代码,所以马上给出简单的代码片段帮助理解细节,真是贴心。classKVStore...publicKVStore(Configconfig){this.config=config;this.wal=WriteAheadLog.openWAL(config);this.applyLog();}publicvoidapplyLog(){List
