课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
分布式编程开发是目前大多数软件开发程序员都在使用的一种编程开发方式,而本文我们就简单来了解一下,程序员零基础学习分布式系统需要掌握哪些知识。
事务:用户的每个命令操作作为一个整体,不会因为失败而被分割,也不会被其他活动看到中间状态。事务处理系统要求程序员对这些读、写操作标明起始和结束,这样才能知道事务的起始和结束。事务处理系统保证在事务的开始和结束之间的行为是可预期的。
分布式事务的考量出现在这样的场景下:数据被分片存储到许多不同的服务器上。一个操作可能要求从多个服务器上修改或者读取数据,分布式系统要尝试向用户隐藏将数据分割在多个服务器上带来的复杂度。
数据库对于正确性有一个概念称为ACID:
Atomic:原子性。在一个事务里,要么所有的写数据全都完成,要么所有的写数据全都没有完成。
Consistent:一致性。
Isolate:隔离性。事务不能看到彼此的中间状态,只能看到完成的或者未完成的事务结果。通常来说,隔离性意味着可序列化。
Durable:持久化。事务提交后,数据库向用户反馈事务执行完毕后,数据库中的修改是持久的,不会因为一些错误而被擦除。
事务可能会在执行过程中Abort(例如除0错误、访问一个不存在的记录、死锁等),此时事务可能已经修改了数据库中的部分记录,我们需要能够回退这些事务,撤回已进行的修改。
分布式事务由两部分组成:并发控制(concurrencycontrol)和原子提交(atomiccommit)。
并发控制
在并发控制中,主要有两种策略:悲观并发控制和乐观并发控制。使用哪种策略取决于环境中冲突发生的频率。
悲观并发控制:数据库使用锁来保护数据,事务在使用任何锁之前,需要获得数据的锁,如果一些其他的事务已经在使用这里的数据,锁会被它们持有。在悲观系统中,如果有锁冲突,就会造成延时等待,为正确性而牺牲性能。
乐观并发控制:不用担心其他事务是否正在读写你要使用的数据,而是自顾自地继续执行。通常来说这些执行会有一些临时区域,只有在事务后的时候才会检查是不是有其他事务干扰了你。这样做的优点是不用承担锁带来的性能损耗,缺点是如果有其他事务在同一时间修改了你关心的数据并造成冲突,那么必须Abort当前事务并重试。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。