SOA框架对比

xinqing623 贡献于2015-09-23

作者 xinqing623  创建于2015-08-31 07:08:04   修改者xinqing623  修改于2015-09-01 08:00:00字数5459

文档摘要:网上查找资料看了一下,mule的功能很强大,只需要设计一些流程,编写很少量的代码,就可以完成一个服务的发布过程,并且支持的协议非常的多,但是关于mule的文档资料,大部分都是英文版的,看起来有点费劲。Tuscany虽然是开源的,国内应用的不是很多,网上查找的资料也都只是最简单的一些介绍,应用场景不明,也缺少Eclipse开发的相应的插件,目前版本还是2013年发布的,基于组件发布服务,可以支持多种语言。服务的治理和监控方面比较欠缺,网上没有找到相关方面的资料。Dubbo在国内,使用的用户很多,文档也比较全面,有很多例子可以参考,默认使用dubbo的协议,也支持其他的例如rmi,webService等,目前只支持java版本的,有dubbo-admin对服务进行治理,dubbo-monitor对服务进行监控,使用zookeeper对所有的服务进行注册和订阅,提供服务发现的功能。dubbomuletuscany基本概念Provider暴露服务方称之为“服务提供者”。
关键词:

网上查找资料看了一下,mule的功能很强大,只需要设计一些流程,编写很少量的代码,就可以完成一个服务的发布过程,并且支持的协议非常的多,但是关于mule的文档资料,大部分都是英文版的,看起来有点费劲。 Tuscany虽然是开源的,国内应用的不是很多,网上查找的资料也都只是最简单的一些介绍,应用场景不明,也缺少Eclipse开发的相应的插件,目前版本还是2013年发布的,基于组件发布服务,可以支持多种语言。服务的治理和监控方面比较欠缺,网上没有找到相关方面的资料。 Dubbo在国内,使用的用户很多,文档也比较全面,有很多例子可以参考,默认使用dubbo的协议,也支持其他的例如rmi,webService等,目前只支持java版本的,有dubbo-admin对服务进行治理,dubbo-monitor对服务进行监控,使用zookeeper对所有的服务进行注册和订阅,提供服务发现的功能。 dubbo mule tuscany 基本概念 Provider暴露服务方称之为“服务提供者”。 Consumer调用远程服务方称之为“服务消费者”。 Registry服务注册与发现的中心目录服务称之为“服务注册中心”。 Monitor统计服务的调用次调和调用时间的日志服务称之为“服务监控中心”。 Model表示托管各个服务的运行时环境。 Service是用来处理服务请求的基本单位,它调用各个组件进行服务请求的处理。 Transport管理消息的接收和发送,数据转换的过程也是在Transport中通过调用Transformer完成的。 Transformer用于转换消息的内容。 Router使用Filter基于消息中的属性信息进行消息的分发。 Component是Service的核心部件,是Service的业务逻辑的实现。 Flow是Mule 3.0新引入的,包含一个消息源(Message Source)和多个消息处理器组成的处理器链。 Implementation:SCA 组件(Component)的实现方式,一个 SCA 组件可以由各种语言或技术平台实现,如:POJO,EJB,Spring Bean,bpel 流程,各种脚本语言等等。 Binding:是 SCA 的绑定(Binding)规范的实现,SCA 服务(Service)和引用(Reference)的绑定方式,即一个 SCA 服务可以暴露为 Web Service,Java RMI 服务,http 资源,jms 消息等等,一个 SCA 引用也可以通过 Web Service,RMI 调用,http 调用,jms 调用等方式调用远端服务。 Databinding:数据绑定方式,这是 Tuscany 提出的概念,一般用与在 Binding 中定义参数的传输格式,比如 Web Service 的 Binding 一般用 XML 格式,SCA 的 Binding 一般用 SDO 格式,Jsonrpc 的 Binding 一般用 Json 格式等等。 Interface:是 SCA 的接口(Interface)规范的实现,SCA 服务(Service)和引用(Reference)的接口暴露方式,一般有 Java,WSDL 等类型。 功能 Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色 a) 服务中介 将业务逻辑和消息发送分离; 屏蔽服务的消息格式和协议; 提供任意位置的服务调用; 提供协议桥接。 b) 数据转换 在应用间交换不同格式的信息; 操作消息的负载内容,包括加密、压缩和编码转换; 在异构的传输协议的数据类型间格式化消息。 c) 消息路由 基于消息内容和复杂规则路由消息; 消息的过滤、聚合以及重新排列序号。 d) 服务创建和托管 Apache Tuscany 提供开放式可扩展的运行环境以支持现在和将来的各种技术.这将解除应用程序对底层技术的依赖和偶合,使得跨技术网络平台的组装成为可能并大大简化.  多种构件实现, 包括Java, BPEL, XQuery, JavaScript 多种通讯协议, 包括RMI, Web Services, JSONRPC, Feed, EJB, CORBA 多种接口语言, 包括Java , WSDL 多种数据绑定, 包括XML, JavaBeans, JAXB, SDO, XMLBeans, JSON, AXIOM 暴露端点、EJB、Spring Bean以及POJO作为服务; 作为轻量级的服务容器进行服务托管。 Apache Tuscany集成其他技术包括OSGi, Spring, JEE和Web 2.0. 该项目提供了从小型到企业级业务的广谱支持. 解决方案提供商,中间件平台提供商和最终用户和开发人员都可获益. Tuscany是一轻载的平台,可以独立运行或嵌入在WebSphere, Geronimo, Tomcat和Jetty等应用服务器中. 特点 (1) 连通性: 注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小 监控中心负责统计各服务调用次数,调用时间等,统计先在内存汇总后每分钟一次发送到监控中心服务器,并以报表展示 服务提供者向注册中心注册其提供的服务,并汇报调用时间到监控中心,此时间不包含网络开销 服务消费者向注册中心获取服务提供者地址列表,并根据负载算法直接调用提供者,同时汇报调用时间到监控中心,此时间包含网络开销 注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外 Mule是一个基于Java的轻量级企业服务总线和集成平台。它的主要特性包括: 1. 基于J2EE1.4的企业消息总线(ESB)和消息代理(broker); 2. 可插入的连接性,支持20多种传输协议,比如:jms、jdbc、tcp、udp、multicast、http、servlet、smtp、pop3、file、xmpp等; 3. 支持任何传输之上的异步,同步和请求响应事件处理机制; 4. 支持Axis或者Glue的Web Service; 5. 灵活的部署结构,包括Client/Server, P2P, ESB 和Enterprise Service Network; 6. 与Spring 框架集成:可用作ESB 容器,也可以很容易的嵌入到Spring应用中; 7. 使用基于SEDA处理模型的高度可伸缩的企业服务器; Tuscany 是平台无关的可嵌入框架,可以在各种 Hosting Platform 上运行,如 Tomcat,JBoss,WAS 等 Web 容器上运行,也可以在 J2SE 环境下运行。 · Tuscany 的核心模块提供了 SCA 规范的 API 实现,Tuscany 系统的 SPI 接口,一些系统基本实现(如事件,工厂类,存储等),以及一整套扩展机制,这些扩展机制为 Tuscany 整合各个平台的服务提供了基础。 注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送事件通知消费者 注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表 注册中心和监控中心都是可选的,服务消费者可以直连服务提供者 (2) 健状性: 监控中心宕掉不影响使用,只是丢失部分采样数据 数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务 注册中心对等集群,任意一台宕掉后,将自动切换到另一台 注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯 服务提供者无状态,任意一台宕掉后,不影响使用 服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复 (3) 伸缩性: 注册中心为对等集群,可动态增加机器部署实例,所有客户端将自动发现新的注册中心 8. 强大的基于EIP模式的事件路由机制等。 服务提供者无状态,可动态增加机器部署实例,注册中心将推送新的服务提供者信息给消费者 扩展性 为了支持更灵活的扩展性,当前dubbo拆分了非常多的project,下面以官网的总体模块图来说明各个模块的作用。 dubbo-common 公共逻辑模块,包括Util类和通用模型。 dubbo-remoting 远程通讯模块,相当于Dubbo协议的实现,如果RPC用RMI协议则不需要使用此包。 dubbo-rpc 远程调用模块,抽象各种协议,以及动态代理,只包含一对一的调用,不关心集群的管理。 dubbo-cluster 集群模块,将多个服务提供方伪装为一个提供方,包括:负载均衡, 容错,路由等,集群的地址列表可以是静态配置的,也可以是由注册中心下发。 dubbo-registry 注册中心模块,基于注册中心下发地址的集群方式,以及对各种注册中心的抽象。 dubbo-monitor 监控模块,统计服务调用次数,调用时间的,调用链跟踪的服务。 Tuscany 的扩展是完全松散耦合的,框架本身提供了大量的扩展实现,用户也可以在自己的系统中扩展 Tuscany 的实现,只需要遵循 Tuscany 的扩展规范以及 API 接口。 Tuscany 主要有以下几个方面的扩展: · Implementation:SCA 组件(Component)的实现方式,一个 SCA 组件可以由各种语言或技术平台实现,如:POJO,EJB,Spring Bean,bpel 流程,各种脚本语言等等。 · Binding:是 SCA 的绑定(Binding)规范的实现,SCA 服务(Service)和引用(Reference)的绑定方式,即一个 SCA 服务可以暴露为 Web Service,Java RMI 服务,http 资源,jms 消息等等,一个 SCA 引用也可以通过 Web Service,RMI 调用,http 调用,jms 调用等方式调用远端服务。 dubbo-config 配置模块,是Dubbo对外的API,用户通过Config使用Dubbo,隐藏Dubbo所有细节。 dubbo-container 容器模块,是一个Standlone的容器,以简单的Main加载Spring启动,因为服务通常不需要Tomcat/JBoss等Web容器的特性,没必要用Web容器去加载服务。 整体上按照分层结构进行分包,与分层的不同点在于: container为服务容器,用于部署运行服务,没有在层中画出。 protocol层和proxy层都放在rpc模块中,这两层是rpc的核心,在不需要集群时(只有一个提供者),可以只使用这两层完成rpc调用。 transport层和exchange层都放在remoting模块中,为rpc调用的通讯基础。 serialize层放在common模块中,以便更大程度复用 · Databinding:数据绑定方式,这是 Tuscany 提出的概念,一般用与在 Binding 中定义参数的传输格式,比如 Web Service 的 Binding 一般用 XML 格式,SCA 的 Binding 一般用 SDO 格式,Jsonrpc 的 Binding 一般用 Json 格式等等。 · Interface:是 SCA 的接口(Interface)规范的实现,SCA 服务(Service)和引用(Reference)的接口暴露方式,一般有 Java,WSDL 等类型。 Tuscany 在 Web 2.0 方面主要提供了以下几类扩展: · Implementation 扩展:script implementation 提供了各种脚本语言的实现,如 Javascript,python,ruby 等,widget implementation 提供了将一个 SCA Component 封装成 widget 的能力。resource implementation 提供了一种简单的 http 资源的实现。 · Binding 扩展:atom binding 提供了 atom 方式的绑定实现,dwr binding 提供了利用 dwr 框架进行 ajax 调用的能力,http binding 提供了直接进行 http 访问的能力,jsonrpc binding 提供了在 Javascript 中使用 jsonrpc 进行 ajax 调用的能力。 Databinding 扩展:json 格式的 databinding 提供了将 json 格式的数据与其他格式(如 xml,Java Bean,SDO 等)之间互相转换的能力。 Mule(社区) Mule企业版 dubbo tuscany 领先的开源ESB 获取源代码 开发工具支持 高可用性支持 缓存和事务支持 Java管理扩展 部署管理 运行时性能管理 性能监控 控制面板 社区连接器 企业连接器 访问控制 社区论坛 在线知识库 服务包和热补丁 协议支持 30多种 30多种 常用的Dubbo,Hessian,HTTP,RMI,WebService,Thrift,Memcached,Redis 各种协议(可插入协议) 适用技术 适用各种技术 适用各种技术 POJOS,EJB,Spring Beans EJB,POJOS,Spring Beans,PHP,C++,COBOL等 与其他技术集成和扩展 同企业版,功能上稍弱一些,一些连接器没有提供 非常多的连接器,易于与其他不同的技术集成和扩展 为了支持更灵活的扩展性,当前dubbo拆分了非常多的project,目前只支持java 模块化架构,易于集成不同的技术和扩展,集成了20种web技术 技术资料 官方英文版 官方英文版 比较多 少,官方英文版

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享文档获得金币 ] 1 人已下载

下载文档