rpc协议

Dubbo(六)------为什么要用Dubbo

社会主义新天地 提交于 2020-01-21 02:46:09
众所周知,Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架。 从这段话中,我们提取 关键字:分布式、RPC 一、为什么需要使用分布式系统 1、单机系统 项目工程比较简单,可能全部代码就在一个工程中, 或者按照模块来划分工程结构。 将项目放入tomcat就可以直接运行。用户流量增多,那么就多部署几台tomcat服务器,外层做负载均衡,实现分流。如果一台服务器挂了,系统还可以正常使用,相对实现“高可用”。 弊端: 实现项目结构比较单一的项目,如何项目开发团队上10人,系统代码具有100万行代码,几十人共同维护一个项目,涉及冲突会让人崩溃。并且项目新模块A需要上线,需要测试全部模块才可以保证系统正常,很容易造成新模块影响原有功能。每次发布需要全部代码重新发布,费事又费力。 2、分布式系统 分布式系统:庞大系统分而治之。 在我的理解中,分布式系统就是一个不断拆分的过程。把一个大整系统分划为多个小的子系统。众多的子系统合在一起便过程整个系统。 一个大的系统拆分为很多小的系统,甚至很多小的服务,然后几个人组成一个小组就专门维护其中一个小系统,或者每个人维护一个小服务。 简单来说,就是分而治之,这样每个人可以专注维护自己的代码。 不同的小系统自己开发、测试和上线,都不会跟别人耦合在一起,可以自己独立进行,非常的方便,大大简化了大规模系统的开发成本。 当然使用分布式

NFS存储服务

流过昼夜 提交于 2020-01-20 08:52:08
一、NFS 原理图 二、NFS 原理描述   2.1:什么是NFS     NFS中文名字:网络共享存储,就是通过网络共享目录,让网络上的其他服务器能够挂载访问共享目录的数据(NFS一般都是用来存放视频、附件、图片等静态数据的).      NFS是通过网络来进行服务端和客户端数据传输的,那么只要是通过网络的就一定会有端口,那NFS的端口是什么呢?很失望的是NFS的端口是随机的,每次重启服务端口都会改变.     那么客户端是怎样知道服务端的端口的呢?其实NFS服务器是通过远程过程调用(RPC)协议/服务来实现的,也就是说RPC服务会统一管理NFS的端口,客户端和服务端通过RPC来确定端口,进行数据传输.     PS:(哦,原来是RPC管理服务端的NFS端口分配,客户端要传数据,那客户端的RPC会先跟服务端的RPC去要服务器的端口,要到端口后再建立连接,然后传输数据)。   2.2:什么是RPC     RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。      RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了 传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。     RPC采用客户机

SpringCloud学习1

会有一股神秘感。 提交于 2020-01-20 08:22:18
导读 从学习JavaWeb开始,Spring一直陪伴着我们. 一直到SpringCloud,大大简化了我们的开发. 可是自己学习过,但却在日常生活中,没有使用到,还是生疏了. 服务治理 OOP: 面向对象编程 AOP: 面向切面编程 SOA: 面向服务编程( 服务治理 ) 概念: 当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现, 此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。 此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键 服务治理和微服务的差别: 远程通信 无论是微服务还是分布式服务(都是SOA,都是面向服务编程), 都面临着服务间的远程调用。那么服务间的远程调用方式有哪些呢? RPC RPC:Remote Produce Call远程过程调用,类似的还有RMI (Remote Methods Invoke 远程方法调用,是JAVA中的概念,是JAVA十三大技术之一)。 自定义数据格式,基于原生TCP通信,速度快,效率高。 早期的webservice,现在热门的dubbo,都是RPC的典型 RPC的框架:webservie(cxf)、dubbo RMI的框架:hessian Http Http:http其实是一种网络传输协议,基于TCP,规定了数据传输的格式。现在客户端浏览器与服务端通信基本都是采用Http协议

dubbo与http区别

