rpc协议

微服务之集成(四)

风流意气都作罢 提交于 2019-12-31 01:38:34
1. 寻找理想的集成技术 微服务之间通信的方式的选择非常多样化,但哪个是正确的呢?SOAP ? XML-RPC ? REST ? Protocol Buffers?后面会逐一讨论。 首先,我们要考虑的是,我们到底希望从这些技术中得到什么。 1.1 避免破坏性修改 有时候,对某个服务做的一些修改会导致该服务的消费方也随之发生改变。但是,我们希望选用的技术可以尽量避免这种情况的发生。 1.2 保证API的技术无关性 保证微服务之间的通信方式的技术无关性是非常重要的。这就意味着,不应该选择哪种对微服务的具体实现技术有限制的集成方式。 1.3 使你的服务易于消费方使用 消费方应该很容易的使用我们的服务。理想情况下,消费方应该可以使用任何技术来实现,从另一方面来说,提供一个客户端库也可以简化消费方的使用。但是通常这种库与其他我们想要得到的东西不可兼得。例如,使用客户端库对于消费方来说很方便,但是会造成耦合的增加。 1.4 隐藏内部实现细节 我们不希望消费方与服务的内部实现细节绑定在一起,因为这会增加耦合。所以,所有倾向于暴露内部实现细节的技术都不应该被采用。 2.为用户创建接口 3.共享数据库 目前业界最常见的集成形式应该就是数据库集成了。使用这种方式时,如果其他服务想要从一个服务获取信息,可以直接访问数据库。如果想要修改,也可以直接在数据库中修改。 这种方式看起来非常简单

Java EE启示录

喜欢而已 提交于 2019-12-28 12:15:04
前言 最近的这段时间一直在学习Java EE,刚刚完成了从0到1的蜕变,所以顺便整理一下我所了解到的Java EE,给刚入门学习的新人一些头绪,而所谓“启示录”,就是这个意思。 一.Java EE是什么? Java EE(Java Enterprise Edition)是一种 企业级应用的软件架构,同时是一种思想,一套规范。 二.Java EE的发展史 Java Enterprise Edition的发展不知不觉已经12年了,不知道大家有没留意,一开始,Java Enterprise Edition简称“J2EE”,直到版本5才改名为Java EE,而现在最新的版本则是Java EE 6。 到这里,或许有人会问,为什么会有这么多套Java EE规范?这些版本的差别是什么? 1.J2EE1.2的出现,主要是将之前各个单独的规范绑定到一起。 2.J2EE1.3,则是继续完善J2EE体系结构。 3.J2EE1.4,主要是加入了一个重要主题:Web Service 4.而Java EE 5,主题则是“简化”,简化之前复杂的J2EE思想,改善开发体验。 三.Java EE到底要解决什么问题? 1.Java EE解决什么问题? 从Java EE发展背景看,它与“分布式应用”以及“互联网应用”的关系密不可分,而这两者也正是Java EE要解决的问题! 其实

手写rpc框架

夙愿已清 提交于 2019-12-27 16:29:56
https://www.jianshu.com/p/096dbda7d528 常用的rpc框架: https://blog.csdn.net/u013952133/article/details/79256799 前言 在微服务当道的今天,分布式系统越来越重要,实现服务化首先就要考虑服务之间的通信问题。这里面涉及序列化、反序列化、寻址、连接等等问题。不过,有了 RPC 框架,我们就无需苦恼。 一、什么是 RPC? RPC(Remote Procedure Call)— 远程过程调用,是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的程序,而程序员无需额外地为这个交互作用编程。 值得注意是,两个或多个应用程序都分布在不同的服务器上,它们之间的调用都像是本地方法调用一样。 RPC框架有很多,比较知名的如阿里的 Dubbo、google 的 gRPC、Go 语言的 rpcx、Apache 的 thrift。当然了,还有Spring Cloud,不过对于 Spring Cloud 来说,RPC 只是它的一个功能模块。 如果要实现一个基本功能、简单的 RPC,要涉及哪些东西呢? 动态代理 反射 序列化、反序列化 网络通信 编解码 服务发现与注册 心跳与链路检测 ...... 下面,我们一起通过代码来分析,怎么把技术点串到一起,实现我们自己的 RPC。 二、环境准备

RPC框架实现细节-阿里产出

