分布式系统的那些事儿(六) - SOA架构体系

有十来天没发文了,实在抱歉!最近忙着录视频,同时也做了个开源的后台管理系统LeeCX,目前比较简单,但是后续会把各类技术完善。具体可以点击“原文链接”。

那么今天继续说分布式系统的那些事。

我们现在动不动就讲分布式吧?那么SOA是不是必须得聊一聊呢?

面向服务的架构,简称SOA,他是基于服务组件的,把原来那种一个大型应用程序的不同的功能拆分为一些接口,通过这些接口串联起来。

这么做的好处是:

1、重用性大大提高

2、明确了接口的服务定义规则

3、定义了自家公司的api标准

4、降低系统耦合性

5、无状态HTTP

SOA不是技术也不是什么标准,他是一个架构,每个公司对SOA的架构体系都不同,有简单的也有复杂的,更有超越荣耀王者那边的微服务存在。

曾经的SOA,我也参与过,那些接口设计十分复杂,用的是SOAP,数据传输通过xml来封装的,虽然那个时候我还是个新手,但是我坚信这样的不人性化的玩意迟早要被替代,如今restful风格的架构已经完全替代之。

现如今不论是SOA还是微服务。我们都会利用restful风格来做,甚至我们还会定义自己的一套标准规范,强制开发人员定义的所有api接口必须走这样的规范,这么做的好处是可以让前后端分离,开发人员可以只专注自己的接口或者对接工作即可。

跟过时的SOAP相比,restful简直就是简介明了的实现方案。所有的服务都是松耦合,可以为第三方提供各式各样的接口。传播行为也十分轻量级。

restful的设计规范:

1、使用URL来同一表示我们的资源路径,这个URL应该一目了然,让人知道调用这个接口地址就能够做什么事

2、接口的同一定义:

对于增删改查CRUD就有了十分明确的定义,request的请求方式有4种,

POST用于定义create操作;

GET用于定义查询操作;

PUT用于定义修改操作;

DELETE用于定义删除操作;

此外执行的那个业务方法名(action或者controller),必须定义为名字意义(对于这个我个人觉得没必要,各自根据自己公司的业务定义即可,官方的规范很难以执行,而且命名会很纠结)

3、无状态性:

普通的web应用我们都是用的session来管理用户会话,但是restful的SOA中,我们必须得使用无状态会话,sessionless,比如利用redis来实现,或者spring-session

4、返回客户端的状态:

我们得定义浏览器的状态,就像404或者500那样,出错了得有一个状态值,最常用的就是200状态,然后就是501、502、503……这样定义下去,而这个状态需要封装在你的一个json实体中让对方获取后进行解析,不论是ajax或者restful,都可以获得这样的json字符串再转换为想要的pojo

 

时间: 2024-10-12 08:35:44

分布式系统的那些事儿(六) - SOA架构体系的相关文章

微服务与SOA架构

本文讲的是微服务与SOA架构[编者的话]本文是Mark Richards写的微服务与面向服务架构完整报告. 基于服务架构的世界 微服务和SOA都被认为是基于服务的架构,这意味着这两种架构模式都非常强调将"服务"作为其架构中的首要组件,用于实现各种功能(包括业务层面和非业务层面).微服务和SOA是两种差异很大的架构模式,但是他们仍有一些相同的特征. 所有基于服务的架构的一个共性是他们一般都是分布式架构,也就是服务组件都是通过远程访问协议来实现的,例如REST.SOAP.AMQP.JMS.

云计算技术融合下的SOA架构解决方案

随着SOA(Service Oriented Architecture,面向服务的架构)和云计算的迅速发展,各类企业都面临着此项技术发展所带来的巨大挑战和机遇.众多企业技术架构都纷纷转向SOA或与其它架构混合构建的模式,提供充分利用云交付的服务.其中,云计算模式是重要的一个合作架构,云计算提供商在网上创建了巨大的资源,企业可以利用这些架构充分利用资源.IT已经成为业务转变时滞后的部分.为解决此问题,先后进行了结构化计算的变革.面向对象的变革.分布式对象.组件开发.企业资源规划.客户关系管理,最终

WCF服务端运行时架构体系详解[续篇]

终结点分发器在自己的运行时中对请求消息的处理最终肯定体现在相应操作的执行.如果从服务描述的角度来看,操作是一个OperationDescription对象.而服务端分发运行时中的操作则代表的是一个DispatchOperation对象.作为服务描述的一部分,服务所有终结点的所有操作描述(OperationDescription)在ServiceHost创建过程中被创建.而当ServiceHost被正常开始时,这些操作描述最终转换成分发操作(DispatchOperation).而Dispatch

