2KB项目,专业的源码交易网站 帮助 收藏 每日签到

使用 SOA 思路重构你的架构

  • 时间:2019-01-23 18:45 编辑:2KB 来源:2KB.COM 阅读:418
  • 扫一扫,手机访问
  • 分享
摘要:
SOA 英文原文:Refactoring your architecture understanding SOA

它已经不是什么新鲜事,我通过主机(或者主服务器之类)  获得大部分专业知识和基本工具为某个公司及其联署公提供支持。

但对于目标性的扩展,我们需要超越这些共享层并开始定制他们的产品和服务,在软件开发无关性方面可以帮助你更多的面向服务体系结构,亦或是SOA。

因此,本文的目的何在?基于我们认为如何从我们目前的已经是综合的架构进行转变,(转变)到一个更加强大的服务层。

标识服务


为了转入实施要做的第一步,是标识出应纳入作为独立的服务的第一组功能的真实身份。

通常,当到了引入新功能时候就是新的服务的机会出现的时候,或者对于改变的要求的安置/执行的成本太高的时候:例如,假如你想增加从你网站发送SMSes的能力,一个好的服务应该是仅处处理接受一组输入事件, 通过webservice 组装消息并联络真实的 SMS提供者商以达到转发消息的目的;另一种好的例子是身份:如果你正在为不同的用户组需要以同步方式进行同步而挣扎,一个很好的解决方案是,以集中的身份并至少是提供认证服务。

数据


另一个典型的问题是,当你拥有一个集中式的架构的时候,该如何管理和组织数据。

在SOA术语里,通常数据时在服务之间共享的,但这并不意味着每个服务没有自己的数据层:经常看见一些非常老式的RDBMS(关系型数据库管理系统)横跨所有的服务共享,其中一些使用较传统的解决方案,像NoSQL数据库;主要是为了达到更好的性能和不同的数据检索模式。

想想有模型的遗留应用程序,这些(模型)可以被终端用户进行广泛定制,通常实行的EAV(Entity–Attribute–Value,实体-属性-值)模式,陷进了性能瓶颈的泥沼,然而像MongoDB或者CouchDB这样的文档数据库能完美的解决该问题。

如果你正在运行的,例如,一个电子商务系统,你可能需要一个像MSSQL这样的稳固和强大的系统,然而摆在眼前的,在运行的确实MongDB数据库:一旦用户购买了产品,通过web服务将它存进了MSSQL。

服务需求


在SOA中一个典型的环节,我们需求问题的答案(为我们的请求读取响应),用一个简单的解决方案就能克服这个问题:当一个服务需要另一个服务的时候,我们会想到API(应用程序接口)。

例如,你的前端可能提供了身份认证,然而Identity manager是一种为你的架构的多层次身份的以后总服务:当前端需要对用户进行身份认证时,它将直接依赖于Identity 服务,他或者她提交给前端的凭据要求(Identity 服务)对用户进行认证。

传统APIs分为几种类型:

  • 杂乱星:“杂乱型”API并不遵从结构化规则(老式HTTP上的XML 或者一次数据库写入复制和以JSON格式读取);当你需要开始新的,小型的和简单的API的时候,他们非常有用
  • HTTP API:在资源服务方面,语义暴露了他们的域模型,拥抱HTTP规范
  • REST:超媒体服务
  • SOAP:遵从SOAP规范,在客户端和服务器之间使用严格的结构的服务

无论什么时候,如果你决定使用SOA,你将发现你自己总是在和API打交道:在层完全不知道对方域名的情况下提供数据交换机制它是最简单的方式。  

服务侦听


另一个非常常见的场景,是当服务“侦听”的时候,等待其他的架构体系的组件发送通知:你可能已经想到了消息队列和消息通知,你猜对了。

当我们拥有像 RabbitMQ这样的工具,在架构体系中的不同部分之间收集和转发通知的帮助,一个事件驱动的进程就能完成 : 通过Rabbit,服务能转发一条消息到一个队列,依次类推,通过一个守护进程,将消息分发掉。

想想早些时候我所提到的,SMS转发机制可以很好地适应这种情况:考虑到SMSes,一旦用户在你的前端完成一定的动作SMS将被发送(通过获得信任,订货电子商务等等);一旦用户完成一个动作,一条通知将被发出,无论是谁需要侦听该条消息,都将对(该条消息)进行捕捉和处理。

到目前为止一切顺利


在我们快而新的通往我们架构的集成服务的旅途中,我们发现我们自己灰常开心:他并非是什么新鲜事,我们为我们新的、隔离的服务使用 RabbitMQ和Symfony2,我们已经标识了一些服务,能在他们自己的、解耦的上下文环境中运行。

想想在SOA里,顺便提一下,带来了一连串的问题,像架构方面的思考,而不是应用程序:你不会为你的应用程序部署一个新的版本,你更新架构的某一部分;你的系统是解耦的,从代码到你的程序对其处理。而在开发环境的并发症是什么呢?我应该使用哪种监控工具来了解所有的组件是否同时工作?还有呢?

对于每个人面对的和我们将要面临的,对这些问题,那有足够的空间,我将会非常感兴趣的,对我们的方法和我们在自己的上下文中所具有的眼光。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部