如何使用 Go 语言开发微服务
微服务是一种非常热门的架构设计理念,其主张将单个应用程序拆分为一组小型服务,每个服务都单独部署运行,并且这些服务之间通过轻量级的方式进行通信。
1. Go 语言 RPC 标准库
Go 语言自带一个 RPC 标准库 ,通过该标准库,我们可以很方便地实现 RPC 服务端与客户端程序。
1.1 使用入门
Go 语言原生的 RPC 标准库在 rpc 包中,该包定义了 RPC 相关的结构体。 其中,rpc.Server 表示 RPC 服务端,rpc.Client 表示 RPC 客户端。我们基于这两个结构体实现一个 RPC 服务。不过,Go 语言对自定义的 RPC 服务有一些约束,其要求 RPC 服务提供的每一个方法都必须满足一定条件,参考 Go 语言源码中的注释:
- the method's type is exported.
- the method is exported.
- the method has two arguments,both exported (or builtin) types.
- the method has return type error.
In effect,the method must look schematically like
func (t *T) MethodName(argType T1,replyType *T2) error
参考上面的注释,RPC 服务提供的每一个方法都必须满足上述 5 个条件:方法的类型必须是可导出的,即方法接收者的名称必须首字目大写;方法必须是可导出的,即方法名称必须首字母大写;方法必须有两个输入参数,并且这两个参数的类型必须是可导出的,或者是 Go 语言内置类