
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
云计算编程开发技术是目前大多数人在达内参加培训的时候都会去学习的一个编程技术,今天运城达内计算机培训就给大家简单分享一下,云计算编程入门需要掌握哪些概念。
1、Replication
Replication指的是将数据拷贝到多个位置的过程(不同磁盘、进程、机器、集群),这一过程通常起到两个作用
提升数据的可靠性-解决坏盘,物理机故障,集群异常时的故障恢复问题
加速查询-多副本可以同时使用来提高性能
Replication的分类有很多,先明确一点,我们今天讨论的是增量日志的同步方式,而非全量数据的拷贝。
除此之外,常见的Replication区分方式还有:同步/异步,强一致/终一致,基于主从/去中心化等等。
Replication模式的选择会影响系统的可用性和一致性,因此才有人提出了著名的CAP理论,在网络隔离无法避免的情况下,系统设计者必须在一致性和可用性之间进行权衡。
2、Consistency
简单理解一致性,就是同一时间下对于多副本进行读写是否可以得到一致的数据。
通常OLTP数据库会要求强一致性,或者说线性一致性,即:
任何一次读都能读到某个数据的近一次写入。
任何一个读取返回新值后,所有后续读取(在相同或其它客户端上)也必须返回新值。
线性一致的本质是数据多副本之间新鲜度的保证(recencyguarantee),它保证了一旦新的值被写入或读取,后续所有的读都会看到写入的值,直到它被再次覆盖。这也就意味着提供线性一致保证的分布式系统,用户可以不用关心多副本的实现,每个操作都可以实现原子有序。
3、Consensus
人们希望像使用单机系统一样使用分布式系统,因此不可避免地引入了“分布式共识”问题。
简单来说,就是当一个进程提议某一个值是什么之后,系统中所有的进程对这个值的变化能够达成一致,下图就是一个达成一致的过程。
近年来Raft算法也因为其相对而言比较容易实现,而在业界有了大量应用(比如在主流的NewSQL中:CockRoachDB、TiDB、Oceanbase几乎都是基于Raft和Paxos实现的)
事实上,共识算法还有另外一类,也就是leaderlessconsensusprotocol。
这类算法被广泛的运用在区块链中,比如比特币所采用的PoW算法。这类算法由于效率问题,较少被应用于并发量较高的数据库系统中。
值得注意的是,即使采用了分布式共识算法,也并不意味着系统就能够支持线性一致性。
当我们在设计一个系统的时候,需要仔细考虑日志与状态机器的commit顺序问题,以及谨慎地维护Raft/Paxosleader的lease,避免在网络隔离的情况下出现脑裂。
Milvus的可调一致性(TunableConsistency)实际上非常类似于分布式共识算法中的FollowerRead实现。FollowerRead指的在强一致性读的前提下使用follower副本来承载数据读取的任务,从而提升集群的吞吐能力并降低leader负载。其实现方式是:询问主节点新的日志commitindex,等待该commitindex所有的数据顺利apply到状态机上,再提供查询服务。
我们在Milvus的设计过程中,并未采取每次查询都询问生产者commitindex的策略,而是通过类似于Flink中watermark的机制定期通知查询执行节点commitindex的位置。这种设计,主要是因为Milvus用户对数据一致性要求并不高,通常情况下可以接受降低数据的可见性换取更高的性能,所以不需要每次查询都确定commitindex的位置。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。