透过ESB看清SOA架构实施的真谛

本文讲的是透过ESB看清SOA架构实施的真谛,[IT168 资讯]随着SOA概念的应声落地,ESB蜂拥而入,虽然它不是一个新的名词但它给人的感觉是既时髦又迷糊,它似乎正在被赋予许多自己不应承载的内容.究竟什么才是ESB?为什么与SOA有着千丝万缕的关系?CIO又如何透过ESB掌控SOA实施? ESB和SOA的关系 关于ESB的概念,网络的报道铺天盖地,专家的的解释也是众说纷纭,ESB一直没有一个准确的定义,就像SOA问世之初到底是框架还是思想一样被人们议来议去,以笔者的个人理解认为ESB是连接人

soa-分布式系统,SOA架构事务问题,远程调用,webservice事务保证

问题描述 分布式系统,SOA架构事务问题,远程调用,webservice事务保证 我现在的系统都是基于java的,数据库有oracle,有mysql. 现在有三个基于java的系统,系统间是通过webservice调用的,也有的是通过httpclient调用的,系统部署在tomcat容器里: 请问:这三个系统互相调用的时候,系统间的事务是怎么保证的,怎么保证数据的一致性,怎么保证,一个系统出现异常,其它系统回滚? 解决方案 websevice本身是没有事务的概念的 如果 你要这样做 可以记录执行

当CIO遇见SOA架构 是该希望还是该恐惧?[2]

第一推动力 采用SOA 的第一推动力更多还在提高企业的软件能力上,离直接推动企业业务能力变革尚有很长的一段距离 张思宇:SOA 是百分之百的技术问题 张嵩:实施SOA要避免把技术风险扩散到业务流程上 在记者前往拜访中国外运股份公司之前,中外运作为国内为数不多实施SOA 并取得成功的企业,被业界广为传播.对中外运实施SOA 有两个不同的描述版本:第一个版本是个生动的故事,中外运由于经营的大宗物流业务所涉及的单证流.资金流.物流等流程的管理太过复杂,现有软件均无法满足业务需求,公司通过实施SOA 解

SOA 架构中的ESB是更好的应用于异构系统集成整合还是用于统一服务调用/基础服务实施

一.讨论主题与观点       写一篇文章.发现一次自觉得有意思的SOA架构方面的讨论,源于昨天AgileEAS.NET SOA 平台群(113723486)里几个群友的一次关于ESB的一次讨论.       大家的讨论观点主要集成在:对于ESB的定义也有类观点,一类观点是把ESB定位于SOA架构之中的基础服务设施(书上都这么讲),还有一类观点就是ESB做为异构系统之间的集成和整合之间,其实ESB本身都能实现两种观点的功能,只是觉得在时下,应该更偏重于那一方面,两者的本质上最大的区别是,同一系统

基于SOA架构采用Extjs展现的权限系统之总体设计探讨

上一篇文章说过,系统由数据层,业务层,服务层,数据契约层,WCF代理层 ,ExtJs代理层,展现层组成.现在我们一起探讨这些层之间的作用. 众所周知,主流的三层结构由数据库,业务层与展现层组成.我认为:SOA架构 在三层的基础上添加服务层,数据契约层,WCF代理层. 现在一起探讨一 下各层之间的作用吧! 数据层:用于与数据库交互的层.提供简洁实用 的数据库访问方法,如:添加,删除,更新,查找等等.我这里的数据层采用 Linq技术,由Linq自动生成数据访问层,节省了不少开发时间哦. 业务 层:用

WCF技术剖析之二十五:元数据(Metadata)架构体系全景展现[元数据描述篇]

在[WS标准篇]中我花了很大的篇幅介绍了WS-MEX以及与它相关的WS规范:WS-Policy.WS-Transfer和WSDL,因为WCF元数据结构体系完全是基于WS-MEX等相关的规范之上.熟悉这些基本的WS规范,对于我们全面.深刻的理解WCF整个元数据架构体系具有十分重要的意义.不仅仅是针对元数据,对于后续章节陆续要介绍的内容,比如事务.可靠会话.安全等,我强烈建议读者在正式进行相关部分的学习之前,先对相关的WS规范作一个大致的了解. 通过对WS-MEX的介绍,我们知道:不论是采用WS-T