Iamthedoctor 2020-06-07
SOA——面向服务架构
刘晨 石家庄铁道大学 河北省石家庄市 050043
摘 要
面向服务的架构(SOA)实质就是将一个功能复杂的大型工程分为很多个小的独立的模块,称为服务。这些服务之间通过某种接口或者协议都有很好的相互调用性。维持相互调用连接的被称为数据总线,它以特定的方式获取请求,以及寻找服务。并且SOA不会只局限于一种环境平台,它只是一种工作模式,主要解决的就是多环境平台,多系统功能独立调用的架构模式SOA——面向服务架构
关键词 面向服务 SOA 独立调用
SOA-Service Oriented Architecture
(LiuChen, ShiJiaZhuang TieDao University,Shijiazhuang, Hebei province,050043)
Abstract
The essence of Service Oriented Architecture (SOA) is to divide a large project with complex functions into many small independent modules called services. These services have good mutual calling through some interface or protocol. The so-called data bus, which maintains a call connection with each other, acquires requests and looks for services in a specific way. Moreover, SOA is not limited to only one environment platform, it is only a working mode, and the main solution is the architecture mode SOA-service oriented architecture, which is a multi-environment platform and multi-system function independent invocation.
KEY WORDS Service Oriented SOA Independent Call
一、什么是SOA
1.SOA核心思想
SOA不是一种技术,它只是一种架构模式思想。其主要体现方面构造服务层,让各种独立服务都能被简单调用,这其中蕴含了很多的软件体系架构的基本思想,可重用以及松耦合等方面。
SOA是通过数据总线实现服务请求的,在这个工作流程中,数据总线只是一个中间者,主要过程就是客户发送请求到数据总线,数据总线根据请求匹配服务,服务会直接返回到客户端。
3. 数据总线描述
数据总线是起到调度服务的作用,数据总线不是集成服务,数据总线更新一个调度框架,每个服务需要根据约定向数据总线注册服务,那么如何调用服务呢?其实数据总线就像一个字典结构,数据总线里面一个key对于一个value,key指的是服务名,value则是服务的调度方式,还有一点需要说明的是,数据总线只是指路人,服务是不经过数据总线的,如上图的黄色线的路径。
二、SOA技术
1.访问服务
JCA(Java Connector Architecture) :JCA定义了一套标准的接口,用于让连接器把兼容的应用程序服务器无缝地整合起来,以及提供标准接口允许客户(或者应用程序服务器的应用程序主机)用一种统一的方法使用连接器。JDBC(Java Data Base Connectivity,java 数据库连接): JDBC是一种用于执行
SQL语句的 Java API,可以为多种关系数据库提供统一访问,它由一组用Java 语言编写的类和接口组成。JDBC为程序 开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。专用 API(Application Programming Interface) :专用 API 是针对某个具体软件产品(例如: Louts Notes 、SAP)提供的编程接口。
2.数据服务
XQuery(XML Query): XQuery 是 W3C所制定的一套标准,用来从类XML文档中提取信息,类XML文档可以理解成一切符合 XML数据模型和接口的实体,他们可能是文件或关系型数据库。
3.业务服务
SCA(Service Component Architecture) :SCA 即服务组件架构,它提供了一种编程模型,可以支持基于 SOA的应用程序实现。 SCA支持实现服务组件的各种技术及连接服务组件的各种存取方法。
EJB(EnterpriseJavaBean) :EJB是一个可重用的,可移植的J2EE组件。 EJB由封装了业务逻辑的多个方法组成。 EJB运行在一个容器里,多个远程和本地客户端可以调用这个方法,允许开发者只关注与 bean 中的业务逻辑而不用考虑事务支持、安全性和远程对象访问等复杂和容易出错的事情。
4.消息传输
HTTP(Hypertext Transfer Protocol ): HTTP即超文本传输协议是用于从Web服务器传输超文本到本地浏览器的传送协议。HTTPS(Secure Hypertext Transfer Protocol),又称安全超文本传输协议,其安全基础是SSL,使用 40 位关键字作为 RC4流加密算法。
FTP(File Transfer Protocol): FTP是文件传输协议的简称,用于Internet上的文件的双向传输。
5.消息交换
XML(Extensible Markup Language): XML 即扩展标识语言。是通用标识语言标准(SGML)的一个子集,是描述网络上的数据内容和结构的标准。
XML Schema:XML Schema为 XML文档提供明确的语义限制,确保每一个XML文档都是结构完整、语义合法、内容有效的。
6.安全管理
SSL/TLS: SSL/TLS 利用密钥算法在互联网上提供端点身份认证与通讯保密,其基础是公钥基础设施( PKI)。
三、SOA实际优势
1. 基本优势
对于一个工程,不论是网页端,PC端,Android app端还是IOS端都需要最基本的注册服务。不适用SOA设计思想,需要在每一个使用端加入注册模块,都是相同的代码,并且修改时,所有的使用端都需要修改,这样会很麻烦。
使用SOA设计思想,只需要将注册这个服务放到服务器上,然后写一个都能调用的接口,这样不乱时哪个使用端都能简单的调用注册这一服务,并且只需要修改内部的方法,不需要对每个使用端进行修改。同理可以将都各个独立的模块分割开,让他们能够相互调用,这样就能进行针对性的编写以及修改源代码。
一个服务器可以部署很多服务,并且如果将服务放到服务器上,同时访问该某个服务过载,这个时候还可以单独部署这个服务,或者加入其他服务器分担,如果其他服务不着急,就继续分担该服务。
2. 服务治理
对于服务,当服务很多或者访问一个服务的调用方非常多时,这个时候的服务之间的关系就会非常混乱,服务治理就可以知道哪个调用方调用了哪个服务,这对于软件开发是非常重要的一项数据指标。还可以部署心跳检测、实现负载均衡等高级应用。通过数据总线都能将服务准确识别。
参考资料:
2.深入浅出SOA
(https://www.cnblogs.com/renzhitian/p/6853289.html)
3.什么是SOA
(https://www.cnblogs.com/zhoujg/archive/2011/02/24/1963489.html)