加入收藏 | 设为首页 | 会员中心 | 我要投稿 怀化站长网 (https://www.0745zz.cn/)- 语音技术、云资源管理、物联设备、云计算、决策智能!
当前位置: 首页 > 站长资讯 > 评论 > 正文

教你点开微信右上角的“+”号

发布时间:2021-01-29 11:36:36 所属栏目:评论 来源:互联网
导读:我写那篇文章的出发点仅仅是分享那次面试经历带给我的一点思考。 了解到面试者的经历之后,在我本人有限的经历和认知里面,让我觉得很惋惜,发生在他们身上的事情本可以不是这样的,仅此而已。 但是,同样的事情,由于每个人的经历和认知不同,就能发掘出截

我写那篇文章的出发点仅仅是分享那次面试经历带给我的一点思考。

了解到面试者的经历之后,在我本人有限的经历和认知里面,让我觉得很惋惜,发生在他们身上的事情本可以不是这样的,仅此而已。

但是,同样的事情,由于每个人的经历和认知不同,就能发掘出截然不同的观察角度。

而这些截然不同的观察角度得出的结论,就很容易产生激烈的碰撞。

在这场碰撞里面,没有人绝对的错了,也没有人绝对的正确。

所以,马斯克,这个观察问题的角度是星辰大海的男人,说的这句话,我觉得的很有用:
 

冻结、预占库存就是2PC的准备阶段,真正下单成功去扣减库存就是2PC的提交阶段,回滚就是某个发生异常的回滚操作,只不过在应用层面来实现了2PC的机制而已。

SAGA

Saga源于1987 年普林斯顿大学的 Hecto 和 Kenneth 发表的如何处理 long lived transaction(长活事务)论文。

主要思想就是将长事务拆分成多个本地短事务。

如果全部执行成功,就正常完成了,反之,则会按照相反的顺序依次调用补偿。

SAGA模式有两种恢复策略:

  1. 向前恢复,这个模式偏向于一定要成功的场景,失败则会进行重试
  2. 向后恢复,也就是发生异常的子事务依次回滚补偿

由于这个模式在国内基本没看见有谁用的,不在赘述。

消息队列

基于消息队列来实现最终一致性的方案,这个相比前面的我个人认为还稍微靠谱一点,那些都是理论啊,正常生产的实现很少看见应用。

基于消息队列的可能真正在应用的还稍微多一点。

一般来说有两种方式,基于本地消息表和依赖MQ本身的事务消息。

本地消息表的这个方案其实更复杂,实际上我也没看到过真正谁来用。这里我以RocketMQ的事务消息来举例,这个方式相比本地消息表则更完全依赖MQ本身的特性做了解耦,释放了业务开发的复杂工作量。
 

Forking 工作流非常适合于类似 Github 这种开源项目,任何一个开发者都可以通过fork + pull request 向项目中贡献代码。

总结

文章介绍了四种工作流,分别是集中式工作流,功能分支工作流,Gitflow 工作流,Forking 工作流。

集中式工作流在 SVN 时代比较常见,切到 Git 后不建议再使用这种方式了。

功能分支工作流通常是一个主干 master 分支 + 多个 feature 分支,一般适用于小团队开发。

Gitflow 工作流是在功能分支工作流的基础上进一步演进而来,采用 master + develop 双主分支再加上多个临时功能分支,这是一个非常成熟的代码协作管理的方式,推荐大家使用。

Forking 工作流主要采取 fork + pull request 的模式进行协作,主要用于开源项目。

最后:这四种工作流方式各有特色,开发团队可根据自身的特点去选择,不必严格拘泥于某一种方式,适合自己的才是最优的。大家学会了吗?

(编辑:怀化站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读