
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
微服务架构开发是目前大多数软件编程开发程序员都需要学习和应用的一种架构方法,而本文我们就通过案例分析来简单了解一下,微服务架构概念与部署实践问题分析。
什么是微服务架构?
简而言之,微服务架构的系统是一个分布式的系统,按业务进行划分为独立的服务单元,解决单体系统的不足,同时也满足越来越复杂的业务需求。每个微服务仅关注于完成一件任务并很好地完成该任务。
微服务架构的优势
1.将复杂的业务拆分成多个小的业务,每个业务拆分成一个服务,将复杂的问题简单化。利于分工,降低新人的学习成本。
2.微服务系统是分布式系统,业务与业务之间完全解耦,随着业务的增加可以根据业务再拆分,具有极强的横向扩展能力。
3.服务间采用HTTP协议通信,服务与服务之间完全独立。每个服务可以根据业务场景选取合适的编程语言和数据库。
4.服务独立部署,每个服务的修改和部署对其他服务没有影响。
虽然微服务有以上的优势,但是微服务实践仍处于探索阶段,很多中小型互联网公司,鉴于经验、技术实力等问题,微服务落地比较困难。著名架构师ChrisRichardson指出,目前微服务主要存如下几方面困难:
1.单体应用拆分为分布式系统后,进程间的通讯机制和故障处理措施变的更加复杂。
2.系统微服务化后,一个看似简单的功能,内部可能需要调用多个服务并操作多个数据库实现,服务调用的分布式事务问题变的非常突出。
3.微服务数量众多,其测试、部署、监控等都变的更加困难。
随着RPC框架的成熟,一个问题已经逐渐得到解决。例如Dubbo可以支持多种通讯协议,SpringCloud可以非常好的支持restful调用。对于三个问题,随着Docker、DevOps技术的发展以及各公有云PaaS平台自动化运维工具的推出,微服务的测试、部署与运维会变得越来越容易。
而对于二个问题,现在还没有通用方案很好的解决微服务产生的事务问题。分布式事务已经成为微服务落地大的阻碍,也是具挑战性的一个技术难题。下面将深入和大家探讨微服务架构下,分布式事务的各种解决方案。
微服务架构下,如何克服分布式事务难题?
什么是事务
事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性:
原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。
一致性(Consistent):在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性。
隔离性(Isolation):数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行。数据库事务隔离级别由低到高依次为Readuncommitted、Readcommitted、Repeatable、Serializable。
持久性(Durability):事务完成之后,它对于数据的修改是永久性的,即使出现系统故障也能够保持。
分布式事务场景:
银行转账业务是一个分布式事务场景,通常包括以下三种情况:
A.支行内转账:同一银行的相同支行内转账
B.行内转账:同一银行的不同支行间转账
C.跨行转账:不同银行的系统进行转账
对于传统集中式架构,A、B通常为本地事务,C为分布式事务。业务微服务改造后,转入、转出通常为不同的微服务,同一个微服务也通常运行于不同实例中。A可能变成一个分布式事务,也可能通过一些方法规避,在本地事务内完成。B和C很难规避,只能是分布式事务。
微服务佳实践建议尽量规避分布式事务,但是在很多业务场景(比如上面的B、C转账场景),分布式事务是一个绕不开的技术问题。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。