SOA架构理解
理解SOA架构,了解ESB概念,明白SOA与微服务的区别和联系,了解SOA与热门技术的结合与应用。
1、 面向服务的架构SOA
SOA(Service Oriented Architecture)即面向服务的架构,是一种架构模型。其中包含多个服务和企业服务总线ESB(Enterprise Services Bus),单个服务只与ESB进行通信或交互,而ESB负责根据用户(customer)的请求提供相应的数据。
SOA架构最主要的有优点是低耦合,即每一个服务都有自己的“边界”,服务之间交互使用接口,由ESB进行管理与调用;高度的可拓展性,SOA架构将功能分为一个个互相独立的服务,这也就提高了代码的重用性和可拓展性,降低了开发难度和维护强度。
面向服务架构的主要技术和标准:
服务提供者:发布自己的服务,并且对服务请求进行响应。
服务注册中心:注册已经发布的web service,对其进行分类,并提供搜索服务。
服务请求者:利用服务中心查找所需要的服务,然后使用该服务。
发布操作:为了使服务可访问,需要发布服务描述以使服务使用者可以发现它。
查找操作:服务请求者定位服务,方法是查询服务注册中心来找到满足其标准的服务。
绑定操作:在检索到服务描述之后,服务使用者继续根据服务描述中的信息来调用服务。
SOAP: 简单对象访问协议 (Simple Object Access Protocol)
WSDL: Web服务描述语言 WSDL (Web Services Description Language)
UUDI: 统一描述、发现和集成 (Universal Description,Discovery and Integration)
WSDL用来描述服务;UDDI用来注册和查找服务;而SOAP,作为传输层,用来在消费者和服务提供者之间传送消息。一个消费者可以在UDDI注册表(registry)查找服务,取得服务的WSDL描述,然后通过SOAP来调用服务。
ESB(Enterprise Service Bus)企业服务总线:ESB是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。
BPM(Business Process Management)业务流程管理:所谓业务流程管理是指根据业务环境的变化,推进人与人之间、人与系统之间的整合及调整经营方法与解决方案的IT工具。
Portal 门户:门户是一个基于WEB的应用程序,它提供个性化、单点登录、不同来源内容整合及存放信息系统的表示层。
WS-I Basic Profile:由Web服务互用性组织(Web Services Interoperability Organization)提供,是SOA服务测试与互用性所需要的核心构件。服务提供者可以使用Basic Profile测试程序来测试服务在不同平台和技术上的互用性。
J2EE 和 .Net: J2EE和 .NET平台是开发SOA应用程序常用的平台,像J2EE这类平台,不仅为开发者自然而然地参与到SOA中来提供了一个平台,还通过他们内在的特性,将可扩展性,可靠性,可用性以及性能引入了SOA世界。新的规范,例如 JAXB(Java API for XML Binding),用于将XML文档定位到Java类;JAXR(Java API for XML Registry)用来规范对UDDI注册表(registry)的操作;XML-RPC(Java API for XML-based Remote Procedure Call)在J2EE1.4中用来调用远程服务,这使得开发和部署可移植于标准J2EE容器的Web服务变得容易,与此同时,实现了跨平台(如 .NET)的服务互用。
2、 企业服务总线ESB
企业服务总线(Enterprise Services Bus)是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。为了便于理解,我认为可以把ESB看做一条河流横在消费者与商户之间,河上提供大大小小的船只负责根据消费者的命令,从不同的商家拿取货物并整合,然后送到消费者的手中。事实上,ESB不是一种解决方案,它应该是一种调用服务的通信模块。
ESB是服务的请求者和服务的提供者的中间组件,它屏蔽了服务的请求者对服务的提供者的服务实现方式的“窥探”,使得服务变成为了一个黑匣子,服务的请求者不必了解或明白服务的提供者如何接收服务请求者的命令,如何解析命令,如何调取数据,如何集成不同格式的数据,如何返回统一格式的数据等。如果没有总线,服务的请求者不仅需要自己去请求服务,还需要知道服务请求格式以及服务返回数据等问题,这样不但是不利于管理的点到点服务,还降低了用户体验。
3、 SOA与微服务
微服务架构可以看做是SOA的进一步发展,微服务的理念是将业务实现单一功能服务,然后通过Http等协议,将服务根据服务的请求者的请求,之间进行通信和数据交互之类的活动,最后呈现给用户。微服务架构强调“业务彻底的组件化和服务化”,就像是一台笔记本电脑的组成一样,笔记本内部的内存,硬盘等零件是可以独立更换或升级而不影响整台电脑的使用一样。除此之外,微服务的“服务组合”的思想也可以影响到使用微服务架构开发的系统,也就是说,微服务的特性使得使用微服务开发的系统中开发语言不统一,单独的数据库,提供给开发者更多的开发***。
而SOA比较注重于服务的重用性,以及为保证交互的质量而支持大部分消息协议、统一的共享数据库强大的ESB通信模块等与微服务架构的不同之处。所以,倘若笼统地描述SOA与微服务之间的区别,可以形容为,微服务是SOA架构去掉了总线。
4、 SOA与云计算
SOA的优势在于服务的重用性、消息的规范化以及服务敏捷的重构能力,而云计算则的特性是云即服务:基础设施即服务(Infrastructure As A Service),平台即服务(Platfrom As A Service),软件即服务(Software As A Service),同时,云计算有着大批量数据计算的优势,从关键技术来看,SOA的重构,松耦合的优势作为系统上层,而可以进行大批量计算和数据处理能力的云计算在底层进行数据整合、计算等工作。同时,SOA会降低商业系统开发和维护的成本,而云计算具有按资源(带宽)收费的经济效益。
参考文献及资料
[1] GB/T 7714王磊. SOA与云计算的结合[J]. 信息技术, 2013(07):118-120.
[2] https://blog.csdn.net/lzb348110175/article/details/96738781
[3] https://www.cnblogs.com/itjeff/p/12074520.html
[4] https://www.cnblogs.com/jiangzhaowei/p/9168837.html
[5] https://www.cnblogs.com/itjeff/p/12074520.html