首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏JAVA乐园

    RPC 框架设计

    初识 RPC 服务化有什么好处? 需要设计“应用层报文(协议)” “跨进程”“远程”调用的过程 ? RPC 框架的架构职责 上述跨进程调用远端的服务,存在的问题是没有将通用操作抽离出来。 RPC框架职责: 让调用端,像调用本地函数一样,便捷的调用远程的服务 让服务端,像提供本地函数一样,便捷的提供远程的服务 向调用方屏蔽各种复杂性,向服务方也屏蔽各种复杂性,让调用方感觉上就是在调用本地函数一样 方案二:序列化协议 序号 | key 长度 | key 值 | value 长度 | value 值 序列化协议设计,要考虑什么因素? 像调用本地函数一样,去调用一个远端服务 为什么需要 RPC 框架? 用来屏蔽 rpc 调用过程中,跟业务代码无关的底层技术细节 什么是序列化?为什么需要序列化?

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

    RPC框架设计思路

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

    1.2K20发布于 2018-12-24
  • 来自专栏开源 & 技术分享

    Gin 框架: RPC 错误码设计

    [up-0a825d1cd4627ac0fd1ec48fdbbbc152c9e.png] 介绍 本文通过一个完整的例子,介绍如何在 Gin 框架设计合理的 API 错误码。 我们将会使用 rk-boot 来启动 Gin 基于框架的微服务。 请访问如下地址获取完整教程: https://rkdocs.netlify.app/cn 考虑范围 一个合理的 RPC 错误,需要考虑如下几个方面。 完整例子 1.创建 boot.yaml boot.yaml 文件描述了 Gin 框架启动的原信息,rk-boot 通过读取 boot.yaml 来启动 Gin。 在 RPC 实现中,我们试着让系统崩溃,看看 rk-boot 会如何自动捕获,并且返回何种信息给用户。

    1.7K30编辑于 2021-12-13
  • 来自专栏开源 & 技术分享

    Echo 框架: RPC 错误码设计

    [up-58a544fdbabf0cbe595101a22c96e107df3.png] 介绍 本文通过一个完整的例子,介绍如何在 Echo 框架设计合理的 API 错误码。 我们将会使用 rk-boot 来启动 Echo 基于框架的微服务。 请访问如下地址获取完整教程: https://rkdocs.netlify.app/cn 考虑范围 一个合理的 RPC 错误,需要考虑如下几个方面。 完整例子 1.创建 boot.yaml boot.yaml 文件描述了 Echo 框架启动的原信息,rk-boot 通过读取 boot.yaml 来启动 Echo。 在 RPC 实现中,我们试着让系统崩溃,看看 rk-boot 会如何自动捕获,并且返回何种信息给用户。

    1K20编辑于 2021-12-13
  • 来自专栏JavaEdge

    如何设计一个RPC框架?

    很多语言都内置了RPC技术。 看框架对协议的支持广度,如果支持多种协议,就是会灵活变化的,它与具体的服务相关, A服务提供者可能选用的是协议1,B服务提供者可能选用协议2。 某服务是用的什么消息协议这个信息从哪来? 把发现者设计出来, 要求:可灵活支持多种发现机制 想要做到可以支持多种协议,类该如何设计? 设计客户端协议层 定义框架标准的请求, 响应类 将协议层扩展为四个 消息协议独立为一层(客户端、服务端均需要) 网络层 发送请求,获得响应 要发起网络请求,则须知道服务地址 客户端完整类图 看看之后的设计 ➢ 过程注册模块:让用户将他们的过程注册到RPC框架 ➢ 过程暴露模块:想对外发布(暴露)服务注册、暴露可以由同一个类实现 RPCServer 中实现网络层: Netty, 使用

    71620编辑于 2022-11-30
  • 来自专栏芋道源码1024

    如何设计一个 RPC 框架

    服务框架设计 尽管不同的分布式服务框架实现细节存在差异,但是核心功能差异不大,下面的架构图描绘了一个分布式服务框架的整体逻辑架构。 ? RPC 层,这里就是 RPC 框架的核心部分,包括通信框架,序列化框架,还有用于屏蔽底层通信框架和序列化框架的抽象接口。 分布式服务框架通常会包含另外两个重要功能:服务治理中心 和 服务注册中心。 服务框架的性能指标 分布式服务框架的性能肯定比不上本地调用,原因是:网络通信,序列化,反射调用,动态代理这些都会消耗性能。所以需要有性能指标。 服务生命周期管理 故障快速定位 服务安全 总结 以上就是在设计分布式服务框架需要注意的地方,例如整体架构的设计框架需要哪些功能,框架的需要保证哪些性能。 同时,一个框架只是可以使用时不够的,还需要服务治理,保证服务不被腐化,同时保证服务的健康。 引用 《分布式服务框架——原理和实践》——李林峰

    1.1K40发布于 2019-11-04
  • 来自专栏开源 & 技术分享

    GoFrame 框架: RPC 错误码设计

    [up-4d0fb8739b7b1239d0f1aa2aea7e575d1af.png] 介绍 本文通过一个完整的例子,介绍如何在 GoFrame 框架设计合理的 API 错误码。 请访问如下地址获取完整教程: https://rkdocs.netlify.app/cn 考虑范围 一个合理的 RPC 错误,需要考虑如下几个方面。 github.com/rookie-ninja/rk-boot go get github.com/rookie-ninja/rk-gf 快速开始 通过 rk-boot ,用户可以轻松搭建 GoFrame 框架微服务 完整例子 1.创建 boot.yaml boot.yaml 文件描述了 GoFrame 框架启动的元信息,rk-boot 通过读取 boot.yaml 来启动 GoFrame。 在 RPC 实现中,我们试着让系统崩溃,看看 rk-boot 会如何自动捕获,并且返回何种信息给用户。

    1K30编辑于 2021-12-22
  • 来自专栏Linyb极客之路

    RPC框架设计和调用详解

    对消费者来时,在RPC调用过程中,使用第1步、第2步、第3步、第4步是透明的,其他的都是使用RPC框架去封装这些事情。 当然,RPC框架不会让容器中的每一个框架都会被调用,所以只有注册了的Bean才会被RPC的请求调用到。 这样,一个完整的RPC调用反馈链条就完成了。 1.消费者设计 ? 图二 消费者设计 ①代理层: 消费者将对应的接口,通过RPC框架的代理来生成一个对象到Spring容器中。 以上就是RPC协议的设计理念,理解学习RPC有助于我们更好的理解分布式服务框架,这属于分布式服务的基础

    1.6K20发布于 2018-07-26
  • 来自专栏腾讯技术工程官方号的专栏

    RPC 到服务化框架设计

    一、RPC 基本框架 1-1、RPC 基本框架 理解 RPC RPC 的概念就是远程过程调用。 到这里,RPC 框架的重点的 4 大部分就介绍完毕了,现在再来看看,常见的 RPC 框架: 1-3、常见 RPC 框架 RPC 框架就是在 RPC 协议的基础上,来完善一些偏向业务实际应用的功能,从而满足不同场景的业务诉求 1-3-2、跨语言调用型 RPC 框架 业界比较出名的跨语言调用型的 RPC 框架有 : gRPC 是 Google 开发的高性能、通用的开源 RPC 框架。 :) 1-3-3、常见 RPC 框架对比 二、通用的服务化框架设计 我们一般讲的微服务框架包含了 RPC 框架,微服务体系中最重要的就是 RPC 框架,并且是一般是偏向服务治理的 RPC 框架。 在服务化框架的隔离设计中,我们同样是采用类似的技术来让我们的故障得到隔离。因此这里的重点就是需要我们对系统进行分离。一般来说,有两种方式,一种是以服务的类型来做分离,一种是以用户来做分离。

    1.4K72发布于 2021-11-15
  • 来自专栏后端系统和架构

    RPC 到服务化框架设计

    目前互联网系统都是微服务化,那么就需要 RPC 调用,因此本文梳理了从 RPC 基本框架协议到整个服务化框架体系建设中所包含的知识点,重点在于 RPC 框架 和 服务治理能力的梳理,本文定位于一个科普性质的文章 一、RPC 基本框架 1-1、RPC 基本框架 理解 RPC RPC 的概念就是远程过程调用。 到这里,RPC 框架的重点的 4 大部分就介绍完毕了,现在再来看看,常见的 RPC 框架: 1-3、常见 RPC 框架 RPC 框架就是在 RPC 协议的基础上,来完善一些偏向业务实际应用的功能,从而满足不同场景的业务诉求 1-3-2、跨语言调用型 RPC 框架 业界比较出名的跨语言调用型的 RPC 框架有 : gRPC 是 Google 开发的高性能、通用的开源 RPC 框架。 :) 1-3-3、常见 RPC 框架对比 二、通用的服务化框架设计 我们一般讲的微服务框架包含了 RPC 框架,微服务体系中最重要的就是 RPC 框架,并且是一般是偏向服务治理的 RPC 框架

    65451编辑于 2022-11-29
  • 来自专栏后端系统和架构

    RPC 到服务化框架设计

    RPC 到服务化框架设计目前互联网系统都是微服务化,那么就需要 RPC 调用,因此本文梳理了从 RPC 基本框架协议到整个服务化框架体系建设中所包含的知识点,重点在于 RPC 框架 和 服务治理能力的梳理 一、RPC 基本框架1-1、RPC 基本框架理解 RPCRPC 的概念就是远程过程调用。 到这里,RPC 框架的重点的 4 大部分就介绍完毕了,现在再来看看,常见的 RPC 框架:1-3、常见 RPC 框架RPC 框架就是在 RPC 协议的基础上,来完善一些偏向业务实际应用的功能,从而满足不同场景的业务诉求 1-3-2、跨语言调用型 RPC 框架业界比较出名的跨语言调用型的 RPC 框架有 :gRPC 是 Google开发的高性能、通用的开源RPC框架。 :)图片1-3-3、常见 RPC 框架对比图片二、通用的服务化框架设计我们一般讲的微服务框架包含了 RPC 框架,微服务体系中最重要的就是 RPC 框架,并且是一般是偏向服务治理的 RPC 框架

    66061编辑于 2022-11-14
  • 来自专栏开源519

    嵌入式RPC框架设计实践:六大核心类构建高效RPC框架

    嵌入式RPC框架设计实践:六大核心类构建高效RPC框架 引言   在先前发布的文章中,我们构建了RPC底层数据传输的基础设计并实现了其功能(详尽代码与深入分析可参阅《实战高效RPC方案在嵌入式环境中的应用与揭秘 高度抽象与易用性设计 框架设计应隐藏复杂的数据通信逻辑,为开发者提供简洁直观的API接口,使得远程方法调用如同调用本地函数一样直接和自然。 注:由于是针对嵌入式环境定制的RPC框架设计,重点聚焦于核心实用功能,鉴于资源限制与特定场景需求,主要将注意力集中于以上基本需求,暂不涵盖如数据加密等高级安全特性和跨语言交互能力。 本文章重心主要聚焦软件设计,旨在简化RPC框架的使用体验,提升易用性。 RPC通信核心在于参数传递与返回值的高效同步。该过程依托共享内存与信号量技术,确保数据流畅传输与操作同步,提升交互效率。 RPC框架的实践不仅为项目提供便捷工具,也能够深入了解RPC技术底层逻辑与原理,从技术和设计的层面提升自己。 最后 用心感悟,认真记录,写好每一篇文章,分享每一框干货。

    40710编辑于 2025-02-27
  • 来自专栏JavaEdge

    RPC框架设计的安全性考量

    RPC是解决应用间互相通信的框架,而应用之间的远程调用过程一般不会暴露在公网,RPC一般用于内部应用通信。 “内部”指应用都部署在同一大局域网。 相对公网环境,局域网隔离性更好,相对安全,所以在RPC里很少考虑数据包篡改、请求伪造等。 那RPC里应关心什么安全问题? 对服务调用方就更简单,只要拿到刚才上传到私服的Jar坐标,就可把发布到私服的Jar引入项目,借助RPC动态代理功能,服务调用方直接就可在项目完成RPC调用。 调用方 -> 提供方++ : 真实业务请求 提供方 --> 调用方-- : 返回结果 @enduml 这种设计没问题,整个认证过程对RPC使用者透明。 觉得rpc好像跟k8s有点像,k8s是类似把一个大服务拆分成很多模块,完了之后来把这些微服务管理起来,而rpc是提供了一系列接口,通过网络的方式,让各个调用方去调用。 k8s可以看做rpc升级版本。

    97320编辑于 2023-02-26
  • 来自专栏系统架构

    手搓RPC框架系列(一):基于架构设计原则的RPC基础架构设计

    Dubbo作为国内最流行的RPC框架之一,它的设计理念和架构的实现充分体现了我们之前学习的各种架构设计原则。 基于SOLID原则的核心组件设计单一职责原则(SRP)因为远程调用是RPC框架的核心功能,所以我们将RPC框架拆分为多个职责单一的组件:Proxy层:主要是负责将客户端的本地方法调用转换为远程调用Registry 框架的核心架构图基于以上设计原则,我们可以画出RPC框架的核心架构图:四、核心组件的详细设计1. 、总结与下一步计划在上文中,我们基于SOLID原则和通用设计原则,设计了一个类似Dubbo的RPC框架的基础架构。 在下一篇文章中,我们将进入实战阶段,实现RPC框架的核心功能,包括服务代理、序列化、网络通信等模块。互动话题:你对RPC框架设计有什么看法?你认为RPC框架中最重要的组件是什么?

    28310编辑于 2025-12-16
  • 来自专栏菩提树下的杨过

    rpc框架之HA负载均衡构架设计

    thrift、avro、grpc之类的rpc框架默认都没有提供负载均衡的实现,生产环境中如果server只有一台,显然不靠谱,于是有了下面的设计,这其实是前一阵跟北京一个朋友在qq群里交流的结果,分享一下 主要思路: 1、rpc server端以多实例方式运行(多端口或多机部署均可),启动时每个实例向zk集群以临时节点方式注册(这样,遍历zk上/server下有多少个临时节点就知道有哪些server实例在线 需要考虑的细节: 连接池其实是关键,要设计完善的话,还是有很多细节要认真考虑: a) 连接池的初始连接数、最低连接数、最大连接数,这些都是要考虑的。

    1.5K80发布于 2018-01-18
  • 来自专栏有文化的技术人

    RPC框架思考

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

    41310编辑于 2023-11-30
  • 来自专栏JAVA基础知识

    RPC 框架简介

    连接管理:RPC 框架通常会管理与远程服务之间的连接,包括连接的建立、保持和释放等。RPC 和 RESTful 区别使用 RPC 和 RESTful 都可以对其他服务进行调用,那么它们有什么区别呢? 首先是面对的对象不同,RESTful 是面向资源的设计架构,但在系统中有很多对象不能抽象成资源,比如登录,修改密码等。而 RPC 可以通过动作去操作资源。 RPC 框架目前有很多成熟的 RPC 框架,比如dubbo、thrift 和 spring cloud,它们都广泛应用于各种分布式服务中,具有以下优点:一般使用长链接,不必每次通信都要3次握手,减少网络开销 许多 RPC 框架支持自动生成客户端和服务端的代码,减少了开发人员的工作量。RPC 框架通常提供了安全机制,包括数据传输加密、身份认证和授权等功能。 RPC 框架可以提供透明的远程调用,使得调用方无需关心调用的具体实现细节,从而降低了系统的耦合度。

    95910编辑于 2024-10-16
  • 来自专栏全栈程序员必看

    RPC接口设计_java rpc项目

    还有很多了,本文的目标就是帮助大家思考,如何设计自己的远程接口,让接口做到健壮、易用,节省大家在这块泥潭中所挣扎的时间。 老师将在这里给大家设计一个集中式的日志系统。 RPC调用 什么是RPC调用 RPC(Remote Procedure Call)远程过程调用,一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的技术实现。 RPC采用C/S模式。 … 苍老师 一次完整的RPC调用一共分10步,每一步都有可能出错,所以在设计一个远程接口的时候必须充分考虑到所有的出错可能,与客户端约定出错的应对方案。 所以当你定出了远程接口设计规范之后,如何面对老接口则成了一个头疼的问题。

    1.9K20编辑于 2022-11-04
  • 来自专栏开源 & 技术分享

    gorillamux 框架(rk-boot): RPC 错误码设计

    [up-969bcb79c693e6960833ae8d639bdce9745.png] 介绍 本文通过一个完整的例子,介绍如何在 gorilla/mux 框架设计合理的 API 错误码。 请访问如下地址获取完整教程: https://github.com/rookie-ninja/rk-mux 考虑范围 一个合理的 RPC 错误,需要考虑如下几个方面。 details":[] } } 安装 go get github.com/rookie-ninja/rk-boot/mux 快速开始 通过 rk-boot ,用户可以轻松搭建 gorilla/mux 框架微服务 完整例子 1.创建 boot.yaml boot.yaml 文件描述了 gorilla/mux 框架启动的元信息,rk-boot 通过读取 boot.yaml 来启动 gorilla/mux。 在 RPC 实现中,我们试着让系统崩溃,看看 rk-boot 会如何自动捕获,并且返回何种信息给用户。

    78430编辑于 2022-02-15
  • 来自专栏Java后端技术栈cwnait

    美团面试:如何设计一个RPC框架

    hi 大家好,我是田哥,现在全职做技术分享和面试辅导(详情点击) 你是否在面试的时候,被面试官问: 如何设计一个注册中心? 如何设计一个消息队列? 如何设计一个持久化框架? 如何设计一个RPC框架? 如何设计一个MVC框架? ...... 今天,就来聊聊“如何设计一个RPC框架”,那么首先明确一个问题什么是 RPC 呢? RPC是Remote Procedure Call的缩写,即远程过程调用。 RPC 调用的基本流程 现在业界内比较流行的一些 RPC 框架,例如 Dubbo 提供的是基于接口的远程方法调用,即客户端只需要知道接口的定义即可调用远程服务。 综上所述,一次基本的 RPC 调用流程大致如下: 基本实现 服务端(生产者) 服务接口: 在 RPC 中,生产者和消费者有一个共同的服务接口 API。 在 Java 领域 Netty 是一款高性能的 NIO 通信框架,很多的框架的通信都是采用 Netty 来实现的,本例中也采用它当做通信服务器。

    2.2K20编辑于 2022-03-22
领券