心不动则不痛 提交于 2019-12-27 07:14:36
   在学校期间大家都写过不少程序,比如写个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 } 1 public class Test { 2 public static void main(String[] args) { 3

php中流行的rpc框架详解

白昼怎懂夜的黑 提交于 2019-12-26 21:46:00
什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call) 那什么是远程调用? 我的官方群 点击此处 。 通常我们调用一个php中的方法,比如这样一个函数方法: localAdd(10, 20),localAdd方法的具体实现要么是用户自己定义的,要么是php库函数中自带的,也就说在localAdd方法的代码实现在本地,它是一个本地调用!远程调用意思就是:被调用方法的具体实现不在程序运行本地,而是在别的某个远程地方。 远程调用原理 比如 A (client) 调用 B (server) 提供的remoteAdd方法: 首先A与B之间建立一个TCP连接; 然后A把需要调用的方法名(这里是remoteAdd)以及方法参数(10, 20)序列化成字节流发送出去; B接受A发送过来的字节流,然后反序列化得到目标方法名,方法参数,接着执行相应的方法调用(可能是localAdd)并把结果30返回; A接受远程调用结果,输出30。 RPC框架就是把我刚才说的这几点些细节给封装起来,给用户暴露简单友好的API使用。 远程调用的好处 解耦:当server需要对方法内实现修改时,client完全感知不到,不用做任何变更;这种方式在跨部门,跨公司合作的时候经常用到,并且方法的提供者我们通常称为:服务的暴露。 RPC与Socket有什么区别?

<微服务架构>—RPC入门篇

杀马特。学长 韩版系。学妹 提交于 2019-12-26 16:32:45
概念 RPC(Remote Procedure Call):远程过程调用 ,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想.RPC 是一种技术思想而非一种规范或协议,常见 RPC 技术和框架有: 应用级的服务框架:阿里的 Dubbo/Dubbox、Google gRPC、Spring Boot/Spring Cloud 远程通信协议:RMI、Socket、SOAP(HTTP XML)、REST(HTTP JSON) 通信框架:MINA 和 Netty 目前流行的开源 RPC 框架还是比较多的,有阿里巴巴的 Dubbo、Facebook 的 Thrift、Google 的 gRPC、Twitter 的 Finagle 等。 gRPC:是 Google 公布的开源软件,基于HTTP 2.0的协议,并支持常见的众多编程语言。RPC 框架是基于 HTTP 协议实现的,底层使用到了 Netty 框架的支持。 Thrift:是 Facebook 的开源 RPC 框架,主要是一个跨语言的服务开发框架。 用户只要在其之上进行二次开发就行,应用对于底层的 RPC 通讯等都是透明的。不过这个对于用户来说需要学习特定领域语言这个特性,还是有一定成本的。 Dubbo:是阿里集团开源的一个极为出名的 RPC 框架,在很多互联网公司和企业应用中广泛使用

linux NFS 服务

十年热恋 提交于 2019-12-25 22:24:09
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一、NFS服务简介   NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。   NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。   NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系

NFS服务器的工作原理

时间秒杀一切 提交于 2019-12-24 01:17:42
http://cn.linux.vbird.org/linux_server/0330nfs.php#What_NFS_NFS 1. NFS NFS是分布式计算机系统的一个组成部分,可实现在异构网络上共享和装配远程文件系统。其最大功能是可以通过网络让不同操作系统的计算机可以共享数据,所以也可以将其看做是一台文件服务器。 客户端PC可以挂在NFS服务器所提供的目录并且挂载之后这个目录看起来如同本地的磁盘分区一样,可以使用cp、cd、mv、rm 及 df 等与磁盘相关的命令。NFS 有属于自己的协议与使用的端口号,但是在传送资料或者其他相关信息的时候,NFS 服务器 使用一个称为“远程过程调用”(Remote Procedure Call,RPC)的协议来协助 NFS 服务器本身的运行。 2. RPC RPC最主要的功能就是指定每个NFS功能所对应的port number, 并且回报给客户端,让客户端可以连接到正确的端口上去。当服务器在启动NFS时会随机取用数个端口,并主动向RPC注册,因此RPC可以知道每个端口对应的NFS功能,然后RPC是固定使用port 111来监听客户端的需求并回报客户端正确的端口。 所以你要注意,要启动NFS之前,RPC就要先启动了,否则NFS会无法向RPC注册。另外,RPC若重新启动时,原本注册的数据会不见,因此RPC重新启动后

REST与RPC区别

隐身守侯 提交于 2019-12-23 06:52:02
OSI网络七层模型 第一层:应用层。定义了用于在网络中进行通信和传输数据的接口; 第二层:表示层。定义不同的系统中数据的传输格式,编码和解码规范等; 第三层:会话层。管理用户的会话,控制用户间逻辑连接的建立和中断; 第四层:传输层。管理着网络中的端到端的数据传输; 第五层:网络层。定义网络设备间如何传输数据; 第六层:链路层。将上面的网络层的数据包封装成数据帧,便于物理层传输; 第七层:物理层。这一层主要就是传输这些二进制数据 实际应用过程中,五层协议结构里面是没有表示层和会话层的。应该说它们和应用层合并了。我们应该将重点放在应用层和传输层这两个层面,因为RPC主要是基于TCP/IP协议(传输层协议),HTTP主要是基于HTTP协议(应用层协议)。 1、什么是REST? REST是一种架构风格,指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。REST规范把所有内容都视为资源,网络上一切皆资源。REST并没有创造新的技术,组件或服务,只是使用Web的现有特征和能力。 可以完全通过HTTP协议实现,使用 HTTP 协议处理数据通信。REST架构对资源的操作包括获取、创建、修改和删除资源的操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。 HTTP动词与REST风格CRUD对应关系: 2、什么是RPC Remote

Linux NFS服务器的安装与配置

删除回忆录丶 提交于 2019-12-23 05:39:19
一、NFS服务简介   NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。   NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。   NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。 二、系统环境 系统平台