SOA到底是个啥

SOA(Service-Oriented Architecture),中文全称:面向服务的架构。

SOA让把系统分离成不同的服务,使用接口来进行数据交互,最终达到整合系统的目的。

专业的词总是让人懵懵懂懂,看起来高大上,但就是不知道在BB什么.... 我们换种讲法。

很多开发人员,做系统的时候是这样合作的:

小明负责【考勤】,小王负责【薪资】。

小王说: 小明,我要用【考勤】数据,你做好了没?

小明说: 早做好了,表名叫Attenance, 字段A代表员工ID,字段B代表....自己去数据库查。

相信很多人看到这种情景很熟悉, 数据交互完全通过数据库,模块件没有完全分离,错综复杂!用不了多久,你的系统就成了一碗美味的“意大利面”

要说明一下,这种开发方式不符合SOA的理念,那么SOA是如何处理的呢?

1.考勤作为单独模块,成为一个考勤服务,发布了一个考勤数据接口(WebServices)

2.小王需要使用考勤数据,调用考勤服务的接口即可

SOA是模块分离,模块间要进行数据交互,通过接口来完成!

很多程序员看了估计会不屑一顾,我们从不SOA,也过了这么多年,并没有什么问题!看起来SOA并没有什么卵用!

如果你这样想,我们来看看接下来这些需求,要如何应付。

1. 平台越来越庞大,有10几个开发人员都要用你负责模块的数据。

如果没有统一接口,你要同所有人讲你的数据库结构。一旦变更,你还要通知所有人

2. 系统运行越来越慢,老板说分离【考勤】和【薪资】使用不同的数据库和服务器

由于功能间没有严格分离,数据交互也是直接通过数据库。分拆系统基本不可能,所以也就无从谈论分开部署

3. 客户的其他系统需要调用平台的数据进行计算,你还要开放数据库结构吗?

功能没有严格分离,当系统发展到一定层次,开发就会感觉越来越吃力,往往牵一发而动全身,也不符合软件设计原则!

但是如果你的系统本身就很小,一周就搞定了!要实行SOA,搭建个架构花费了一个月,这就得不偿失了!

是否实行SOA,是要根据平台的定位去调整的!如果你的平台定位不高,强制实行SOA,就好比高射炮打蚊子,不仅浪费炮,还TMD打不到蚊子!所以不要“过度设计”,“恰如其分”很重要。

到这里,大家都已经懂得SOA的主要思想:严格分离模块,通过接口来链接。那么,如何链接呢?

上面我讲的WebServices是一种常用的链接方式。除了WebServices还有,ESB,JMS,以及最近几年大热的REST方式。

具体的链接方式,我们就不多讲了。有兴趣可以去查百度百科。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-24 16:15:40

SOA到底是个啥的相关文章

RESTFUL 和SOA初探

这篇文章是转载的,restful简单的说就是url明确的指向资源.soa还不好用自己的话解释,但明显不是这样,好吧,我自己的理解就是soa就是访问网站的一个接口.以访问一个blog list为例子, restful的url可能是 http://localhost/bloglist 而 soa的可能是 http://localhost/serverlet/showbloglist  soap的是访问一个server提供的接口,该接口处理你的request  而restful访问的就是一个blogl

SOA框架

SOA是什么 估计很多人都听说过SOA这个词了,但是很多人还是不知道到底什么是SOA.开发人员很容易理解为是一个Web Service,但是这绝对不是SOA,那顶多只能算是SOA的一种实现方法.那么,到底什么是SOA呢?最近正在看SOA Source Book,本篇我将介绍一下SOA到底是什么?如有错误,欢迎指正. SOA是Service-Oriented Architecture的首字母简称,它是一种支持面向服务的架构样式.从服务.基于服务开发和服务的结果来看,向服务是一种思考方式. 服务 是

微服务相关技术

