首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏菩提树下的杨过

    rpc框架之 thrift 学习 2 - 基本概念

    整数106903,在java中我们知道int占用4个bytes,也就是32bit,高位字节如果不满,用0填充(最高位符号位除外), 这样的话,很多用0填充的高位字节位置其实是浪费的,VLQ的基本思路是将2进制每 7位分组,这样106903的2进制就可以分成3组,然后每1组的最高位设为1或0,如果为1,表示相邻的下一个字节还有内容,要继续读取,如果该位置为0,则表示结束了。 deserializerBinary = new TDeserializer(new TBinaryProtocol.Factory()); QueryParameter query2 = new QueryParameter(); deserializerBinary.deserialize(query2, bytes2); System.out.println 参考文章: http://dongxicheng.org/search-engine/thrift-rpc/ http://blog.chinaunix.net/uid-20357359-id-2876170

    1.2K70发布于 2018-01-18
  • 来自专栏JAVA基础知识

    RPC 框架简介

    RPC使用自定义的 TCP 协议,可以让请求报文体积更小,或者使用 HTTP2 协议,也可以很好的减少报文的体积,提高传输效率,所以传输效率上 RPC 比 RESTful 更快。 RPC 框架目前有很多成熟的 RPC 框架,比如dubbo、thrift 和 spring cloud,它们都广泛应用于各种分布式服务中,具有以下优点:一般使用长链接,不必每次通信都要3次握手,减少网络开销 可以基于 TCP 或 HTTP2 实现。使远程服务的调用过程像本地调用一样简单,隐藏了底层网络通信细节,提供了更高层次的抽象。 许多 RPC 框架支持自动生成客户端和服务端的代码,减少了开发人员的工作量。RPC 框架通常提供了安全机制,包括数据传输加密、身份认证和授权等功能。 RPC 框架可以提供透明的远程调用,使得调用方无需关心调用的具体实现细节,从而降低了系统的耦合度。

    1K10编辑于 2024-10-16
  • 来自专栏有文化的技术人

    RPC框架思考

    调研 在开发一个RPC 框架之前,一般需要搞清楚以下几个问题 1、开发效率问题 开发效率是所有的框架都需要解决的基础问题,框架的初衷几乎都是为了提高开发效率,避免每次 RPC 调用都要进行重复的 socket 因此,一个好的RPC框架应该是对开发友好的,不能让开发进行重复性的工作 2、通信效率问题 作为一款高性能的 RPC 框架,通信效率肯定是要求非常高的。 3、通用化 业务开发的场景是各种各样的,使用框架的姿势也是多种多样的,因此一个好的RPC 框架应该是通用化的。 RPC定义 RPC 协议包括 5 个部分: Client Client-stub RPCRuntime Server-stub Server 这里面分了三个层次: 对于客户端和服务端,都像是本地调用一样 编解码 也就是对数据序列化的处理过程 服务治理 一个功能完备的rpc框架一般都会提供一些服务治理相关的基础配套功能 插件化 也就是现在比较流行的微内核架构,我们将每个功能点抽象成一个接口,将这个接口作为插件的契约

    42610编辑于 2023-11-30
  • 来自专栏二进制文集

    Thrift RPC 框架分析

    rpcx: 基于Go的服务治理的rpc框架、客户端支持跨语言 grpc: Google 出品的跨语言rpc框架,很弱的(实验性的)负载均衡, 测试使用的是grpc-go go std rpc: Go标准库的 rpc, 不支持跨语言(jsonrpc支持json rpc 1.0) thrift: 跨语言的rpc框架,facebook贡献 dubbo: 国内较早开源的服务治理的Java rpc框架,虽然在阿里巴巴内部竞争中落败于 发展以支持多语言 hprose: 国内开发人员开发的一个跨语言的rpc框架,非服务治理但是性能高效 twirp: twitch.tv刚刚开源的一个restful风格的rpc框架 go-micro: Go 语言的一个服务治理rpc框架, 在测试中发现性能不太好,所以没有继续测试,相关的测试代码已在github库中 go kit: 腾讯 Tars:腾讯公司的rpc框架 百度 brpc: 百度公司的rpc框架 spring cloud: 参考自:流行的rpc框架benchmark 2018新春版。

    3.1K21发布于 2018-12-21
  • 来自专栏JavaEdge

    RPC框架整体架构

    ,我们可以通过压缩框架进行无损压缩,然后在另外一端也用同样的压缩算法进行解压,保证数据可还原。 这是RPC调用的入口,一般叫Bootstrap模块。 点对点(Point to Point)版本的RPC框架就完成了,一般这种模式的RPC框架为单机版,没有集群能力。 但服务发现只解决接口和服务提供方地址映射关系查找,是一种“静态数据”,对RPC来说,每次发送请求时都要用TCP连接的,相对服务提供方IP地址,TCP连接状态瞬息万变,所以RPC框架要有连接管理器去维护TCP 按分层设计原则,将这些功能模块分为: 2 可扩展架构 RPC框架怎么支持插件化架构?可将每个功能点抽象成一个接口,将这个接口作为插件契约,然后把这个功能的接口与功能实现分离,并提供接口默认实现。 加上插件功能,RPC框架就包含了两大核心体系——核心功能体系与插件体系: 整个架构就成了一个微内核架构,我们将每个功能点抽象成一个接口,将这个接口作为插件的契约,然后把这个功能的接口与功能的实现分离并提供接口的默认实现

    1K20编辑于 2023-02-26
  • 来自专栏猿码优创

    RPC通信--HSF框架

    最近leader给了KingYiFan一个任务,就是对接某国企的业务,人家用的淘宝的HSF框架RPC通信 根本不用httpclient what??? RPC不是Dubbo底层协议吗?这怎么通讯呢? 有一个大佬人家自己封装了一个RPC通讯含监控中心(积分下载的)需要联系我哈。 ? 最后还是去老老实实看官网吧。 以下知识是我昨天学的,如有错误请指出。 HSF框架有两种开发方式(Ali-tomcat、Pandora Boot): ? 我们从Ali-tomcat开始说起。。 Ali-Tomcat概述: ? 一般都在默认maven环境 ~/.m2/settings.xml 中,在 settings.xml 中加入如下配置:) ? repository> <id>central</id> <url>http://repo1.maven.org/maven2<

    4.4K10发布于 2019-07-27
  • 来自专栏JavaEdge

    RPC服务治理框架实战(一) - RPC技术

    速度相对慢 可靠性减弱 2 RPC的流程环节 ? RPC调用过程中采用的消息协议称为RPC协议。 常见的RPC协议 ? 4 RPC框架(Java领域) 封装好参数编组、消息解组、底层网络通信的RPC程序开发框架,带来的便捷是可以直接在其基础上只需专注于过程代码编写。 ➢ 传统的webservice框架 Apache CXF ? Apache Axis2 ? Java 自带的JAX-WS ? webService框架大多基于标准的SOAP协议。 ➢ 新兴的微服务框架: Dubbo ? spring cloud alibaba ? Apache Thrift ?

    2.1K20发布于 2021-02-22
  • 来自专栏Java猫说

    RPC框架是啥?

    而分布式服务框架,除了包括RPC的特性,还包括多台Server提供服务的负载均衡、策略及实现,服务的注册、发布与引入,以及服务的高可用策略、服务治理等等。 那么RPC是什么呢? 1.调用客户端句柄;执行传送参数 2.调用本地系统内核发送网络消息 3.消息传送到远程主机 4.服务器句柄得到消息并取得参数 5.执行远程过程 6.执行的过程将结果返回服务器句柄 7.服务器句柄返回结果 这里再说一下关于Netty,Netty框架不局限于RPC,更多的是作为一种网络协议的实现框架,比如HTTP,由于RPC需要高效的网络通信,就可以选择Netty作为基础。 除了网络通信,RPC还需要有高效的序列化框架,以及一种寻址方式,如果是带会话(状态)的RPC调用,还需要有会话的状态保持的功能。 好了,让我们再来整理一下,什么是RPC? 序列化/反序列化:负责对RPC调用通过网络传输的内容进行序列化与反序列化,不同的RPC框架有不同的实现机制。

    2.9K20发布于 2019-05-06
  • 来自专栏JAVA乐园

    RPC 框架设计

    初识 RPC 服务化有什么好处? RPC 框架的架构职责 上述跨进程调用远端的服务,存在的问题是没有将通用操作抽离出来。 RPC框架职责: 让调用端,像调用本地函数一样,便捷的调用远程的服务 让服务端,像提供本地函数一样,便捷的提供远程的服务 向调用方屏蔽各种复杂性,向服务方也屏蔽各种复杂性,让调用方感觉上就是在调用本地函数一样 同步 RPC 系统架构,核心流程 ? RPC-server:IO线程,中间是一个队列,工作线程处理结果,返回。 连接池组件 ? 异步 RPC 系统架构,核心流程 ? 像调用本地函数一样,去调用一个远端服务 为什么需要 RPC 框架? 用来屏蔽 rpc 调用过程中,跟业务代码无关的底层技术细节 什么是序列化?为什么需要序列化?

    2.6K20发布于 2021-04-12
  • 来自专栏JavaEdge

    RPC服务治理框架实战(一) - 手写RPC

    1 从使用者考虑 用,户使用RPC框架开发过程时需要做什么? 定义过程接口 服务端实现过程 客户端使用生成的stub代理对象 2 设计客户端 客户端生成过程接口的代理对象 设计客户端代理工厂,用JDK动态代理即可生成接口的代理对象。 2、将请求的内容编组为消息这件事由谁来做? 3、消息协议是固定不变的吗?它与什么有关? 看框架对协议的支持广度,如果支持多种协议,就是会灵活变化的,它与具体的服务相关, A服务提供者可能选用的是协议1,B服务提供者可能选用协议2。 4、某服务是用的什么消息协议这个信息从哪来? 看看之后的设计 ➢ 过程注册模块:让用户将他们的过程注册到RPC框架 ➢ 过程暴露模块:想对外发布(暴露)服务注册、暴露可以由同一个类实现 RPCServer 中实现网络层: Netty, 使用RequestHandler

    1.4K00发布于 2019-11-16
  • 来自专栏菩提树下的杨过

    rpc框架之 avro 学习 2 - 高效的序列化

    同一类框架,后出现的总会吸收之前框架的优点,然后加以改进,avro在序列化方面相对thrift就是一个很好的例子。 .write(datum, encoder2); encoder2.flush(); out2.close(); byte[] byte2 = out2. result2 = reader2.read(null, decoder2); Assert.assertEquals(datum.get("ageStart"), result2.get 但是,凡事总有二面性,虽然avro在序列化方面做了不少改进,但是其RPC的实现并没有做出太多的创新,默认提供的HttpServer、NettyServer都是直接用的其它开源产品实现,不象Thrift自己提供了全新的实现 ,所以在RPC的性能方面,avro仍有很多可以优化的空间,默认情况下,从我自己测试的情况下,avro是不敌thrift的。

    2.1K60发布于 2018-01-18
  • 来自专栏CodeGuide | 程序员编码指南

    手写类似dubbo的rpc框架第三章《rpc框架

    2、客户端在启动的时候,连接到注册中心,也就是我们的redis。连接成功后将配置的生产者方法发布到注册中心{接口+别名}。 环境准备 1、jdk 1.8.0 2、IntelliJ IDEA Community Edition 2018.3.1 x64 3、windows redis 代码示例 ? (configs); } } 框架,测试结果 2019-....ClassPathXmlApplicationContext:prepareRefresh:510] - Refreshing bean.ProviderBean:setApplicationContext:35] - 注册生产者:org.itstack.demo.test.service.HelloService itStackRpc 0 框架应用 /rpc http://rpc.itstack.org/schema/rpc/rpc.xsd"> <!

    71520发布于 2020-07-14
  • 来自专栏golang开发笔记

    Golang之rpc框架rpcx

    前言 远程过程调用(Remote Procedure Call,缩写为 RPC)是一个计算机通信协议。通过该协议程序员可以实现像调取本地函数一样,调取远程服务的函数。 这里介绍一个高效的rpc库(rpcx)。 rpcx 是一个分布式的Go语言的 RPC 框架,支持Zookepper、etcd、consul多种服务发现方式,多种服务路由方式, 是目前性能最好的 RPC 框架之一。 性能 测试结果表明,除了标准rpc库之外,rpcx的性能要优于其他rpc框架。 快速开始 基本安装 go get -v github.com/smallnest/rpcx/... ": //peer2peer://127.0.0.1:8972 return client.NewPeer2PeerDiscovery("tcp@"+regAddr, ""), nil

    2.4K31发布于 2020-09-27
  • 来自专栏lgp20151222

    RPC框架设计思路

    RPC是指远程过程调用 1.要解决通讯的问题,主要是通过在客户端和服务器之间建立TCP连接,远程过程调用的所有交换的数据都在这个连接里传输。 2.要解决寻址的问题,也就是说,A服务器上的应用怎么告诉底层的RPC框架,如何连接到B服务器(如主机或IP地址)以及特定的端口,方法的名称名称是什么,这样才能完成调用。 比如基于Web服务协议栈的RPC,就要提供一个endpoint URI,或者是从UDDI服务上查找。如果是RMI调用的话,还需要一个RMI Registry来注册服务的地址。

    1.2K20发布于 2018-12-24
  • 来自专栏Java猫说

    RPC框架是啥之Java自带RPC实现,RMI框架入门

    学习系列 RPC框架是啥? Java自带RPC实现,RMI框架入门 首先RMI(Remote Method Invocation)是Java特有的一种RPC实现,它能够使部署在不同主机上的Java对象进行通信与方法调用,它是一种基于 让我们优先来实现一个RMI的RPC案例吧。 项目源码地址:RPC_Demo,记得是项目里面的comgithubrmi 1、首先我们需要为服务端创建一个接口方法,而且这个接口最好继承Remote package com.github.rmi.server public interface MyService extends Remote { String say(String someOne)throws RemoteException; } 2

    1.4K20发布于 2019-05-06
  • 来自专栏陶士涵的菜地

    PHP rpc框架hprose测试

    var_dump((yield $test->hello("yield world1"))); var_dump((yield $test->hello("yield world2" string(19) "Hello yield world2!" string(19) "Hello yield world3!" string(19) "Hello yield world4!"

    2.6K10发布于 2019-09-10
  • 来自专栏JavaEdge

    RPC框架的路由策略

    那对于我们的RPC框架来说,有什么的办法可以减少上线变更导致的风险吗?这就不得不提路由在RPC中的应用。具体好在哪里,怎么实现,我们接着往下看。 2 如何实现路由策略? RPC框架里具体咋实现? RPC的服务调用方通过服务发现,拿到所有服务提供方的IP地址,可利用这个特点? 这样改造,RPC调用流程变成: 这筛选过程在RPC就是“路由策略”,上例是常见的IP路由策略,用于限制可调用服务提供方的IP。 灰度发布功能是RPC路由功能的一个典型应用场景,通过RPC路由策略组合使用,可让服务提供方更加灵活地管理、调用自己的流量,进一步降低上线风险。 有以下几种方式: 1:通过环境隔离,线上+预发布+压测,当然也有测试+研发 2:服务别名路由,可以控制同机房调用或者流量直走某个分组 3:业务开关这个视具体情况而定,比如:用户黑白名单、四级地址维度切流

    1.4K20编辑于 2023-02-26
  • 来自专栏EAWorld

    微服务RPC框架选美

    1、RPC 框架谁最美? Hello,everybody! 说到RPC框架,可能大家能想到一堆RPC开源框架,那么在微服务平台中,微服务间的服务调用,不可避免的会遇到一个问题,该选用哪一个RPC框架好呢? 我是微博开源的一套高性能、易于使用的分布式远程服务调用(RPC)框架。 大家好,我是gRPC!我是Google开源的一套面向移动和HTTP/2设计的,高性能的、通用的远程调用框架2RPC框架的形体争美 配置方式 Motan:我支持 Xml 配置和 Spring注解配置。 Dubbo:我支持 Xml 配置 、 注解配置、 属性配置 、 API 配置 ! 如果你需要支持多语言,跨语言调用的RPC框架,选我吧! 看了以上三位RPC框架的选美比赛不知道大家是否都有了自己的选择。

    3.1K80发布于 2018-04-02
  • 来自专栏技术趋势

    spring整合各种RPC框架(netty、dubbo、dubbox、RPC、Motan)

    参考:https://techdifferences.com/difference-between-rpc-and-rmi.html 有哪些RPC框架? dubbo 阿里巴巴开源的一个高性能优秀框架。 目前市面上基本都是用该框架实现RPC远程调用。目前已移交给apache 维护。 dubbox 由当当网基于dubbo改造升级的一款rpc升级版! 它被当作一个远程过程调用(RPC框架来使用,是由Facebook为“大规模跨语言服务开发”而开发的。 新浪微博开源的一套千亿调用的轻量级 RPC 框架 。 总结 dubbo是业内一个非常优秀的开源RPC框架,基本大部分行业都在使用该框架

    1.7K20发布于 2021-01-18
  • 基于Netty手写RPC框架

    是基于TCP的狭义的RPC远程调用,以阿里的Dubbo为代表,主要通过netty来实现4层网络协议,NIO来异步传输,序列化也可以是JSON或者hessian2以及java自带的序列化等,可以配置。 2、创建一个提供者,该类需要监听消费者的请求,并按照约定返回数据。 3、创建一个消费者,该类需要透明的调用自己不存在的方法,内部需要使用 Netty 请求提供者返回数据。 </module> <module>rpc-provider</module> <module>rpc-consumer</module> </modules> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> </project> 2、 消费者有一个需要注意的地方,就是调用需要透明,也就是说,框架使用者不用关心底层的网络实现。

    21711编辑于 2025-11-20
领券