有大佬使用 Python 技术栈搞过微服务么?
1 、网关怎么处理?
2 、注册中心问题
3 、分布式事务问题
上面这些问题在 java 微服务网关有 Spring Cloud 那一套, 那 python 使用什么技术栈呢?
1 、网关怎么处理?
2 、注册中心问题
3 、分布式事务问题
上面这些问题在 java 微服务网关有 Spring Cloud 那一套, 那 python 使用什么技术栈呢?
否则如所 @abersheeran #3 说 k8s 呗,k8s 的网关、自动注册、健康监控啥的本来就和你用啥语言啥框架无关,要啥都有了吧
具体实现如果你用的 mysql 的话,可以在第一个接口就把数据提交过去,然后开 mysql 事务,然后执行 sql,但是不提交 mysql 事务,如果创建订单和扣减库存两个操作的第一个接口都执行成功的话,就调用创建订单和扣减库存的第二个接口,提交刚才第一个接口打开的 mysql 事务,前两个接口有任何事务再走第三个接口回滚刚才的操作就行,回滚的时候可以判断下,如果 mysql 事务还没提交就直接回滚 mysql 的事务就行,否则可以考虑删掉之前添加的数据,当然如果你觉得删数据有风险,这种很小概率失败的风险也无所谓当然也可以不删
开 mysql 事务的时候注意添加一个超时,超时也执行回滚,一般来说分布式事务的一致性肯定是要弱于 mysql 事务这种的,就看你能承受多高的不一致概率了,如果像扣钱这样需要非常高一致性的操作就最好不要用分布式事务了
另外,看你在 12 的回复,你对分布式事务的原理似乎不太清楚?建议先去了解了解,你才好做权衡。
网关注册这些用 k8s 就可以搞定,分布式事物这边 java 又比较多的选择,而 python 似乎没有现成的解决方案,不过还有一部分公司是使用 MQ 消息队列来做的分布式事务。你也可以考虑自己实现一个。