在开发中,对于同一个war包中的对象方法我们可以直接调用,但是很多情况下需要在不同项目或者不同服务器进行相互调用

webservice

webservice技术可以实现不同服务器项目直接的调用和交换数据,即使语言,协议,部署环境不同也可以实现。webService是使用soap协议而不是Http协议 ;WebService曾经认为是解决异构系统间整合的最佳解决方案,不依赖于第三方任何系统的支持(不需要额外部署专门的MQ或者RDBMS服务器),大家只需要按照官方的规范,即可完成相互之间的数据交互。但是,webService存在的问题是,使用SOAP需要对消息进行多层次的封装,webservice之间进行数据交互的效率受到了严重的影响。虽然,webservice能够交互的数据格式多种多样,基本也不存在数据格式不支持的情况。但是,webservice的效率及其webservice的超时等问题,还是困扰了系统厂商。其主要的特点是跨语言、跨平台的。项目中不推荐使用,可用于不同公司间接口的调用;

webservice实现远程调用的步骤分三部(三次握手) 1.请求获取服务对象 2.返回服务对象 3.调用服务对象方法

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

随着交互系统的增多,这种方式对系统的侵入性越来越大,关系更为错综复杂,很容易出错

HttpClient

HttpClient用来调用服务,它是模拟一个浏览器,发送Http的请求,服务器会返回请求的一个响应结果;Httpclient然后把响应的结果取出来。HttpClinet相当于一个客户端,使用Http协议调用系统中的方法HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。随着httpclient的出现,以及JSON等数据格式的大范围使用,基于http的消息接口,逐渐被大家所青睐。一方面是因为,直接使用httpclient可以模拟浏览器的数据操作与封装;另一方面使用基于http的消息,可以借助于http的成熟、可靠、开源的web集群解决方案来提升总体的效率。还有,就是基于http的消息格式,几乎不受任何限制,常规应用的各种消息格式,基本都能直接使用基于http的消息进行传递。目前,大部分PaaS平台,所提供的API接口,实际上就是使用基于Http的JSON消息,来进行数据传递的。

dubbo+zookeper

使用dubbo。使用rpc协议进行远程调用,直接使用socket通信。传输效率高,并且可以统计出系统之间的调用关系、调用次数。使用Java语言开发,只能用于Java语言开发的项目间的通信,不具备跨语言,跨平台的特点!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的服务调用。

内部系统间或遵守dubbo规范的系统间适用性较强。

我的理解就是内部系统服务模块之间用dubbo,当然现在springcloud火力,如果是springcloud框架,当然用springcloud的组件;调用第三方服务用httpClient,webservice尽量不用或少用

webservice、httpClient、dubbo的区别的更多相关文章

  1. 超级详细通信协议解析webservice和dubbo通信协议区别

    简单说下接触webservice的背景吧,因为之前的接口对接更多的是成熟的接口品牌像是阿里巴巴.腾讯.聚合数据等,他们接口规范一般都是基于restful进行接口对接.什么是restful接口,可以通过 ...

  2. 企业数据总线(ESB)和注册服务管理(dubbo)的区别

    企业数据总线(ESB)和注册服务管理(dubbo)的区别 转载 2015年11月04日 09:05:14 7607  企业数据总线(ESB)和注册服务管理(dubbo)的区别 2015-03-09 0 ...

  3. 1.SpringCloud与Dubbo的区别

    1.SpringCloud与Dubbo的区别 初始定位不同: SpringCloud定位为微服务架构下的一站式解决方案:Dubbo 是 SOA 时代的产物,它的关注点主要在于服务的调用和治理 生态环境 ...

  4. webservice和dubbo区别

    webservice  不需要搭建注册中心,是一个服务框架,主要内容有soap协议,uuid注册中心,wsdl文件. dubbo   需要搭建注册中心,可以是zookeeper,redis.它是一个分 ...

  5. HttpRequest,WebRequest,HttpWebRequest,WebClient,HttpClient 之间的区别

    HttpRequest,WebRequest,HttpWebRequest,WebClient,HttpClient 今天我们来聊一下他们之间的关系与区别. HttpRequest 类 .NET Fr ...

  6. Webservice和EJB的区别

    1. WebService可以说是跨平台的,因为它采用的是XML技术,说穿了就是把你的请求按照该WebServece的标准将参数传过去,然后服务器返回结果,当然了最重要的是参数的传递和结果的返回都是采 ...

  7. httpclient和httpUrlConnect区别

    HttpURLConnection的用法 一.创建HttpURLConnection对象 URL url = new URL("http://localhost:8080/TestHttpU ...

  8. Java实现远程服务生产与消费(RPC)的4种方法-RMI,WebService,HttpClient,RestTemplate

    目录 一. 通过rmi实现远程服务的生产与消费 远程服务提供者实现. 创建rmi-provider项目(Maven) 远程服务消费者实现 创建rmi-consumer项目 二. 通过WebServic ...

  9. webservice和restful的区别

    REST是一种架构风格,其核心是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的复杂性,提高系统的可伸缩性.REST提出设计概念和准则为: 1.网络上的所有事物都可以被抽象为资源(res ...

随机推荐

  1. Python 让文件代码支持汉字

    默认使用ASCII编码,改成utf8 #!/usr/bin/env python # -*- coding:utf8 -*- #coding:utf-8

  2. [JZOJ 5807] 简单的区间

    题目: 求有多少组二元组\((l,r)\)使得:\(1<=l<=r<=n,k|f(l,r)\) \(f(l,r) = \sum_{i=l}^{r}a_i - max_{i=l}^{r ...

  3. Devstack配置负载均衡,负载均衡版本V2

    本文为minxihou的翻译文章,转载请注明出处Bob Hou: http://blog.csdn.net/minxihou JmilkFan:minxihou的技术博文方向是 算法&Open ...

  4. git rm --cached (解决:modified: .idea/workspace.xml,git idea 操作完之后不能pull)

    错误解决:modified: .idea/workspace.xml 这个错误是本地的.idea提交到了远端. 解决办法: .gitignore文件加上: .dea/workspace.xml 可是. ...

  5. C语言中static用法介绍

    C语言中static用法介绍     对于新手来说,很多东西的用法还不是很清楚,我们今天一起来看看C语言中static用法介绍     1.声明了static的变量称为静态变量,根据作用域的不同又分为 ...

  6. webService服务简单实现

    首先写一个简单的webservice服务 package com.service.impl; import java.util.Date; import javax.jws.WebService; i ...

  7. PyTorch中,关于model.eval()和torch.no_grad()

    一直对于model.eval()和torch.no_grad()有些疑惑 之前看博客说,只用torch.no_grad()即可 但是今天查资料,发现不是这样,而是两者都用,因为两者有着不同的作用 引用 ...

  8. iOS开发系列-支付宝支付

    概述 开发中支付通常都会集成支付宝支付,下面讲解支付宝的整体流程. 集成支付宝支付的流程 签约 与支付签约,得到获取商户的ID(partner).账户ID(seller).私钥privateKey. ...

  9. 《移山之道》第十一章:两人合作 读书笔记 PB16110698 第六周(~4.15)

     本周在考虑阅读材料时,我翻阅了<移山之道>,正好看到这一章:两人合作,心想:正好,我们正值结对作业的紧要关头,书中两人合作的宝贵经验和教诲应当对我们有很大帮助.于是,我开始一边在ddl苦 ...

  10. Rsync 参数

    # rsync -v, --verbose 详细模式输出 -q, --quiet 精简输出模式 -c, --checksum 打开校验开关,强制对文件传输进行校验 -a, --archive 归档模式 ...