Software Design
dm_vincent
这个作者很懒,什么都没留下…
展开
-
[软件设计] 控制反转(Inversion of Control)随想
写这篇文章的初衷是在写Angular中的依赖注入(Dependency Injection)的时候,想该如何解释一下依赖注入这个概念呢? 而提到依赖注入,控制反转这个概念就从记忆硬盘中被加载到了内存中,然后更是被放到了大脑寄存器中,不管想什么都要瞄一眼它。致使我不得不先写一篇文章来谈谈控制反转。最早接触到这个概念还是在学习Java中Spring框架的时候(估计好多开发人员都是这样的吧),那时原创 2016-07-22 00:40:44 · 3478 阅读 · 1 评论 -
[分布式事务-TCC] 1. 分布式事务的由来和TCC的核心思想和工作流程
文章导航分布式事务的由来和TCC的核心思想和工作流程写在前面引子TCC是什么TCC的核心思想TCC关联概念TCC调用一个例子:转账场景下的TCC实现分布式事务的由来和TCC的核心思想和工作流程写在前面分布式事务是一个大的命题,有很多相关的技术和细节。网上介绍这个主题的文章也是多如牛毛,但是能把问题的来龙去脉给讲清楚的文章并不多。我也不敢说自己就一定能够把这个本来就很复杂的事情讲的有多通透。...原创 2019-06-15 21:33:28 · 1848 阅读 · 1 评论 -
[分布式事务-TCC] 2. TCC的异常场景及应对机制
文章导航TCC的异常场景幂等处理产生原因应对策略空回滚产生原因应对策略资源悬挂产生原因应对策略三种异常总结幂等空回滚资源悬挂共通点TCC的异常场景在分布式系统中,随时随地都需要面对网络超时,网络重发和服务器宕机等问题。所以分布式事务框架作为搭载在分布式系统之上的一个框架型应用也绕不开这些问题。具体而言,有以下常见问题:幂等处理空回滚资源悬挂这些异常的应对需要TCC框架的支持和解决方...原创 2019-06-16 21:40:33 · 13857 阅读 · 5 评论 -
[分布式事务-TCC] 4. TCC的优化方案之一:最末参与者优化(LPO)
文章导航优化动机和指导原则最末参与者优化(LPO)优化动机和指导原则当一笔分布式事务的参与者较多时,同时每个参与者都涉及到一阶段和二阶段,还有异常场景下的幂等控制,空回滚以及防资源悬挂处理,调用关系会显著复杂化。特别当业务并发量很大的情况下。比如国内领先的第三方支付场景,并发量在高峰期十分惊人。那么如何尽可能地提高分布式事务的性能就是一个值得深入思考的问题。其实优化的原则也很直观:在能够满...原创 2019-07-01 23:14:34 · 1350 阅读 · 0 评论 -
[分布式事务-TCC] 3. TCC两个阶段的流程图
TCC两个阶段总结TCC作为分布式事务的一种具有强实时性保证的解决方案,其主要思想在于资源预留。在一切顺利的情况下,一阶段TRY还是很容易理解的。只不过为了保证在各种异常场景下,TCC都能够正常的工作,会添加不少异常处理手段。为了把两个阶段的行为梳理清楚,绘制了下面的流程图作为总结。涉及到的具体细节,可以结合前面的讨论进行回顾。一阶段 - TRY二阶段 - CONFIRM/CANCEL...原创 2019-06-26 21:21:46 · 2924 阅读 · 2 评论 -
[分布式事务-TCC] 5. TCC的优化方案之二:同库优化
同库优化在上一篇文章中,介绍了最末参与者优化(LPO),它能够减少网络调用的开销。减少网络调用不仅是降低了RT,更重要的是将系统执行的时序复杂度降低了。在对数据一致性有一定要求的高并发场景下,还是能够起到很大的作用。进行最末参与者优化后的时序如下:以减少网络调用次数和每次调用的耗时为切入点,我们来思考一下看看还有没有优化的空间。注意到发起方需要和TC的几次交互如下:分布式事务开始时,...原创 2019-07-07 22:10:08 · 1024 阅读 · 0 评论 -
[分布式事务-TCC] 6. TCC的优化方案之三:二阶段异步化
二阶段异步化采用TCC模型实现分布式事务之后,分布式事务所需的资源也是按照业务的维护进行切分,每笔分布式事务之间的资源都是独立预留和消费。单说这些可能有点难理解举个栗子就很容易理解了,账户A同时参与了两笔分布式事务,一笔是转账50元到账户B;另一笔是转账100元到账户C。那么每笔分布式事务都会各自预留所需的资源,它们感知不到彼此的存在,也不会互相干扰。这里顺便复习一下实现TCC模型的一个关键...原创 2019-07-07 22:21:48 · 1428 阅读 · 0 评论