Chinaunix首页 | 论坛 | 博客
  • 博客访问: 66364
  • 博文数量: 14
  • 博客积分: 569
  • 博客等级: 中士
  • 技术积分: 335
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-22 14:17
文章分类
文章存档

2013年(1)

2012年(13)

我的朋友

分类: IT业界

2012-03-23 14:25:09

所谓服务粒度是指直接影响到了服务的质量,包括灵活性和效率等。所以选择合适的粒度对服务设计是至关重要的。那么要识别并设计一个粒度适中的服务,主要从以下三个方面来权衡考虑。

1.重用性
粒度的大小直接影响到了服务的可重用性。一个简单的经验法则就是细粒度的服务更容易被重用。换句话说,就是颗粒度越粗,服务越少被重用或者越难以被重用。因为随着颗粒度的增加,越来越多的业务规则和上下文信息会被嵌入到业务逻辑中,服务逐渐变得具有特定的业务意义了。要使用它,我们必须首先了解它到封装了哪些规则,否则我们无法确信这个服务正是我们所需要的。

这并不意味着我们就不要构建粗粒度的服务了,事实上粒度的服务对业务有直接的意义,应该将该粒度的服务暴露出来。同时,如果我们仅仅机械地考虑重用性,将会导致存在大量粒度很小的功能单元,这将对系统整体性能和容量带来严重的影响。

2.灵活性
所谓为灵活性,就是指因情形做出改变的难易程度。具有灵活性是服务设计良好的重要指标,理所当然它也是选择服务粒度的重要标准之一。

众所周知,细粒度的服务更容易组装,为交付新的业务功能或改变业务流程提供了更多的灵活性。但是,仅仅考虑灵活性将会导致存在大量细粒度的服务,这会带来昂贵的开发成本,并且使维护成本等,这对于识别和设计粒度适中的服务来说是至关重要的。

一个有效的经验法则就是:区别对待不同的业务流程,因为并不是每一个业务流程都需要相同的灵活性。如何确定哪些流程需要更多的灵活性,哪些流程不需要,可以参考SAP中有关企业业务流程的一个观点。SAP将流程划分为核心流程和支撑流程。其中,支撑流程是指那些不可或缺的,但又不影响企业差异化的流程,如:财会管理流程等,它们关注的是如何提升生产效率,降低生产成本。因此这些流程在分解的过程中,一旦识别出自治の 、粗粒度的服务就可以结束了,因为它们相对稳定。而核心流程是指企业独特的差异化的、代表企业竞争力的业务流程。它们需要具有支撑流程梗系路堵得分解,以获得最大的灵活性,因为它们是时刻变化着的。

3.性能
灵活性和效率往往是成对出现的,性能因素自然也是限制服务粒度的约束条件之一。

一个服务本身的复杂度及业务到服务映射的复杂度是影响性能的两个主要方面。

服务粒度越大,意味着包含的功能越多,业务逻辑也就越复杂,网络延迟就会增加,同时对客户端的响应会变慢。

而服务粒度越小,也就意味着包含的功能越简单,虽然单个服务的执行效率很高,但从业务服务的意义上来讲,完成一项业务所需的服务调用次数越多,来回请求响应的次数也就会增加。一般来说,服务都是远程调用的,这种来回请求回应的次数增加意味着存在显著的性能开销。

因此,为了保证服务性能可控,一方面需要限制服务包含的功能范围和复杂程度,也就是说服务粒度不能太粗;另一方面需要限制服务调用的次数和复杂度,也就是说服务粒度不能太细。

影响服务粒度决策的因素除了以上三点外,还有很多,在这里小编就不一一介绍了,希望对各位能有所帮助。
阅读(1284) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~