SOA读书笔记-----面向服务架构

 

石家庄铁道大学

 

 

 

 

 

 

 

教师:王建民

专业:软件工程

姓名:夏铭

 

 

 

 

 

 

 

 

 

 

 

 

SOA——面向服务架构

摘要:面向服务的架构(SOA)实质就是将一个功能复杂的大型工程分为很多个小的独立的模块,称为服务。这些服务之间通过某种接口或者协议都有很好的相互调用性。维持相互调用连接的被称为数据总线,它以特定的方式获取请求,以及寻找服务。并且SOA不会只局限于一种环境平台,它只是一种工作模式,主要解决的就是多环境平台,多系统功能独立调用的架构模式。

 

关键字:架构模式设计;SOA

 

 

一、 什么是SOA

1.SOA核心思想

SOA不是一种技术,它只是一种架构模式思想。其主要体现方面构造服务层,让各种独立服务都能被简单调用,这其中蕴含了很多的软件体系架构的基本思想,可重用以及松耦合等方面。

2.  SOA简单描述

 

 

由上面简单图例可以看出SOA是通过数据总线实现服务请求的,在这个工作流程中,数据总线只是一个中间者,主要过程就是客户发送请求到数据总线,数据总线根据请求匹配服务,服务会直接返回到客户端。

3.  数据总线描述

对于上文可能对数据总线的工作原理产生很多疑问,下图对其中工作原理进行更加详细的阐述。

 

 

数据总线是起到调度服务的作用,数据总线不是集成服务,数据总线更新一个调度框架,每个服务需要根据约定向数据总线注册服务,那么如何调用服务呢?其实数据总线就像一个字典结构数据总线里面一个key对于一个valuekey指的是服务名,value则是服务的调度方式,还有一点需要说明的是,数据总线只是指路人,服务是不经过数据总线的,如上图的黄色线的路径。

二、SOA技术

1.访问服务

JCA(Java Connector Architecture) JCA定义了一套标准的接口,用于让连接器把兼容的应用程序服务器无缝地整合起来,以及提供标准接口允许客户(或者应用程序服务器的应用程序主机)用一种统一的方法使用连接器。JDBCJava Data Base Connectivityjava 数据库连接): JDBC是一种用于执行

SQL语句的 Java API,可以为多种关系数据库提供统一访问,它由一组用Java 语言编写的类和接口组成。JDBC为程序 开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。专用 API(Application Programming Interface) :专用 API 是针对某个具体软件产品(例如: Louts Notes SAP)提供的编程接口。

2.数据服务

XQueryXML Query): XQuery W3C所制定的一套标准,用来从类XML文档中提取信息,类XML文档可以理解成一切符合 XML数据模型和接口的实体,他们可能是文件或关系型数据库。

3.业务服务

SCA(Service Component Architecture) SCA 即服务组件架构,它提供了一种编程模型,可以支持基于 SOA的应用程序实现。 SCA支持实现服务组件的各种技术及连接服务组件的各种存取方法。

EJB(EnterpriseJavaBean) EJB是一个可重用的,可移植的J2EE组件。 EJB由封装了业务逻辑的多个方法组成。 EJB运行在一个容器里,多个远程和本地客户端可以调用这个方法,允许开发者只关注与 bean 中的业务逻辑而不用考虑事务支持、安全性和远程对象访问等复杂和容易出错的事情。

4.消息传输

 HTTPHypertext Transfer Protocol ): HTTP即超文本传输协议是用于从Web服务器传输超文本到本地浏览器的传送协议。HTTPSSecure Hypertext Transfer Protocol),又称安全超文本传输协议,其安全基础是SSL,使用 40 位关键字作为 RC4流加密算法。

FTPFile Transfer Protocol): FTP是文件传输协议的简称,用于Internet上的文件的双向传输。

5.消息交换

XMLExtensible Markup Language): XML 即扩展标识语言。是通用标识语言标准(SGML)的一个子集,是描述网络上的数据内容和结构的标准。

XML SchemaXML SchemaXML文档提供明确的语义限制,确保每一个XML文档都是结构完整、语义合法、内容有效的。

6.安全管理

SSL/TLSSSL/TLS 利用密钥算法在互联网上提供端点身份认证与通讯保密,其基础是公钥基础设施( PKI)。

 

三、SOA实际优势

1.  基本优势

对于一个工程,不论是网页端,PC端,Android app端还是IOS端都需要最基本的注册服务。不适用SOA设计思想,需要在每一个使用端加入注册模块,都是相同的代码,并且修改时,所有的使用端都需要修改,这样会很麻烦。

使用SOA设计思想,只需要将注册这个服务放到服务器上,然后写一个都能调用的接口,这样不乱时哪个使用端都能简单的调用注册这一服务,并且只需要修改内部的方法,不需要对每个使用端进行修改。同理可以将都各个独立的模块分割开,让他们能够相互调用,这样就能进行针对性的编写以及修改源代码。

一个服务器可以部署很多服务,并且如果将服务放到服务器上,同时访问该某个服务过载,这个时候还可以单独部署这个服务,或者加入其他服务器分担,如果其他服务不着急,就继续分担该服务。

2.  服务治理

对于服务,当服务很多或者访问一个服务的调用方非常多时,这个时候的服务之间的关系就会非常混乱,服务治理就可以知道哪个调用方调用了哪个服务,这对于软件开发是非常重要的一项数据指标。还可以部署心跳检测、实现负载均衡等高级应用。通过数据总线都能将服务准确识别。

3.SOA例子优势

看到这样一个段子——SOA养猪法。

一群猪,只需要修个场地圈起来,雇人喂泔水,喂猪草。来了一批新猪,不吃泔水,只吃猪草,这个时候需要教工人,怎么喂养这些猪。又来了一批猪,除了泔水,猪草,还要喝快乐水,这时候需要教人怎么喂这些猪

但是我们可以一开始修3个场地,睡觉,泔水,猪草三个地方。雇2批人,回收泔水,割猪草。然后修路,每天到了特定时间去这些地方。来了只吃猪草的猪,就不带它们去泔水场地。来了喝快乐水的猪,就修快乐水场地,雇人生产快乐水。还是到了时间去这些地方就行了。

这两个方法可以看出很多不同,第一个就是对软件内部进行修改,这样会很麻烦,并且可能破坏整个项目。第二个就是对已有的功能进行添加,并且对其独立。不论来了什么品种的猪都无法影响这些功能内部完整性。

 

总结:SOA更加灵活,不需要关注什么环境平台,不需要知道服务内部方法,只需要通过数据总线进行调用即可,程序之间松耦合,关系更加清晰简单。还能很快检测哪个服务的问题。

 

猜你喜欢

转载自www.cnblogs.com/birdmmxx/p/12905509.html