《SOA Patterns》读书笔记
《SOA Patterns》这本书出了有几个月了,可惜一直没找到下载。最近在 dzone.com 上找到一份refcardz ,得以管中窥豹。本文简单的介绍下这本书都写了什么,以及在我眼中哪些章节更值得期待。
--本文以下内容按照SOA Patterns的内容排列--
Basic Service Patterns - 基本服务模式
Aggregator - 聚合器
因为SOA系统只能保证消息送达,而不能保证按顺序送达,所以应该把几个有顺序要求的消息聚合在一起发送。这样避免了额外考虑消息状态和顺序的开销,更有利于异步处理消息。
Service Bus - 服务总线
这个不用说了,现在流行概念ESB。这里主要指ESB消息路由的功能。
Dynamic Routing - 动态路由
可配置、非过滤的消息路由。过滤方式的路由会导致endpoint接收所有的消息,而这个动态路由则位于过滤器之前,而起它的过滤规则可配置,甚至是由endpoint一侧的应用配置。
Event-Driven Consumer - 事件驱动的消费者
阻塞的监听或轮询方式浪费资源。通过基于总线或者特定于应用的callback机制可以更高效的处理消息。
Filter - 过滤器
系统间独立于平台的一种消息处理方式,并且不引入新的系统依赖或者不必要的耦合性。注意过滤器的对外接口要一致,以便灵活组合。
Router - 路由器
根据消息内容、类型等规则解耦不同应用之间的耦合,过滤规则可配置。路由可以是串行或者并行。
Translator or Transformer - 翻译转换器
各种不同系统之间消息可能采用了不同的输入输出格式。翻译转换器的作用就是把这些不同的格式转换为应用理解的格式。它位于endpoint一侧,因为一般来说根据系统和协议的不同,消息采用的格式也有所不同。有了消息翻译转换机制,系统内部就不用考虑外面的消息格式可以专心业务开发。
Architectural Patterns - 架构模式
Asynchronous Processing - 异步处理
同步机制降低性能和可靠性,所以当然能异步尽量异步。一般会需要个消息队列之类的。异步机制能提供可扩展性,包括前端和后端。
Bridge - 桥
包括路由+过滤+转换功能。用来连接通用路径的不同应用,这些应用可能有不同的消息协议、分析处理流程。
Cross-Service Operation - 跨服务操作
不同服务组成原子服务,事务性应用需要这个。
Event-Driven Dispatching - 事件驱动的分发
应用实现为阻塞并且可重入的,订阅一个通信通道。应用直到事件或消息唤醒之前一直处在休眠状态。它更适宜用在单一服务上。如果是多服务,那就应该把他们看作是黑盒的原子服务。
Process Aggregation - 过程聚合
组合多个非序列并且互相依赖的处理步骤来完成一个操作。这个组合操作不必要是原子的,甚至有些步骤在设计阶段都是未知的。
Routing and Filtering - 路由和过滤
通过递归的定义路由+过滤,提供比较正式的消息路由机制。这一机制可能导致无意识的耦合性和资源的巨大消耗。
Replicator - 复制器
在消息需要以相同的定义复制到不同的endpoint上时应该该模式。它作为SOA消息流的一部分实现。
Compound Paterns - 复合模式
Centralized Schema - 集中化schema
一种跨应用边界的schema共享方法,避免额外的数据表示和服务定义。这里的schema是和服务契约脱离的。需要一个转换器把单一的schema转换到特定格式对应的不同应用上,也就是拆分单一schema到不同服务消费者。这种方法还没有实际用过,需要更仔细的看看书研究研究。
Concurrent Contracts - 并行契约
服务的schema要适应不同的服务消费者。因为这些消费者需要不同层次的服务抽象。这也需要一个转换器。这里一个服务schema转换到多种消费方式应该是和Centralized Schema最主要的不同点。深入的内容有待进一步研究。
Decompose Capability - 能力拆分
在业务流程不断膨胀和进化的过程中减少功能拆分影响的方法。在物理上分开的数据模型和服务定义,仅在二者生成特定服务实现的时候才组装,这样二者可以分别进化。
Enterprise Service Bus - ESB
ESB这个不用说了,典型的复合模式。
Fault-Tolerant Service Provider - 容错服务提供者
在冗余的服务提供者之前加负载均衡器。需要保证服务无状态和尽可能的可重入性。
Wrapper - 包装器
把遗留系统包装成通用的无状态服务。做系统集成的都这么干。
可以看到作者提到了Dynamic Routing、Router 、Routing and Filtering这三种模式,看起来他们都和消息路由有关,希望拿到这本书之后能做个完整的对比。Centralized Schema和Concurrent Contracts,也需要看看细节内容才能更好的做个对比。
整本书看下来应该还是最后的Compound Paterns更值得仔细研读。而且从这本书也大概能看出为什么ESB能够得到如此多的推崇,书中大部分的模式比如routing、filtering、trans-都是ESB相关的。还有一点值得注意的是,这些模式都强调了降低耦合的重要性。
BTW: 希望有这本书电子版的同志们能发我一份-_-

Comments
Re
In this moment students purchase essay writing and buy a term paper opting for writing service and very frequently students buy custom essay papers referring to this good topic. It’s really good article, thanks a lot!
Post new comment