服务版本治理
提供服务后不久,这些服务的用户就开始需要进行一些相应的更改。需要对问题进行修复,需要添加新功能,需要重新设计接口,还需要删除不需要的功能。服务反映业务的情况,因此,随着业务发生变化,服务也需要进行相应的更改。
不过,对于服务的现有用户,需要采用巧妙的方式进行更改,以便不会干扰他们的成功操作。同时,现有用户对稳定性的需求不能对用户希望使用其他功能的需求造成障碍。
服务版本治理可满足这些相互矛盾的目标。版本治理允许满足服务现有功能的用户继续以不变的方式使用服务,并同时允许对服务进行改进,以满足具有新需求的用户。当前服务接口和行为将保留为一个版本,而同时会将较新的服务作为另一个版本引入。版本兼容性允许使用者调用不同但兼容的服务版本。
版本治理可帮助解决这些问题,但同时也带来了一些新问题,例如需要进行迁移工作。
服务迁移
即使使用版本治理,使用者也不能期望永远提供和支持某个服务(或更准确地说,希望使用的一个服务版本)。服务提供者最终一定会停止提供此服务。版本兼容性可以帮助延迟这个“最后审判日”,但却不能消除这个问题。版本治理并不会使服务开发生命周期过时,而会允许生命周期扩展到多个连续的代。
当使用者开始使用服务时,将会创建对该服务的依赖关系,必须对此依赖关系进行管理。管理技术可用于有计划地周期性迁移到服务的较新版本。此方法还允许使用者利用添加到服务的新功能。
不过,即使在采用了最佳治理的企业中,服务提供者也不能仅依赖于使用者迁移。由于各种原因(遗留代码、人力、预算、优先级),一些使用者可能无法及时地进行迁移。这是否意味着提供者必须永远支持相应的服务版本?提供者是否可以在所有使用者已进行了迁移后直接禁用相应的服务版本?
这两个极端都不甚合意。一个不错的折衷办法是为每个服务版本采用有计划的弃用和退役计划,如服务部署生命周期中所述。
服务注册中心
服务提供者如何提供和宣传其服务?服务使用者如何查找其希望调用的服务?这些都在服务注册中心的职责范围内。服务注册中心将担当可用服务清单的角色,并提供调用服务的地址。
服务注册中心还可以帮助进行服务版本的协调工作。使用者和提供者可以指定它们需要或提供的版本,注册中心将随后确保仅列举出使用者所需版本的提供者。注册中心可以管理版本兼容性,跟踪版本间的兼容性并列举出使用者所需的版本或兼容版本的提供者。注册中心还可以支持服务状态,如测试状态和(如前面提到的)已弃用状态,且仅向希望使用服务的使用者提供具有这些状态的服务。
当用户开始使用服务时,将在此服务上创建一个依赖关系。每个使用者清楚地知道其所依赖的服务,但在企业全局范围内,这些依赖关系可能很难检测,更谈不上管理了。注册中心不仅列出服务和提供者,还可以跟踪使用者和服务间的依赖关系。这个跟踪功能可以帮助回答一个很古老的问题:谁在使用此服务?可识别依赖关系的注册中心能向使用者通知提供者方面的更改情况,如某个服务变成了已弃用状态。
IBM 的 WebSphere Service Registry and Repository 是一款用于实现服务注册中心的产品。它担当服务定义的存储库以及这些服务的提供者的注册中心角色。它提供了一个中心目录,供开发人员查找可重用服务,并且在运行时使用,以便服务使用者和企业服务总线 (ESB) 查找服务提供者及调用服务的地址。
服务消息模型
在服务调用中,使用者和提供者必须就消息格式达成一致。当独立开发团队分开设计两个部分时,他们很容易陷入难于就公共消息格式达成一致的困境。再加上数十个使用典型服务的应用程序和使用数十个服务的典型应用程序,您就不难理解直接协商消息格式如何会变成需要全力投入来完成的任务。
用于避免消息格式混乱的一种常见方法是使用规范数据模型。规范数据模型是一组公共数据格式,独立于任何应用程序,由所有应用程序共享。这样,应用程序就不必就消息格式达成一致,可以直接同意使用现有规范数据格式。规范数据模型处理消息中的数据格式,因此仍然需要对消息格式的其他部分达成一致(如 Header 字段、消息有效负载包含什么数据以及数据如何安排),但规范数据模型可极大地促进协议的达成。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
事件驱动框架和SOA在空军的应用
空军正在利用SOA来改善数据共享,并实时跟踪战机,美国空军机动司令部的Michael Marek解释了企业可从中学习的经验。
-
揭秘New Relic APM技术细节
New Relic应性能管理(APM)套件主要用于Web软件开发。它允许用户在面向服务的架构(SOA)上跟踪关键事务性能,并且支持代码级别的可见性来评估特定代码段和SQL语句对性能的影响
-
仅凭SOA和云无法解决业务数据管理风险问题
SOA和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。
-
如何避免云计算与SOA冲突