进行中的微服务消息传递

时间:2018-08-21 16:05:07

标签: go protocol-buffers microservices grpc

我正在从事一个将服务从单一代码库中分离出来的项目。当前,我正在使用的两个服务是登录/身份验证服务,提供一些REST API端点的服务以及提供REST API的数据检索服务。我需要这些服务来相互交换数据,特别是数据检索需要将数据发送到REST API,而REST API需要与登录服务交换身份验证请求/响应。

go世界中选择的技术似乎是protobufs和gRPC。我一直在研究使用这些工具,但似乎确实很不方便,所以我想知道我是否做错了事。

例如,我的数据检索从RDBMS获取记录,而我的REST API将此数据作为JSON进行处理。通常,我会为数据库/ API中的每种记录类型定义一个“模型”结构,在结构定义中使用数据库和JSON的反射批注,并使用类似sqlx的查询结果扫描到结构中,并使用encoding / json进行序列化构造成JSON。但是,如果我想使用gRPC和protobufs传递数据,则整个设置都超出了窗口。由于protobuf生成自己的结构类型,因此对于我定义的每种消息类型,我都必须手动实现从SQL行到protobufs以及从protobufs到JSON的转换。实施转换并非难事,但它为bug和代码脆弱性带来了更多机会,并且感觉就像是在重新发明轮子。

这似乎应该是一个非常普遍的问题。我是否缺少一些明显的解决方案?

0 个答案:

没有答案