使用flask进行web开发的话怎么搭配使用go进行并发处理

go的并发很优秀,这里我就不吹嘘了,大神们,我想知道如果使用flask(我只熟悉flask,tornado没用过)开发完web之后,碰到高并发的话怎么结合go解决并发问题?
1.整个应用迁到go,用go重写?
2.还是通过rpc然后将整个并发请求处理都迁到go?
3.还是有其它的处理方式?
诚信求助,架构这块并不是很熟。

阅读 6k
5 个回答

我推荐第二种做法,也就是现在比较流行的微服务架构,让适合的语言做适合的事情,将对并发要求比较高的业务交给go来写,两者之间通过rpc通讯。

整个重写的话任务量比较大。,不建议使用用反射机制路由的框架。
可以用go实现 restful api 。
也可以使用 tornado 结合flask

将有应对高并发需求的URL用Go实现,然后用Nginx反向代理。
这样会有session问题,可以改成使用外部session或者JWT

如果是多端rest调用的话,直接以微服务的方式,把go写的映射到域名某个路径就好了 比如:domain.com/api/go/xxx/xxx, 做好session共享就好了,一般用token之类的。

如果只是单应用,用sock或rpc都可以。或者直接加载 lib.dll/lib.so 方式都行。

flask照样能够应付高并发的,以我的经验,使用flask+uwsgi+mongodb,1秒钟几千个请求(一天可以处理上亿的pv)都是能够轻松应付的。我觉得,一般并不是换了go就能解决高并发的问题。性能的问题,无非取决于几点,数据库(一般是索引)是并发最主要的瓶颈,其次是uwsgi等的生产环境工具使用,redis等缓存的使用,再到业务逻辑实现的思路,再到部署服务器的硬件配置,如磁盘io,网络等。

推荐问题