从1开始,扩展Go语言后端业务系统的RPC功能
这次我们接上一篇文章《从0开始,用Go语言搭建一个简单的后端业务系统》,利用Google开源的RPC框架—gRPC来进行对接口的RPC功能横向扩展,也就是用RPC协议将restful的HTTP协议重写一遍。 那么对于gRPC不是很了解的同学可以尝试着学一下我之前写过的这篇文章:《Go使用grpc协议通信实战》,以及《一文带你搞懂HTTP和RPC协议的异同》,相信有了这些知识作为铺垫之后,...

RPC框架之Thrift—实现Go和Java远程过程调用
官网:https://thrift.apache.org/ 1 概览 +-------------------------------------------+ | Server | | (single-th...

Go语言RPC实战:打造自己的远程调用服务
概述在分布式系统中,远程过程调用(RPC)是一种关键的通信方式,而 Go 语言提供了强大的 RPC 支持,使得在网络间实现函数调用变得更加便捷。本文将探讨 Go 语言中 RPC 的基础概念、实现方式,并通过示例代码演示如何模拟远程过程调用系统。 1. RPC 基础概念1.1 什么是 RPCRPC 是一种远程过程调用的协议,允许程序调用其他地址空间(通常是网络上的另一台机器)的过程。....
Go 微服务框架 go-micro 使用客户端 RPC 调用服务端方法返回 408 怎么解决?
介绍本文我们使用 go-micro 构建微服务的服务端和客户端,并使用 gin 集成客户端构建 HTTP Api,在代码中模拟客户端 RPC 调用服务端方法返回 408 的问题,以及怎么解决?客户端输出日志:{"id":"go.micro.client","code":408,"detail":"context deadline exceeded","status":"Request Timeo....
Go 使用标准库 net/rpc 包
01RPC 是什么?RPC 是远程过程调用(Remote Procedure Call),用于调用方和被调用方两个进程间的交互,并且提供类似本地方法调用的形式。RPC 广泛用于在分布式系统中不同节点间的通信。02Go 语言 RPC 标准库在 Go 语言的标准库中,也提供了一个简单的 RPC 实现(net/rpc)。rpc 包提供对对象在网络或其他 I/O 连接中导出方法的访问。服务器端注册对象,....
Go语言学习 - RPC篇:gRPC-Gateway定制mux选项
概览 通过上一讲,我们对gRPC的拦截器有了一定的认识,也能定制出很多通用的中间件。 但在大部分的业务系统中,我们面向的还是HTTP协议。那么,今天我们就从gRPC-Gateway的mux选项出发,一起来看看一些很实用的特性。 ServeMux import "github.com/grpc-ecosystem/grp...
Go语言学习 - RPC篇:gRPC拦截器剖析
概览 我们在前几讲提到过,优秀的RPC框架都提供了middleware的能力,可以减少很多重复代码的编写。在gRPC-Gateway的方案里,包括了两块中间件的能力: gRPC中的ServerOption,是所有gRPC+HTTP都会被处理gRPC-Gateway中的ServeMuxOption,只有HT...
Go语言学习 - RPC篇:深入gRPC-Gateway-探索常用数据类型
概览 gRPC-Gateway的相关方案我们已经在上一篇详细描述。为了更方面地方便大家理解,我这边整理了一个最简化的git项目:https://github.com/Junedayday/grpc-gateway-buf-example/tree/v0.0.1 它主要包含两个特点: 用buf工具构建项目同时启动了gRPC和gRPC-Gateway服务&...
Go语言学习 - RPC篇:gRPC-Gateway示例代码概览
概览 gRPC-Gateway是gRPC生态的一环,用于对HTTP协议的扩展,是一套高性能、高扩展的开源RPC框架。 因此,要掌握gRPC-Gateway,必须要对gRPC有一定的基础,才能明白它的定位与价值。 方案概览 整个方案分为两个方向: 纵向 - RPC协议调用 三个模块: 调用方 - API Client HTTP服务 - Reverse Proxy gRPC...

Go语言学习 - RPC篇:gin框架的基础能力剖析
gin框架gin是非常流行的一款HTTP框架。相较于原生的HTTP server,gin有很多改进点,主要在于3点:上手简单,开发思路与原生HTTP基本一致引入多个工具库,提高了开发效率生态丰富,有许多开源的组件围绕着gin框架,我们将展开今天的话题。// 请求结构体 type MyRequest struct { MyInfo string `form:"my_info" json:"...

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。
开发与运维
集结各类场景实战经验,助你开发运维畅行无忧
+关注