Dan Creswell 声称,在把各种组件拼装成一个优秀 SOA 的过程中,“品味至上(taste is everything)”。Dan 说,与某些人所声称的只需对 SOA 采取千篇一律的方法就可以相对的是,如何挑选分布式服务的技术栈、如何对服务“单元”分层等等,在考虑考虑一组指导方针的同时,完全是个品味问题。Dan 最后给出了他自己的 SOA 指导方针。
援引 Dan 的说法:
……我们都愿意相信,架构(以及大部分开发)可以使用一些固定规则、完全重复的风格完成,找到你的模式和技术目录,照着它们做——工作搞定了。这种行为的最终体现是……[想一想]……部署一个 ESB[……] 使你的系统称为一个 SOA。
他认为,即使在好的架构中,数据依赖也是不可避免的;并建议对代码和数据进行垂直分层,使得链中的服务“单元”处于更高的层而与直接依赖数据相隔离。这种形式的分层有其缺陷,因为它假设高阶服务单元的位置不可知性和调用的同步性。为避免与这些假设关联的问题,他建议“我们将每个单元部署在它自己的进程内,并通过依赖者所使用的与之交互的网络端点来访问它们。”他表示,这种部署可通过诸如分割(sharding)、水平伸缩和负载均衡、以及与这些“单元”测试和热补丁相关的可维护性等技术来提高运行时性能。它还允许团队“在不同地方独立开发,减少开发中的冲突”。
在分层代码和数据,以及选择分布式架构上,他建议如下。并提出处理由设计选择所带来的一致性问题你仍需思考的一些小心之处,还提示你需要把分布式计算的谬误考虑进去:
- 考虑一致性、可用性和分区( CAP )需求的相似性
- 数据访问点
- 数据关系
- 需求的管辖权
- 角色和职责(在比 OO 更粗的级别上)
- 特性(如,推荐)
- 业务流程
- 整体业务流程的组成元素
……并总结说“绝大多数系统可能要求不以一种固定方式组合这些指导方针,品味和直觉的作用更大。请务必看看原文。
查看英文原文: Opinion: When Designing Your SOA - Taste is Everything
评论