「javarpc原理」java grpc
今天给各位分享javarpc原理的知识,其中也会对java grpc进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、javarpc和sdk区别
- 2、Grpc原理
- 3、RPC和注册中心的简介
javarpc和sdk区别
JavaRPC(Java Remote Procedure Call)是一种远程过程调用协议,用于在不同的计算机或进程中调用远程方法。它允许应用程序在网络上进行通信,以便在远程计算机上调用方法。
SDK(Software Development Kit)是一个软件开发工具包,其中包含一组工具、库和文档,用于帮助开发人员创建特定类型的应用程序。通常,SDK包括编程语言、开发环境、API、示例代码和开发人员文档。
因此,JavaRPC和SDK是不同的概念。JavaRPC是一种协议,用于远程过程调用,而SDK是一种工具包,用于帮助开发人员创建应用程序。在Java开发中,可以使用JavaRPC协议来实现远程调用,同时使用SDK中提供的工具和库来开发应用程序。
Grpc原理
rpc调用原理框架如图:
-支持多语言的rpc框架,例如Google的grpc,facebook thrift, 百度的brpc
-支持特定语言的rpc框架, 例如新浪微博的Motan
-支持服务治理微服务化特性框架,其底层仍是rpc框架,例如 阿里的Dubbo
目前业内主要使用基于多语言的 RPC 框架来构建微服务,是一种比较好的技术选择,例如netflix ,API服务编排层和后端微服务之间采用微服务rpc进行通信
-支持C java js
-git地址
-原理图:
gRPC 的线程模型遵循 Netty 的线程分工原则,即:协议层消息的接收和编解码由 Netty 的 I/O(NioEventLoop) 线程负责;后续应用层的处理由应用线程负责,防止由于应用处理耗时而阻塞 Netty 的 I/O 线程
不过正是因为有了分工原则,grpc 之间会做频繁的线程切换,如果在一次grpc调用过程中,做了多次I/O线程到应用线程之间的切换,会导致性能的下降,这也是为什么grpc在一些私有协议支持不太友好的原因
缺点
改进:
优化后BIO线程模型采用了线程池的做法但是后端的应用处理线程仍然采用同步阻塞的模型,阻塞的时间取决对方I/O处理的速度和网络I/O传输的速度
grpc的线程模型主要包含服务端线程模型,客户端线程模型
2.1.1 I/O 通信线程模型
gRPC的做法是服务监听线程和I/O线程分离Reactor多个线程模型 其工作原理如下:
2.1.2 服务调度线程模型
gRPC 客户端线程模型工作原理如下图所示(同步阻塞调用为例)
相比于服务端,客户端的线程模型简单一些,它的工作原理如下:
grpc 线程模型
RPC和注册中心的简介
网络调用RPC 假设一个web 调用另外一个service 就符合RPC协议
在网络传输中的数据是序列化及返回为反序列化传输
什么是RPC:RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务
RPC的原理:RPC协议的底层原理,就是对象的序列化、反序列化以及序列化后数据的传输。
RPC协议的核心组成部分:网络传输协议:http,tcp(推荐使用tcp); dubbo序列化和反序列化:可以使用Java原生的序列化和反序列化,也可以使用高性能序列化/反序列化工具,如Hessian,FST等,还可以使用表单序列化。
常见的RPC框架:Dubbo,SpringCloud, Thrift,Motan,gRPC
注册中心的作用:1:服务端服务的注册和客户端服务的发现 2、提高系统的高可用性 3、提高系统的可伸缩性 4、集中管理服务 ;常见的注册中心:zookeeper,Redis;
服务的发现:引入注册中心
关于javarpc原理和java grpc的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。