使用 grpc 开发 RPC 服务 (一)

本贴最后更新于 1986 天前,其中的信息可能已经时过境迁

前言

笔者最近换了一份工作从一家新零售公司去到一家做电子商务的公司,主要的编程语言也从 NodeJs 转为了 Go,因为新公司使用的是 grpc 做的微服务,所以要重新开始学习新的东西了,正好把这周学习的东西做个总结。
整个系列主要涉及 Golang、gRPC、go-micros、Docker、Docker-compose、consul,通过本系列,你可以了解到如何 1、使用 grpc/go-mircos 构建微服务,2、使用 docker 进行服务的部署,3、使用 consul 进行服务发现

grpc 简介

gRPC 是谷歌开源的一款跨平台、高性能的 RPC 框架,笔者目前主要使用它来进行后端微服务的开发。
可能会有的同学对 RPC 不太熟悉,其实在笔者看来,RPC 和 HTTP 并无多大的区别都是一种调用方式,区别则是在于 RPC 会限制传输协议、传输的参数等,以此换取高效的传输流程,比如 grpc 就使用的是 google 开源的 protobuf 协议,使用 TCP 的方式进行传输,使得请求比起普通的 JSON+HTPP 更加快捷。关于更多 protobuf 的信息,可以查看这里

必要的准备

  • 了解 Golang 及其生态
  • 安装 gRPc 及 protobuf,教程
  • 安装 golang
  • 安装 protobuf 编译器

本期目标

本期目标是使用 gRPC 实现一个非常小的微服务 user-service,服务的功能非常简单,只提供一个获取用户信息的接口

一、首先我们需要定义好整个服务的 protobuf 文件 user.proto
二、我们来实现 server.go

首先我们应该明确实现的步骤:
1、实现 GetUserInfo 接口
2、使用 gRPC 建立服务,监听端口
3、将我们实现的服务注册到 gRPC 中去
话不多说,代码如下

结语

至此,我们已经学会使用 gRPC 进行开发,采用 protobuf 进行参数的定义,下一篇笔者将会使用 grpc-gateway 将 RPC 接口转换为 rest 接口供客户端调用,而不需要客户端实现 RPC,这也是现在主流微服务的一种服务提供方式,对外使用 REST,对内使用 RPC,关于更多微服务的内容,推荐查看 nginx 的关于微服务的文章

  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    96 引用 • 155 回帖
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    497 引用 • 1388 回帖 • 277 关注
  • gRpc
    11 引用 • 9 回帖 • 70 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...