第10课:分布式微服务架构体系详解——架构设计理念

前言 前面几课的内容从分布式架构的一些常见场景出发,介绍了分布式的各种问题和解决方案以及目前一些比较成熟的技术实现。在实施微服务架构时,我们更多的是使用这些成熟的技术。作为一个架构师或者想在技术架构领域深耕的开发人员,对于分布式系统相关的技术不仅仅要会用。在做技术选型及方案时,更需要对这些技术的实现思路、算法以及优点和限制进行了解。本节课内容作为整个课程系列的收尾,会把微服务架构结合 Docker 的一些技术选型进行介绍,包括服务的持续集成、容器编排以及日志采集和安全技术做个简单的引申,希望能给各位读者一些参考。微服务架构的概念本身不是什么新颖或万能的技术,还是要在实践中不断深入了解和摸索尝试。 如果读者们读到这一篇,应该还记得本系列课程还有示例的代码工程 microservicecoffeeshop,以及 gatewaycoffeeshop。示例工程代码将会在 8. ...

第09课:分布式微服务架构体系详解——共识问题

前言 在分布式架构体系中,一致性和共识是分不开的概念,一致性也是我们解决很多分布式问题的关键,比如,通过一致性模型可以实现数据集群的数据复制;通过基于阻塞的 2PC 协议可以实现分布式的原子性提交,保证事务数据的一致。 我们在第 07 课:分布式一致性中介绍了分布式一致性的一些理论,并且引出了分布式共识(Consensus)的话题。共识就是让分布式系统中所有节点都对一些值达成共识。在分布式系统中,解决共识问题可以帮助我们处理很多分布式问题,包括第08课中介绍的原子提交协议,以及本课将介绍的全序广播。 本课主要介绍具有容错特性的共识算法——Quorum、Paxos,以及这些算法在实践应用领域中的介绍。 ...

第08课:分布式事务实践

前言 在分布式计算领域中,一个重要的场景就是共识问题。前文也简单提及过,共识即是让分布式系统中所有节点对于一些值达成共识。共识问题的处理一般用于 Leader 选举(比如单主复制的集群,只有主节点接受数据写入,如果这个 Leader 节点挂了,需要其他节点能选举出新的 Leader,使用选举算法需保证选举出一个新 Leader)以及原子提交(跟事务 ACID 的 A 概念是一样的,分布式的原子提交需要保证所有节点都最终获得一样的数据结果,事件的操作都执行成功或者都放弃)。我们常说的分布式事务一般是指解决分布式系统的原子提交( ...

第07课:分布式微服务架构体系详解——分布式⼀致性

前言 我们在前面几篇文章中介绍了分布式环境下会有网络延迟、节点挂掉的问题,这些问题解决的理论都和分布式一致性息息相关。无论是数据存储的集群,或者微服务系统的集群,为了达到高可用性,我们希望系统能够对分布式问题有很好的容错,保证一直会给用户一个好的 Response。通过本文将了解到分布式系统中的一些“可能”以及“不可能”。 本文先介绍分布式系统中几个重要的理论:CAP、BASE、FLP 不可能结果,以及这些理论的应用领域,可以让大家对耳熟能详的技术的背后理论有个更好的了解;然后再介绍下分布式一致性模型的概念和实现,理解了分布式一致性模型之后,后续将会继续介绍一致性模型在分布式事务中的实践。 分布式系统相关理论 在分布式系统理论中, ...

第06课:分布式微服务架构体系详解——分布式存储集群的事务

前言 在微服务架构下,比较典型的一个分布式问题就是并发,并且并发访问的资源可能分布在不同的数据存储的实例上,比如,很多电商系统的下单减库存流程。订单的微服务和商品的微服务,底层的数据库是分离的。如果没有并发的事务控制,并发场景下会出现“超卖”。如果订单的 DB 和商品的 DB 是同一个库,可以使用关系型数据库支持的本地事务做处理。但分布式场景下类似的并发问题要怎么解决?这个也是分布式架构必须要处理的课题之一。为了理解并解决应用系统层面的分布式事务问题,我们需要先从最底层的存储服务的事务讲起,后续的章节基本都是围绕“分布式事务”话题展开。从底层存储到微服务系统层面,从理论算法到分布式一致性以及分布式事务的实践解决方案。 ...