远程过程调用协议

SpringBoot整合WebService

不想你离开。 提交于 2020-02-27 07:59:05
WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络应用间的交互。 其实WebService并不是什么神秘的东西,它就是一个可以远程调用的类,或者说是组件,把你本地的功能开放出去共别人调用。具体的说,Web Service可以让你的网站使用其他网站的资源,比如在网页上显示天气、地图、twitter上的最新动态等等。 一、为什么用WebService 比如你的项目需要查询某银行账户余额。你能直接查吗,肯定不行,因为数据库是银行的,他不可能给你权限。你想访问他的数据库获取数据,这就需要用到WebService。通过调用银行暴露的接口来得到你想要的数据。 1. 适用场景 软件的集成和复用,如气象局(服务端系统)、天气查询网站等。 发布一个服务(对内/对外),不考虑客户端类型,不考虑性能,建议WebService 服务端已经确定使用webservice,客户端不能选择,必须使用WebService 软件集成即通过远程调用技术,将两个系统整合到一起,从而实现软件集成。 软件复用即同一个款软件的多次集成,最终实现复用。 2. 不适用场景 考虑性能时不建议使用WebService:采用xml格式封装数据,所以在传输过程中,要传输额外的标签,随着soap协议的不断完善,标签越来越大

2.微服务--RPC

元气小坏坏 提交于 2020-02-25 15:48:33
1.RPC简介 1.远程过程调用(Remote Procedure Call,RPC)是一个计算机通信协议。 2.该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。 3.如果涉及的软件采用面向对象编程,那么远程过程调用也可称为远程调用或远程方法调用。 2.流行的RPC框架的对比 3.golang中如何实现RPC Golang中实现RPC比较简单,官方提供了封装好的库,还有第三方库。 官方库:net/rpc 1.net/rpc库使用encoding/gob进行编码 2.支持tcp和http数据传输方式 3.由于其他语言不支持gob编解码方式,所以golang的RPC只支持golang开发的服务端与客户端的交互 官方库:net/jsonrpc 1.jsonrpc采用JSON进行数据编解码,因而支持跨语言调用。 2.jsonrpc库是基于tcp协议实现的,暂不支持http传输方式。 golang的RPC必须符合四个条件才可以: 1.结构体字段首字母要大写,要跨域访问,所以大写。 2.函数名必须首字母大写。 3.函数第一个参数是接收参数,第二个参数是返回给客户端参数,必须是指针类型。 4.函数必须有一个返回值err。 3.1示例1 golang实现RPC程序,实现求矩形面积和周长 //rpcClient/server.go package

进程通信

我只是一个虾纸丫 提交于 2020-02-02 00:19:11
1、定义: 进程通讯是指 进程之间的信息交换 。 在 进程之间要传送大量数据 时,就需要使用进程通讯。 进程 互斥和同步 需要交换一定的信息,它们也可归为进程通讯,属于 低级的进程通讯 。 低级的原因 在于 (1)、 效率低 ,生产者每次只能向缓冲池投放一个产品(消息),消费者每次只能从缓冲池中取得一个消息 (2)、 通讯对用户不透明 ,OS职位进程之间的通讯提供了共享存储其。 2、进程通讯特点: 使用方便 。OS 隐藏了实现进程通讯的具体细节 ,向用户 提供了一组用于实现高级通信的命令(原语) ,用户可方便的直接利用它实现进程之间的通信,或者说,通信过程对用户是透明的,这样大大减少了通信程序编制上的复杂性。 高效的传送大量的数据 。用户可以直接利用高级通讯命令(原语)高效地传送大量的数据。 3、进程通信的分类 共享存储器系 在该系统中,相互通信的进程共享某些 数据结构 或 共享存储区 ,进程能通过这些空间进行通信。 管道通信系统 消息传递系统 客户机-服务器系统 3.1、共享存储器系 (1)、基于 共享数据结构 的通信方式。在这种通信方式中,要求诸进程 公用某些数据结构 ,借以实现诸进程间的信息交换,如在生产者-消费者问题中的有界缓冲区。操作系统仅提供共享存储器,由程序员负责对公共数据结构的设置及对进程间同步的处理。这种通信方式仅 适用于传递相对较少的数据,通信效率低下

RPC浅谈

ぐ巨炮叔叔 提交于 2020-02-01 17:15:43
RPC RPC(Remote Procedure Call) 广义上的RPC RPC(架构)框架 RPC框架原理 PRC架构组件 PRC架构调用过程 常见的RPC框架及分类 常见的RPC 框架的比较 RPC协议 MVC架构、RPC架构、SOA架构、微服务架构区别 单体架构 MVC(Model View Controller) 多服务架构 RPC(Remote Procedure Call)远程过程调用 SOA(Service Oriented Architecture)面向服务架构 微服务架构(轻量级的服务治理方案) RPC(Remote Procedure Call) 远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。 个人觉得单纯的讲RPC 是没有意义的。 RPC应该被分为广义上的RPC ,RPC框架,RPC协议(后2个暂且称之为狭义的RPC) 广义上的RPC 所谓广义RPC 根据定义 通过网络调用远程计算机上的服务即可称之为RPC 。所以任何符合该说明的都应该属于RPC。包括常见的web服务个人觉得其实也可以理解为RPC. RPC(架构)框架 RPC框架原理 PRC架构组件 一个完整的RPC架构里面包含了四个核心的组件,分别是Client,Client Stub,Server以及Server Stub,这个Stub可以理解为存根。

一个故事讲清楚NIO

試著忘記壹切 提交于 2020-01-30 07:40:32
from : https://www.cnblogs.com/LBSer/p/4853234.html 你应该知道的 RPC原理    在学校期间大家都写过不少程序,比如写个 hello world服务类,然后本地调用下,如下所示。这些程序的特点是服务消费方和服务提供方是本地调用关系。   而一旦踏入公司尤其是大型互联网公司就会发现,公司的系统都由成千上万大大小小的服务组成,各服务部署在不同的机器上,由不同的团队负责。这时就会遇到两个问题: 1)要搭建一个新服务,免不了需要依赖他人的服务,而现在他人的服务都在远端,怎么调用? 2)其它团队要使用我们的新服务,我们的服务该怎么发布以便他人调用?下文将对这两个问题展开探讨。 1 public interface HelloWorldService { 2 String sayHello(String msg); 3 } 1 public class HelloWorldServiceImpl implements HelloWorldService { 2 @Override 3 public String sayHello(String msg) { 4 String result = "hello world " + msg; 5 System.out.println(result); 6 return result; 7 } 8

关于Hystrix

时光毁灭记忆、已成空白 提交于 2020-01-28 02:33:39
RPC远程调用过程中如何防止服务雪崩效用 微服务中如何保护服务 Hystrix是一个微服务中关于服务保护框架,在分布式中能够实现对服务容错。出错之后的预备方案 背景 在今天,基于SOA的架构已经大行其道。伴随着架构的SOA化,相关联的服务熔断、降级、限流等思想,也在各种技术讲座中频繁出现。本文将结合Netflix开源的Hystrix框架,对这些思想做一个梳理。 伴随着业务复杂性的提高,系统的不断拆分,一个面向用户端的API,其内部的RPC调用层层嵌套,调用链条可能会非常长。这会造成以下几个问题: API接口可用性降低 引用Hystrix官方的一个例子,假设tomcat对外提供的一个application,其内部依赖了30个服务,每个服务的可用性都很高,为99.99%。那整个applicatiion的可用性就是:99.99%的30次方 = 99.7%,即0.3%的失败率。 这也就意味着,每1亿个请求,有30万个失败;按时间来算,就是每个月的故障时间超过2小时。 服务熔断 为了解决上述问题,服务熔断的思想被提出来。类似现实世界中的“保险丝“,当某个异常条件被触发,直接熔断整个服务,而不是一直等到此服务超时。 熔断的触发条件可以依据不同的场景有所不同,比如统计一个时间窗口内失败的调用次数。 服务降级 有了熔断,就得有降级。所谓降级,就是当某个服务熔断之后,服务器将不再被调用

微服务简介

