Prefix
最近在写集团总部的几个子系统的灾备方案,遇到了大量未知名词,在这里对企业的一些跨BU大型系统和一些涉及的名词做出介绍与解释。
本篇会涉及到以下内容:
和ESB相关的:SOA、ESB、SOAP、REST、RPC
和LDAP相关的:LDAP、(OIM、OID、OAM)、SSO
综合名词:中间件
SOA
SOA是一种设计方法,其中包含多个服务,而服务之间通过配合最终会提供一系列功能。一个服务通常以独立的形式存在于操作系统进程中。服务之间通过网络调用,而非采用进程内调用的方式进行通信。
——《微服务设计》第1.3节:
通俗解释见
如何通俗易懂地解释什么是SOA? - 光太狼的回答 - 知乎
https://www.zhihu.com/question/42061683/answer/251131634
目前有两套SOA理念的实现方式:中心化和去中心化,这两套架构并没有优劣之分,还是要针对企业的根本诉求。
实际上SOA只是一种架构设计模式,而SOAP、REST、RPC就是根据这种设计模式构建出来的规范,其中SOAP通俗理解就是http+xml的形式,REST就是http+json的形式,RPC是基于socket的形式。上文提到的CXF就是典型的SOAP/REST框架,dubbo就是典型的RPC框架,而SpringCloud就是遵守REST规范的生态系统。
以上综合,我的理解:SOA的这种设计模式的核心就是:服务+服务治理。服务指的是把经常会被调用的流程单独放在服务器上叫做服务,这样可以提高复用,各种应用需要的之后通过http或者socket方式调用,并使用json或者xml格式进行数据传输。服务治理是,当服务和调用方变多的时候,需要对他们之间的关系进行管理。
ESB
SOA中心化的实现方式就是ESB,ESB的根本诉求是为了解决异构系统之间的连通性,通过协议转换、消息解析、消息路由把服务提供者的数据传送到服务消费者。所以,ESB是中心化的,很重,有一定的逻辑,但它的确可以解决一些公用逻辑的问题。
SOA去中心化
SOA去中心化的实现方式的根本诉求是扩展性,阿里巴巴的分布式服务框架HSF是一种去中心化的实现方式,也是微服务的最佳实践。分布式服务框架,主要有dubbox、spring cloud,实现后端服务治理的功能。
微服务可见:
https://zhuanlan.zhihu.com/p/30477325
SOAP、REST、RPC
如上所述
实际上SOA只是一种架构设计模式,而SOAP、REST、RPC就是根据这种设计模式构建出来的规范,其中SOAP通俗理解就是http+xml的形式,REST就是http+json的形式,RPC是基于socket的形式。上文提到的CXF就是典型的SOAP/REST框架,dubbo就是典型的RPC框架,而SpringCloud就是遵守REST规范的生态系统。
OID、OIM、OAM
参考这一篇
https://www.linkedin.com/pulse/quick-introduction-oam-oim-oid-yousuf-baig
首先这三个都是Oracle家的产品,应用在企业中,主要是做资源访问权限方面的控制,属于中间件。
Oracle Access Manager (OAM), Oracle Identity Manager (OIM) and Oracle Internet Directory (OID).
这里总结一下这篇文章的大意:
Oracle Access Manager (OAM)
企业中有许多应用,不同的应用又不同的验证用户、授权用户的方式。OAM为这些不同类型应用提供资源访问的单点控制。功能包括:
Single Sign On (SSO):见后
Authentication:验证
Authorization:授权
Real time session management
Auditing
Policy Administration
只要在一台机器上配备了OAM代理,其他机器就可以通过反向代理重定向到该机器上。不需要每台机器都配置OAM。发送给OAM的请求会被回复需要提供用户名和密码。向OAM提供了用户名/密码之后,会被转发给LDAP(AD或者OIM)去验证这个用户。用户被验证之后,相应服务器的网关就会对该用户开启。
Oracle Identity Manager (OIM)
是一个J2EE应用。它提供用户身份的生命周期化的管理,可以自动或者手动地单点完成一个新用户对集团所有应用的注册。它提供联合性的访问控制,比如一个雇员辞职,可以从集团的所有应用中将该雇员的用户信息清除。
Oracle Internet Directory (OID)
它是存储某一种对象的目录,使用oracle数据库。以某一个雇员的应用场景来说,它可以存储雇员的信息,比如名字、角色、任务、安全信息等。各种应用都可以访问OID来获取雇员信息,并完成对用户的验证与控制。因此OAM与OID是集成的。OID是一种Oracle提供的实现LDAP协议的解决方案,AD(Active Directory)是微软家提供的实现LDAP协议的解决方案。
Single Sign On (SSO)
https://en.wikipedia.org/wiki/Single_sign-on
是一种属性,来对多个互相关联但独立的软件进行访问控制。用户可以通过一套ID和密码访问所有系统的所有软件。它通常通过LDAP实现,并将LDAP数据库存储到(目录)服务器上。一个简单版本的SSO可以通过使用cookies的ip网络实现,但要求所有网站共享一套DNS父域。
LDAP
轻型目录访问协议(英文:Lightweight Directory Access Protocol,缩写:LDAP,/ˈɛldæp/)是一个开放的,中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息。
LDAP的一个常用用途是单点登录,用户可以在多个服务中使用同一个密码,通常用于公司内部网站的登录中(这样他们可以在公司计算机上登录一次,便可以自动在公司内部网上登录
中间件(middleware)
参考:https://www.redhat.com/en/topics/middleware/what-is-middleware
https://azure.microsoft.com/en-us/overview/what-is-middleware/
中间件是介于操作系统和运行在其上的应用程序之间的软件。中间件本质上是作为隐藏的翻译层工作的,它支持分布式应用程序之间的通信和数据管理。它有时被称为管道,因为它将两个应用程序连接在一起,因此数据和数据库可以轻松地在“管道”之间传输。
常见的中间件示例包括数据库中间件、应用服务器中间件、面向消息的中间件、Web中间件和事务处理监视器。每个程序通常提供消息传递服务,以便不同的应用程序可以使用消息传递框架进行通信,如简单对象访问协议(SOAP)、Web服务、表示状态传输(REST)和JavaScript对象表示法(JSON)。当所有中间件都执行通信功能时,公司选择使用的类型将取决于正在使用的服务和需要通信的信息类型。这可以包括安全身份验证、事务管理、消息队列、应用程序服务器、Web服务器和目录。中间件还可以用于分布式处理,实时执行操作,而不是来回发送数据。
几种中间件的类型可见上面的第一个链接。
网友评论