微服务是一种架构设计风格,微服务的特征,我们尊敬的布道师——马丁富勒大神已经给出了很好的总结. 简单的说,就是一组被集中管理的.规模较小的服务,每个服务只完成内聚性很强的一组功能,并通过网络彼此协作,时间所限,这里就不对每一条展开解释了,以后有机会可以单独聊下这个话题.这里先把原文链接和一份不错的翻译推荐给大家,大家感兴趣的话可以看一下,原文 http://martinfowler.com/articles/microservices.html,翻译 http://www.36dsj.com/a

SOA服务总线设计

背景 基于总线的设计,借鉴了计算机内部硬件组成的设计思想(通过总线传输数据).在分布式系统中,不同子系统之间需要实现相互通信和远程调用,比较直接的方式就是“点对点”的通信方式,但是这样会暴露出一些很明显的问题:系统之间紧密耦合.配置和引用混乱.服务调用关系错综复杂.难以统一管理.异构系统之间存在不兼容等.而基于总线的设计,正是为了解决上述问题.总线则作为中枢系统,提供统一的服务入口,并实现了服务统一管理.服务路由.协议转换.数据格式转换等功能.这样能够将不同系统有效地连接起来,并大大降低了连接数

WebService到底是什么?

一.序言 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成分.但是不得不承认的是WebService真的是一门新兴和有前途的技术,那么WebService到底是什么?何时应该用? 当前的应用程序开发逐步的呈现了两种迥然不同的倾向:一种是基于浏览器的瘦客户端应用程序,一种是基于浏览器的富客户端应用程序(RIA),当然后一种技术相对来说更加的时髦一些(如现在很流行的Html5技术),这里

SOA系统架构

一.SOA原理与应用 1.SOA原理 SOA(Service-oriented architecture,面向服务架构). SOA的价值在于跨越了不同应用系统.不同技术的整合,这种整合改变现有的商业模型. SOA是在计算环境下设计.开发.应用.管理分散的逻辑(服务)单元的一种规范.这个定义决定了SOA的广泛性.SOA要求开发者从服务集成的角度来设计应用软件,即使这么做的利益不会马上显现.SOA要求开发者超越应用软件来思考,并考虑复用现有的服务,或者检查如何让服务被重复利用.SOA鼓励使用可替代的

SOA架构设计经验分享—架构、职责、数据一致性

阅读目录: 1.背景介绍 2.SOA的架构层次 2.1.应用服务(原子服务) 2.2.组合服务 2.3.业务服务(编排服务) 3.SOA化的重构 3.1.保留服务空间,为了将来服务的组合 4.运用DDD+GRASP进行分析和设计(防止主观的判断导致错误的假设) 5.SOA分布式下的数据一致性 5.1.分布式事务(基于DTC的分布式事务) 5.2.事务补偿(提供正向或反向的操作来让数据在业务上是一致的) 5.3.异步EDA(基于异步事件流来实现柔性的分布式事务) 6.总结 1.背景介绍 最近一段时

REST会是SOA的未来吗?

好像无论我们到哪儿都能听到这样的说法:REST将会是SOA的未来.很多刊物也将REST和SOAP与WS*[1]标准进行比较,但这些比较看起来都太过简单了.近来出现了两种较为主流的方法--本真REST(true REST)以及将REST作为面向服务的技术方法(又称REST Web服务[2]).本文讨论的重点为:是否其中一种方法能够改进SOA实现. 面向SOA的本真REST 本真REST当然是对面向资源架构的一种实现,而并非一种纯粹的技术决策.所以当讨论本真REST时,真正应该讨论的问题是:其基础支

SOA实践之基于服务总线的设计

在上文中,主要介绍了SOA的概念,什么叫做“服务”,“服务”应该具备哪些特性.本篇中,我将介绍SOA的一种很常见的设计实践--基于服务总线的设计. 基于服务总线的设计 基于总线的设计,借鉴了计算机内部硬件组成的设计思想(通过总线传输数据).在分布式系统中,不同子系统之间需要实现相互通信和远程调用,比较直接的方式就是“点对点”的通信方式,但是这样会暴露出一些很明显的问题:系统之间紧密耦合.配置和引用混乱.服务调用关系错综复杂.难以统一管理.异构系统之间存在不兼容等.而基于总线的设计,正是为了解决上