不做大哥好多年 不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核

逍遥子

不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核
  • GO基础

  • 面向对象

  • 并发编程

  • 常用库

  • 数据库操作

  • Beego框架

  • Beego商城

  • GIN框架

  • GIN论坛

  • 微服务

    • 01.RPC
      • 01.rpc概述
        • 1、What 是什么
        • 2、Why 为什么要使用
        • 3、When 什么时候使用
        • 4、How 如何实现
    • 02.protobuf
    • 03.gRPC
    • 04.micro简介
    • 05.consul
    • 06.go-micro
    • 07.nacos安装
    • 08.grpc注册nacos
    • 09.gin_grpc_nacos
    • 10.限流
  • 设计模式

  • Go
  • 微服务
xiaonaiqiang
2021-11-08
目录

01.RPC

# 01.rpc概述

# 1、What 是什么

  • RPC 是一种协议或机制,允许一个程序通过网络调用另一个程序中的函数或过程,就像调用本地函数一样

  • 使用 RPC,开发者可以让分布式系统中的不同服务之间进行通信,而不需要关心底层网络的传输细节

  • 在 RPC 中,调用方(客户端)发起请求,通过网络将请求传输到服务端,服务端执行相应的逻辑并返回结果

  • 常见的 RPC 实现包括 gRPC、Thrift、JSON-RPC、XML-RPC 等

# 2、Why 为什么要使用

  • 解耦系统:RPC 允许应用程序模块化,将不同功能划分为多个服务,从而增强系统的可维护性和可扩展性
  • 隐藏复杂性:开发者只需像调用本地函数一样使用 RPC,不需要处理底层的网络协议、数据序列化和反序列化等复杂操作
  • 跨语言支持:很多 RPC 实现(如 gRPC)支持多种编程语言,可以让用不同语言编写的服务互相调用
  • 高性能:通过高效的序列化协议(如 Protocol Buffers),RPC 实现了比基于文本的协议(如 REST)的更低的带宽和延迟

# 3、When 什么时候使用

  • 微服务架构:当系统由多个微服务组成时,服务间通信是必不可少的,RPC 提供了一种高效、可靠的通信机制
  • 跨系统调用:当多个系统需要进行远程调用时(例如,支付系统、用户系统等),RPC 可以实现跨进程或跨机器的调用
  • 高性能要求:当系统对通信延迟和带宽有较高要求时,使用高效的 RPC 协议(如 gRPC)可以显著提升性能
  • 需要双向流式通信:在需要长连接或实时通信的场景下(如视频流、实时聊天),RPC 通过流式传输(如 gRPC 的双向流)可以实现高效的消息交换

# 4、How 如何实现

  • 定义接口:首先需要定义客户端和服务端之间的通信接口在像 gRPC 这样的框架中,使用 Proto 文件来定义服务接口和消息格式

    syntax = "proto3";
    
    service Greeter {
        rpc SayHello(HelloRequest) returns (HelloReply);
    }
    
    message HelloRequest {
        string name = 1;
    }
    
    message HelloReply {
        string message = 1;
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
  • 生成代码:根据定义的接口,使用 protoc 编译生成客户端和服务端的代码这些代码负责序列化/反序列化消息,并处理网络传输

  • 实现服务端逻辑:在服务端实现接口中的业务逻辑例如,SayHello 服务会返回一个包含问候语的响应

  • 调用客户端:客户端通过调用生成的代码,发送请求到远程服务端并获取结果

  • 处理网络传输:RPC 框架会处理底层的网络通信、连接管理、超时和重试机制,开发者不需要显式处理这些问题

上次更新: 2024/10/15 16:27:13
101.nginx部署
02.protobuf

← 101.nginx部署 02.protobuf→

最近更新
01
04.数组双指针排序_子数组
03-25
02
08.动态规划
03-25
03
06.回溯算法
03-25
更多文章>
Theme by Vdoing | Copyright © 2019-2025 逍遥子 技术博客 京ICP备2021005373号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式