一世执手 提交于 2020-01-15 07:24:04
dubbo与http区别 相关概念 RPC、REST、Dubbo、HTTP、RMI区别 RPC、REST区别,通俗讲两者API设计风格不同,如下: 功能 RPC RESTful 提交功能 POST/submit POST/goods 查看商品列表 GET/lists?index=1 POST/goods/1234 两种风格的API区别: RPC面向过程,只发送 GET 和 POST 请求。GET用来查询信息,其他情况下一律用POST。请求参数是动词,直接描述动作本身。 RESTful面向资源,使用 POST、DELETE、PUT、GET 请求,分别对应增、删、改、查操作。请求参数是名词,这个名词就是“增删改查”想要操作的对象。 RPC与dubbo区别 PRC全称是Remote Procedure Call,即远程过程调用<通信方式的一种>,不仅仅是一种api设计风格。这个"远"的概念也不一定是跨越网络的,同一台主机的两个进程之间相互交流也完全可以是RPC。 Dubbo是一种分布式服务框架也是一种协议,dubbo框架默认使用dubbo协议。dubbo协议是阿里巴巴自己实现的一种应用层协议,传输层还是TCP。所以Dubbo协议与HTTP、FTP,SMTP这些应用层协议是并列的概念。除了默认的Dubbo协议,Dubbo框架还支持RMI、Hessian、HTTP等协议。

goweb-web服务

吃可爱长大的小学妹 提交于 2020-01-14 18:50:37
Web服务 Web服务可以让你在HTTP协议的基础上通过XML或者JSON来交换信息。如果你想知道上海的天气预报、中国石油的股价或者淘宝商家的一个商品信息,你可以编写一段简短的代码,通过抓取这些信息然后通过标准的接口开放出来,就如同你调用一个本地函数并返回一个值。 Web服务背后的关键在于平台的无关性,你可以运行你的服务在Linux系统,可以与其他Windows的asp.net程序交互,同样的,也可以通过同一个接口和运行在FreeBSD上面的JSP无障碍地通信。 目前主流的有如下几种Web服务:REST、SOAP。 Socket编程 在很多底层网络应用开发者的眼里一切编程都是Socket,话虽然有点夸张,但却也几乎如此了,现在的网络编程几乎都是用Socket来编程。你想过这些情景么?我们每天打开浏览器浏览网页时,浏览器进程怎么和Web服务器进行通信的呢?当你用QQ聊天时,QQ进程怎么和服务器或者是你的好友所在的QQ进程进行通信的呢?当你打开PPstream观看视频时,PPstream进程如何与视频服务器进行通信的呢? 如此种种,都是靠Socket来进行通信的,以一斑窥全豹,可见Socket编程在现代编程中占据了多么重要的地位,这一节我们将介绍Go语言中如何进行Socket编程。 什么是Socket? Socket起源于Unix,而Unix基本哲学之一就是“一切皆文件”,都可以用

RabbitMQ中文文档PHP版本(六)--远程过程调用(RPC)

喜欢而已 提交于 2020-01-07 00:21:18
2019年12月10日10:05:54 原文: https://www.rabbitmq.com/tutorials/tutorial-six-php.html 远程过程调用(RPC) (使用 php-amqplib ) 先决条件 本教程假定RabbitMQ 已 在标准端口( 5672 )的 本地主机 上 安装 并运行 。 如果您使用其他主机,端口或凭据,则连接设置需要进行调整。 在哪里获得帮助 如果您在阅读本教程时遇到困难,可以 通过邮件列表 与我们 联系。 在 第二篇教程中, 我们学习了如何使用 工作队列 在多个工作人员之间分配耗时的任务。 但是,如果我们需要在远程计算机上运行功能并等待结果怎么办? 好吧,那是一个不同的故事。 这种模式通常称为“ 远程过程调用” 或“ RPC” 。 在本教程中,我们将使用RabbitMQ构建RPC系统:客户端和可伸缩RPC服务器。 由于我们没有值得分配的耗时任务,因此我们将创建一个虚拟RPC服务,该服务返回斐波那契数。 客户端界面 为了说明如何使用RPC服务,我们将创建一个简单的客户端类。 它将公开一个名为 call 的方法,该方法 发送RPC请求并阻塞,直到收到答案为止: $ fibonacci_rpc = 新的 FibonacciRpcClient(); $ response = $ fibonacci_rpc-> call(30);

服务之间的调用为啥不直接用 HTTP 而用 RPC?

寵の児 提交于 2020-01-03 22:41:58
什么是 RPC?RPC原理是什么? 什么是 RPC? RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。比如两个不同的服务 A、B 部署在两台不同的机器上,那么服务 A 如果想要调用服务 B 中的某个方法该怎么办呢?使用 HTTP请求 当然可以,但是可能会比较慢而且一些优化做的并不好。 RPC 的出现就是为了解决这个问题。 RPC原理是什么? 服务消费方(client)调用以本地调用方式调用服务; client stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体; client stub找到服务地址,并将消息发送到服务端; server stub收到消息后进行解码; server stub根据解码结果调用本地的服务; 本地服务执行并将结果返回给server stub; server stub将返回结果打包成消息并发送至消费方; client stub接收到消息,并进行解码; 服务消费方得到最终结果。 下面再贴一个网上的时序图: RPC 解决了什么问题? 从上面对 RPC 介绍的内容中,概括来讲RPC 主要解决了: 让分布式或者微服务系统中不同服务之间的调用像本地调用一样简单。 常见的 RPC 框架总结? RMI(JDK自带): JDK自带的RPC,有很多局限性,不推荐使用

