之前的文章中我已经简单的介绍了微服务 https://www.cnblogs.com/makelu/p/11005736.html,微服务特性是轻量级跨平台和跨语言的服务,也列举了比较了集中微服务通信的手段的利弊,本文将通过RPC通信的方式实现一个增删查Redis的轻量级微服务示例,大部分内容翻译自https://medium.com/@felipe.infantino.moreno/microservice-in-golang-using-redis-and-grpc-865587aa260c,中间加上自己的实践和理解。
实验环境
Mac OS
go version go1.12.4 darwin/amd64
Docker version 18.09.2, build 6247962
代码仓库
https://github.com/felipeinfantino/microservice-golang
微服务实践 gRPC代码生成
因为我们要实现一个通过gRPC通信的基于Redis 数据库的增删改微服务,所以我们首先需要定义一个gRPC的通信描述文件server.proto:
syntax = "proto3"; package proto; // Server Requests message SetRequest{ string key = 1; string value = 2; } message GetRequest{ string key = 1; } message DeleteRequest{ string key = 1; } // Server Response message ServerResponse{ bool success = 1; string value = 2; string error = 3; } // Define service service BasicService{ rpc Set(SetRequest) returns (ServerResponse); rpc Get(GetRequest) returns (ServerResponse); rpc Delete(DeleteRequest) returns (ServerResponse); }