关于grpc和flask实现微服务有什么本质区别?
来源:19-6 分层微服务架构

南森_
2021-08-04
我在网上看到有人说也可以用flask实现微服务,但为什么用grpc?
我的理解:
1:flask基于http的明文,效率低。
2:flask是单进程,需要用gunicorn才能开启多线程或者协成,占用服务器资源
我想知道用grpc而不用flask更根本的原因是什么呢?
因为我觉得如果用flask,然后大家统一用json传参,很多语言也都支持json,这样也可以实现微服务啊!
1回答
-
首先说结论:微服务是架构,你用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倍
412021-08-05
相似问题