RPC和HTTP的理解以及不同之处

人走茶凉 提交于 2020-01-02 19:40:52
RPC协议:远程过程调用协议(Remote Procedure Call Protocol),是一种计算机通讯协议。 如何理解远程过程调用? 假设有两台服务器A和B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数或者方法,由于不在一个内存空间,所以不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。 简要的步骤 解决通讯问题。主要是客户端和服务器建立TCP连接,远程调用所有交换的数据都在这个连接里面进行交换,连接可以是按需连接,数据交换完毕之后就关闭连接;也可以是长连接,多个远程调用都共享同一个连接。 解决寻址问题。服务器A想要调用服务器B的应用,那么A应该告知RPC框架B服务器(主机名或IP地址)以及特定的端口,然后指定调用的方法或者函数的名称以及入参出参等信息,这样才能完成服务的一个调用。比如基于Web服务协议栈的RPC,就需要提供一个endpoint URI,或者是从UDDI服务上进行查找。如果是RMI调用的话,还需要一个RMI Registry来注册服务的地址。 当A服务器上的应用发起远程过程调用时,方法的参数需要通过底层的网络协议如TCP传递到B服务器,由于网络协议是基于二进制的,内存中的参数的值要序列化成二进制的形式,也就是序列化(Serialize)或编组(marshal),通过寻址和传输将序列化的二进制发送给B服务器。 B服务器收到请求后

网络协议 21 - RPC 协议(中)- 基于 JSON 的 RESTful 接口协议

微笑、不失礼 提交于 2020-01-02 01:59:20
原文: 网络协议 21 - RPC 协议(中)- 基于 JSON 的 RESTful 接口协议     上一节我们了解了基于 XML 的 SOAP 协议,SOAP 的 S 是啥意思来着?是 Simple,但是好像一点儿都不简单啊! 传输协议问题     对于 SOAP 来讲,比如我创建一个订单,用 POST,在 XML 里面写明动作是 CreateOrder;删除一个订单,还是用 POST,在 XML 里面写明了动作是 DeleteOrder。其实创建订单完全可以使用 POST 动作,然后在 XML 里面放一个订单的信息就可以了,而删除用 DELETE 动作,然后在 XML 里面放一个订单的 ID 就可以了。     于是上面的那个 SOAP 就变成下面这个简单的模样。 POST /purchaseOrder HTTP/1.1 Host: www.cnblog.com Content-Type: application/xml; charset=utf-8 Content-Length: nnn <?xml version="1.0"?> <order> <date>2018-07-01</date> <className> 板栗焖鸡 </className> <price>58</price> </order>     而且 XML

Java RMI与RPC的区别

安稳与你 提交于 2020-01-01 09:03:21
文章转自http://www.cnblogs.com/ygj0930/p/6542811.html 一:RPC 远程过程调用 RPC(Remote Procedure Call Protocol)远程过程调用协议,通过网络从远程计算机上请求调用某种服务。 一次RPC调用的过程大概有10步:   1.执行客户端调用语句,传送参数   2.调用本地系统发送网络消息   3.消息传送到远程主机   4.服务器得到消息并取得参数   5. 根据调用请求以及参数执行远程过程(服务)   6.执行过程完毕,将结果返回服务器句柄   7.服务器句柄返回结果,调用远程主机的系统网络服务发送结果   8.消息传回本地主机   9.客户端句柄由本地主机的网络服务接收消息   10.客户端接收到调用语句返回的结果数据 二:RMI 远程方法调用 RMI:远程方法调用(Remote Method Invocation)。能够让在客户端 Java 虚拟机上的对象像调用本地对象一样调用服务端java 虚拟机中的对象上的方法。 RMI远程调用步骤: 1,客户调用客户端辅助对象stub上的方法 2,客户端辅助对象stub打包调用信息(变量,方法名),通过网络发送给服务端辅助对象skeleton 3,服务端辅助对象skeleton将客户端辅助对象发送来的信息解包,找出真正被调用的方法以及该方法所在对象 4