分布式系统核心:面向服务的分布式架构,什么是面向服务的架构

什么是面向服务的架构

面向服务的架构(Service Oriented Architecture,SOA)体系结构基于服务组件模型,将应用程序的不同功能单元(称为服务)通过定义良好的接口契约联系起来。接口是采用中立方式进行定义的,独立于实现服务的硬件平台、操作系统和编程语言,使得构建在这样系统中的服务可以以一种统一的、通用的、灵活的方式进行交互。SOA组件模型具备以下特点。

·可重用:一个服务创建后能用于多个应用和业务流程。

·松耦合:服务请求者到服务提供者的绑定与服务之间应该是松耦合的。因此,服务请求者不需要知道服务提供者实现的技术细节,例如程序语言、底层平台等,只需要知道服务名与服务接口。服务的部署、迁移、扩容极其便利。

·明确定义的服务接口:服务交互必须是明确定义的。SOA服务组件提供标准的服务接口,服务请求者根据服务名、标准服务接口来获取服务。Web服务描述语言(Web Services Description Language,WSDL)用于描述服务请求者所要求的绑定到服务提供者的细节。

WSDL不包括服务实现的任何技术细节。服务请求者不知道也不关心服务究竟是由哪种程序设计语言编写的。

·基于开放标准:当前SOA的实现形式基于开放标准,例如,公有Web Service协议或私有开放服务标准协议。可以采用第一代WebService定义的SOAP、WSDL和UDDI,以及第二代Web Service定义的WS-*实现。

·无状态的服务设计:服务应该是独立的、自包含的请求,在实现时它不需要获取从一个请求到另一个请求的信息或状态。服务不应该依赖于其他服务的上下文和状态。当产生依赖时,它们可以定义成通用的业务流程、函数和数据模型。

几十年来,企业IT组织一直期望试图引入企业级应用的IT标准,以实现同化系统、提升效率和敏捷性,但实际收效甚微。20世纪80年代,关系型数据库系统成为主流数据库系统,企业数据模型(EnterpriseData Model,EDM)项目也因此大行其道。EDM为企业的所有业务实体定义了一个全局数据模型,并在公司的所有组织和系统之间共享该模型。但这些EDM项目都以失败而告终。在今天,我们发现,企业有多少数据库,就有多少种数据库的模式。数据库的模式根本无法实现统一。

20世纪90年代,基于企业级中间件的标准同化企业应用程序“企业软件总线(EnterpriseSoftware Bus,ESB)”应运而生。ESB试图通过确立独立于软件模块间的、独立于技术、统一的企业级通信标准,从根本上解决应用程序的集成问题。但事实上,今天看来,几乎所有的企业不仅有应用程序异质问题,还有中间件异质问题。很多情况下,CORBA等中间件只能针对单个项目解决点对点的集成问题,并未建立全局的软件总线。在很多企业中,不兼容的中间件系统几乎与不兼容的应用程序一样多。

SOA不是一项技术,也不是一个标准,而是一种架构。SOA架构独立于标准,提供了架构的蓝图。架构蓝图切开、分块和组合企业应用程序层,将组件“服务”化。SOA中的服务与业务功能相关联,但在技术上独立于业务功能的实现。

SOA的基本概念

Dirk Krafzig等人所著的Enterprise SOA一书中,对SOA做了如下定义。

SOA是一个软件架构,包含了4个关键概念:应用程序前端、服务、服务库和服务总线。一个服务包含一个合约、一个或者多个接口以及一个实现。

·应用程序前端:业务流程的所有者。

·服务:提供业务的功能,可以供应用程序前端或者其他服务使用。

·实现:提供业务的逻辑和数据。

·合约:为服务客户指定功能、使用和约束。

·接口:物理地公开功能。

·服务库:存储SOA中各个服务的服务合约。

·服务总线:将应用程序前端和服务连在一起。

下图描述了SOA架构中的组成关系。

分布式系统核心:面向服务的分布式架构,什么是面向服务的架构_第1张图片

在SOA架构中,必须有以下重要实体角色,如下图所示。

·服务请求者(Service Customer):服务请求者是一个应用程序、一个软件模块或需要一个服务的另一个服务。它发起对服务管理中心的服务查询(服务寻址),通过服务寻址后,与目标服务建立通道来绑定服务,调用远程服务接口功能。服务请求者根据服务接口合约来获取执行远程服务。

分布式系统核心:面向服务的分布式架构,什么是面向服务的架构_第2张图片

·服务提供者(Service Provider):服务提供者是一个可通过网络寻址的进程实体(托管服务进程),与部署在托管服务进程下的SOA服务组件一起实现服务功能。服务提供者自动将服务组件提供的服务名发布到服务注册中心,以便服务请求者可以发现和访问该服务。服务提供者接收和执行来自服务请求者的请求,通过接口提供服务。

·服务管理中心(Service Management Center):服务管理中心是服务提供者与服务请求者的联系中介,为服务提供者提供服务注册管理,同时为服务请求者提供服务寻址查询。提供服务管理域中全部服务资源注册管理表,以及服务查询请求接口,允许感兴趣的服务请求者查找服务资源。

SOA体系结构中的每个实体都扮演着服务提供者、请求者和管理中心这3种角色中的某一种(或多种)。SOA体系结构中的操作如下。

·服务注册:为了使服务可访问,需要服务提供者向服务管理中心注册服务,以使服务请求者可以发现和调用它。

·服务寻址:服务请求者定位服务,方法是查询服务注册中心,找到满足其服务需求的服务资源网络地址。

·服务交互(远程服务调用):在完成服务寻址之后,服务请求者根据与目标服务提供者建立的网络通道来调用服务。

最后

给大家分享一篇一线开发大牛整理的java高并发核心编程神仙文档,里面主要包含的知识点有:多线程、线程池、内置锁、JMM、CAS、JUC、高并发设计模式、Java异步回调、CompletableFuture类等。

文档地址:一篇神文就把java多线程,锁,JMM,JUC和高并发设计模式讲明白了

码字不易,如果觉得本篇文章对你有用的话,请给我一键三连!关注作者,后续会有更多的干货分享,请持续关注!

你可能感兴趣的:(中间件,java,编程语言,大数据,高并发编程)