dubbo+zookeper与webservice的简单对比

webservice

  webservice,在开发中,对于同一个war包中的对象方法我们可以直接调用,但是很多情况下需要在不同项目或者不同服务器进行相互调用。webservice技术就是实现不同服务器项目直接的调用和交换数据,即使语言,协议,部署环境不同也可以实现。

    webservice实现远程调用的步骤分三部(三次握手)

     1.请求获取服务对象

     2.返回服务对象

     3.调用服务对象方法

    webservice缺点 
    传统的webservice实现远程调用的方法耦合性较高,web层与服务层直接请求,在请求服务层获取服务对象的过程中,如果服务层因多种原因如网络延迟、请求      过多出现迟迟没有返回对象,就会造成请求延迟。解决方案就是使用第三方也就是dubbo服务治理中间件实现解耦和。

dubbo+zookeper

     dubbo服务治理中间件是在soa分布式面向服务项目中用来作为服务远程调用的中间件,它加上zookeper注册中心实现整个分布式项目服务的发布注册和调用功能,核心思想就是实现解耦和。

    

dubbo的主要功能
1.RPC远程调用,类似webservice,底层原理是hessian
2.使用NIO 也就是newIO,底层实现原理为netty

IO与NIO的区别
1.IO为直接进行数据连接,占用资源较大
2.NIO指的是异步通讯,通过缓存进行数据交互,也实现了解耦

zookeper的作用
1.作为注册中心注册服务对象
2.注册后的对象以URL的形式存储在zookeper中

在分布式项目中使用dubbo+zookeper实现远程调用的大概步骤如下
1.项目启动(先启动服务层),服务容器如toncat容器、spring容器启动会自动将服务注册到zookeper中,
2.web层消费(订阅)服务,
3.dubbo返回给消费者服务对象
4.消费者消费调用服务对象方法

     在dubbo中提供了一个monitor监控中心用于统计服务的调用和调用时间。它是阿里提供的一个已经开发好的项目war包,只需要部署到toncat中运行就能自动监控zookeper的服务调用。

     考虑到互联网项目的实际要求,提高项目的高可用和容错性,可以对zookeper进行集群部署,同时,因为zookeper保持服务对象的形式为URL字符串,可以在dubbo和zookeper之间加入redis缓存URL,进一步提高容错性。

posted @ 2018-09-06 09:25  朱哥哥666  阅读(548)  评论(0编辑  收藏  举报