离华为开发者大会2020(Cloud)开幕仅剩一月左右,让开发者们和华为大咖近距离沟通的扫地僧早午餐会也已经开放预约。但是,有些小伙伴们已经等不及到二月了,别急,福利这不就来了吗!华为云Stack混合云大咖开发秘籍提前公开,快来看看今日这位大咖都分享了哪些独家开发经验吧!
您也可以点击阅读原文,与大咖互动
华为开发者大会2020(Cloud)扫地僧早午餐会
今日大咖:姜宇 华为云Stack微服务与分布式事务首席架构师
负责华为云Stack混合云解决方案中高性能注册中心SC、分布式事务DTM、Service Mesh等多个核心产品研发,曾任阿里巴巴中间件技术部高级专家。
开创性地提出了非侵入分布式事务理念,并设计研发了业界第一个非侵入分布式事务产品GTS,广泛应用于电商、金融、物流、游戏、社交、物联网等多个领域的大型核心系统,高性能、无侵入地解决了分布式事务世界性难题。产品开源版本Seata引起业界广泛关注,在GitHub上已有13.8k星,是最热门的国产开源软件之一。个人发表专利20篇。
独家分享:如何实现微服务架构下的分布式事务
分布式事务已经成为微服务落地最大的阻碍,也是最具挑战性的一个技术难题。 为此,本文将深入和大家探讨微服务架构下,分布式事务的各种解决方案。
什么是微服务?微服务有什么优势和困难? 什么是微服务架构?简而言之,微服务架构的系统是一个分布式的系统,按业务进行划分为独立的服务单元,解决单体系统的不足,同时也满足越来越复杂的业务需求。每个微服务仅关注于完成一件任务并很好地完成该任务。
微服务架构的优势1. 将复杂的业务拆分成多个小的业务,每个业务拆分成一个服务,将复杂的问题简单化。利于分工,降低新人的学习成本。
2. 微服务系统是分布式系统,业务与业务之间完全解耦,随着业务的增加可以根据业务再拆分,具有极强的横向扩展能力。
3. 服务间采用 HTTP 协议通信,服务与服务之间完全独立。每个服务可以根据业务场景选取合适的编程语言和数据库。
4. 服务独立部署,每个服务的修改和部署对其他服务没有影响。
虽然微服务有以上的优势,但是微服务实践仍处于探索阶段,很多中小型互联网公司,鉴于经验、技术实力等问题,微服务落地比较困难。著名架构师Chris Richardson指出,目前微服务主要存如下几方面困难:
1. 单体应用拆分为分布式系统后,进程间的通讯机制和故障处理措施变的更加复杂。
2. 系统微服务化后,一个看似简单的功能,内部可能需要调用多个服务并操作多个数据库实现,服务调用的分布式事务问题变的非常突出。
3. 微服务数量众多,其测试、部署、监控等都变的更加困难。
随着RPC框架的成熟,第一个问题已经逐渐得到解决。例如Dubbo可以支持多种通讯协议,Spring Cloud可以非常好的支持restful调用。对于第三个问题,随着Docker、DevOps技术的发展以及各公有云PaaS平台自动化运维工具的推出,微服务的测试、部署与运维会变得越来越容易。
而对于第二个问题,现在还没有通用方案很好的解决微服务产生的事务问题。分布式事务已经成为微服务落地最大的阻碍,也是最具挑战性的一个技术难题。下面将深入和大家探讨微服务架构下,分布式事务的各种解决方案。
微服务架构下,如何克服分布式事务难题? 什么是事务事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性:
原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。
一致性(Consistent):在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性。
隔离性(Isolation):数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行。数据库事务隔离级别由低到高依次为Read uncommitted、Read committed、Repeatable 、Serializable。
持久性(Durability):事务完成之后,它对于数据的修改是永久性的,即使出现系统故障也能够保持。
分布式事务典型场景:银行转账业务是一个典型分布式事务场景,通常包括以下三种情况:
A. 支行内转账:同一银行的相同支行内转账
B. 行内转账:同一银行的不同支行间转账
C. 跨行转账:不同银行的系统进行转账