匆匆过客 提交于 2020-01-26 07:21:13
常见的远程调用方式有以下几种: - RPC:Remote Produce Call远程过程调用,类似的还有RMI。自定义数据格式,基于原生TCP通信,速度快,效率高。早期的webservice,现在热门的dubbo,都是RPC的典型 - Http:http其实是一种网络传输协议,基于TCP,规定了数据传输的格式。现在客户端浏览器与服务端通信基本都是采用Http协议。也可以用来进行远程服务调用。缺点是消息封装臃肿。 现在热门的Rest风格,就可以通过http协议来实现。 RPC,即 Remote Procedure Call(远程过程调用),是一个计算机通信协议。 该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。说得通俗一点就是:A计算机提供一个服务,B计算机可以像调用本地服务那样调用A计算机的服务。 通过上面的概念,我们可以知道,实现RPC主要是做到两点: - 实现远程调用其他计算机的服务 - 要实现远程调用,肯定是通过网络传输数据。A程序提供服务,B程序通过网络将请求参数传递给A,A本地执行后得到结果,再将结果返回给B程序。这里需要关注的有两点: - 1)采用何种网络通讯协议? - 现在比较流行的RPC框架,都会采用TCP作为底层传输协议 - 2)数据传输的格式怎样? - 两个程序进行通讯,必须约定好数据传输格式。就好比两个人聊天

Dubbo框架设计-分层设计思想

£可爱£侵袭症+ 提交于 2020-01-24 19:58:38
目录 整体设计 各层说明 config 配置层: proxy 服务代理层: registry 注册中心层: cluster 路由层: monitor 监控层: protocol 远程调用层: exchange 信息交换层: transport 网络传输层: serialize 数据序列化层: 关系说明 模块分包 依赖关系 调用链 暴露服务时序 引用服务时序 领域模型 基本设计原则 整体设计 图例说明: 图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口。 图中从下至上分为十层,各层均为单向依赖,右边的黑色箭头代表层之间的依赖关系,每一层都可以剥离上层被复用,其中,Service 和 Config 层为 API,其它各层均为 SPI。 图中绿色小块的为扩展接口,蓝色小块为实现类,图中只显示用于关联各层的实现类。 图中蓝色虚线为初始化过程,即启动时组装链,红色实线为方法调用过程,即运行时调时链,紫色三角箭头为继承,可以把子类看作父类的同一个节点,线上的文字为调用的方法。 各层说明 config 配置层: 对外配置接口,以 ServiceConfig, ReferenceConfig 为中心,可以直接初始化配置类,也可以通过 spring 解析配置生成配置类 proxy 服务代理层: 服务接口透明代理,生成服务的客户端

WebService基础概念

徘徊边缘 提交于 2020-01-24 06:32:16
一、序言   大家或多或少都听过 WebService(Web服务),有一段时间很多计算机期刊、书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成 分。但是不得不承认的是WebService真的是一门新兴和有前途的技术,那么WebService到底是什么?何时应该用?   当前的应用程序开发逐步的呈现了两种迥然不同的倾向:一种是基于浏览器的瘦客户端应用程序,一种是基于浏览器的富客户端应用程序(RIA),当然后一种技术相对来说更加的时髦一些(如现在很流行的Html5技术),这里主要讲前者。   基于浏览器的瘦客户端应用程序并不是 因为瘦客户能够提供更好的用户界面,而是因为它能够避免花在桌面应用程序发布上的高成本。发布桌面应用程序成本很高,一半是因为应用程序安装和配置的问 题,另一半是因为客户和服务器之间通信的问题。传统的Windows富客户应用程序使用DCOM来与服务器进行通信和调用远程对象。配置好DCOM使其在 一个大型的网络中正常工作将是一个极富挑战性的工作,同时也是许多IT工程师的噩梦。事实上,许多IT工程师宁愿忍受浏览器所带来的功能限制,也不愿在局 域网上去运行一个DCOM。关于客户端与服务器的通信问题,一个完美的解决方法是使用HTTP协议来通信。这是因为任何运行Web浏览器的机器都在使用 HTTP协议。同时

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协议