有大佬使用 Python 技术栈搞过微服务么?

2021-04-12 16:55:46 +08:00
 15399905591
目前准备使用 flask 搭建微服务,但是有以下问题不知道解决

1 、网关怎么处理?
2 、注册中心问题
3 、分布式事务问题

上面这些问题在 java 微服务网关有 Spring Cloud 那一套, 那 python 使用什么技术栈呢?
4017 次点击
所在节点    Python
35 条回复
liuhan907
2021-04-12 23:50:54 +08:00
@sujin190
有当然是有的,但是通常都不是完全的无侵入,需要在表结构上修改。
laike9m
2021-04-13 02:14:49 +08:00
abersheeran
2021-04-13 09:22:56 +08:00
@15399905591 Java 用的什么,Python 就可以用什么。我又不知道你业务需求侧重哪儿,你按照需求去 Java 生态圈挑服务,再找 Python 实现的客户端去用就完事了。

另外,看你在 12 楼的回复,你对分布式事务的原理似乎不太清楚?建议先去了解了解,你才好做权衡。
seven123
2021-04-13 09:39:55 +08:00
python 搞微服务小点的还行,服务多了,架构大了还是上 Spring Cloud Alibaba 吧,大而全的解决方案不用白不用...

网关注册这些用 k8s 就可以搞定,分布式事物这边 java 又比较多的选择,而 python 似乎没有现成的解决方案,不过还有一部分公司是使用 MQ 消息队列来做的分布式事务。你也可以考虑自己实现一个。
ykb8121
2021-04-13 10:32:25 +08:00
好久之前用过 ele 开源的 thrift 搞微服务 https://github.com/Thriftpy/thriftpy 有不少坑。 现在是直接用 rpc 来调了 Pyro
https://pyro5.readthedocs.io/en/latest/ db 同步一致直接用的 etcd,不过有很多局限性
15399905591
2021-04-13 11:23:52 +08:00
@abersheeran 其实就是项目越做做大,原来用的单体架构,已经越来越不能满足业务需求了,现在需要进行服务拆分。
15399905591
2021-04-13 11:26:31 +08:00
@seven123 深有同感,python 在 web 方向确实感觉比较弱,缺少生态, 好多轮子都要自己造,java go 在这方面好很多。
15399905591
2021-04-13 11:27:06 +08:00
@15399905591 多谢, 我去研究下
catchexception
2021-04-13 13:44:08 +08:00
反驳上面某个说法:分布式事务并不是调用第三方服务 API 。
核心问题是保证最终的数据一致性问题,而常见的做法往往是通过可靠消息来实现异步确保型的最终一致。
zoharSoul
2021-04-13 16:18:30 +08:00
@sujin190 存在的, 比如阿里的 seata
sujin190
2021-04-13 16:37:29 +08:00
@liuhan907 #21
@zoharSoul #30 但是这种并不能很好处理多服务的分布式事务,很多时候并不能通过简单回滚数据库操作就能回滚各服务的全部操作,你们说的这种应该叫做单服务的多数据库分布式事务,比如楼主说的下单接口请求订单服务和库存服务,每个服务都有自己的流程步骤,数据库操作时各自发起的,并不是全局发起的
zoharSoul
2021-04-13 18:06:15 +08:00
@sujin190 #31, 这个就是用于多服务的
sujin190
2021-04-13 18:20:44 +08:00
@zoharSoul #32 看调用时序图虽然可以用于多服务,但是并代表就是和单服务一样靠谱的吧,你们做的?
liuhan907
2021-04-13 21:43:22 +08:00
@sujin190
我并不是在说 seata 。现成的话,比如 Orleans 提供的 actor 状态事务,就是一种侵入式的分布式事务。但是 Orleans 的实现仅限它自己用,如果想用到别的地方就得参考它的论文自己实现一个。
15399905591
2021-08-24 17:06:05 +08:00
在网上找到一边有关于分布式事务的方案,https://learnku.com/articles/59145, 里面分享了 https://github.com/yedf/dtm 作为分布式事务使用方案,这里分享一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/770130

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX