关于grpc和flask实现微服务有什么本质区别?

来源:19-6 分层微服务架构

南森_

2021-08-04

我在网上看到有人说也可以用flask实现微服务,但为什么用grpc?
我的理解:
1:flask基于http的明文,效率低。
2:flask是单进程,需要用gunicorn才能开启多线程或者协成,占用服务器资源

我想知道用grpc而不用flask更根本的原因是什么呢?

因为我觉得如果用flask,然后大家统一用json传参,很多语言也都支持json,这样也可以实现微服务啊!

写回答

1回答

bobby

2021-08-05

首先说结论:微服务是架构,你用grpc和fask都可以实现微服务架构,但是:

    1. 微服务强调的是对外是一个整体,但是本质上是内部之间的互相调用,比如你对外提供一个下订单的功能,但是实际上这个接口内部有很多服务协作完成,这些服务之间少不了互相调用

    2. 这些服务之间由于是内部系统的调用。所以你用什么都无所谓,你用flask也可以啊,但是有几个问题:

            1. 这些服务调用会经常调用所以互相调用你得维护接口吧。你用http维护很要命的,不容易维护

             2. 你走http协议没问题啊,但是效率低啊,我内部服务你走http协议,每次请求都会重新连接,这样高并发的时候你这不是要命么,我内部服务被调用可能次数很高,你让我用http每次调用都重连这不要明显要命么。你要知道tcp的耗时主要就是在3次我手上,你要是可以让flask不用3次握手你也可以放心用flask啊

            3. 本来http协议就慢了,你再来一个json协议,当然也没有问题啊,但是json的解析慢啊,你本来就慢还采用一个慢的解析协议,本来我走http2.0+protobuf本来3ms就能搞定,你走http+json需要15ms,你的耗时就是我的5倍,并发低的时候你可以这样做啊,但是高并发的时候我用你干嘛,性能低了5倍

4
1
南森_
非常感谢!
2021-08-05
共1条回复

Go+Python打造电商系统 自研微服务框架 抓紧高薪机遇

快速转型Go工程师,成为具备双语言后端能力的开发者

508 学习 · 530 问题

查看课程