华为5G会迎来转机吗
上面的这张图是我当初理解 B/S 和 C/S 后,理解和总结的,对应于生活去理解,我是个90后,记得小时候偷着去网吧玩,网吧电脑上都是些像“血战上海滩”,“红色警戒”等游戏,那个时期,都是局域网,用的最多的都是在 C/S 模式下开发的软件,直到后来互联网兴起,刚开始能在网页上玩一些小游戏,后来网页上的小游戏也越来越火,好多人都在玩,再发展到今天,微信小程序也是火的飞起。 我一直在想,要是有一天,在网页上开发的游戏体验和在客户端下载的游戏体验一样,那 B/S 模式会不会替代 C/S 模式,因为 B/S 模式操作简单,内存占用少,而 C/S 模式内存占用大,安装复杂,我觉得要真有这么一天,可能······很爽! 从B/S引出浏览器页面历史 在这穿插一个故事,都说了我们是大多基于 B/S 模式开发,既然是B/S模式,怎能离的开浏览器呢? 知识都是死的,思想是活的,看书上的官方语句实在太枯燥,反正我是不想看。我喜欢听故事,我觉得通过故事学到知识,在轻松的环境中学知识,很爽。 下面请看故事:
JavaScript的诞生 因为协调节点只需要跟获取primary lock的切片进行通信,要么成功要么失败这样就避免了commit时节点不能全部成功导致的数据不一致问题。 而prepare阶段记录了日志,如果某个切片commit失败,可以根据日志进行再次commit,这样就保证了数据最终一致。 如果协调节点宕机了,异步线程可以做资源的释放工作,避免了因单点故障通信失败造成的资源不能释放。 这里我们要注意2点:
总结 2PC协议有3个问题,性能问题、单点故障和数据不一致。 Percolator模型简化了协调节点和切片的通信流程,让协调节点只跟其中一个primary切片通信,一方面,减少了通信开销,另一方面,避免了因为单点故障,commit阶段部分节点通信失败导致的数据不一致问题。 Percolator在prepare阶段记录了日志,这样即使协调节点故障了,恢复后也可以根据日志来做事务恢复。 Percolator使用异步线程来做资源的释放工作,这样即使协调节点故障了,也不用担心资源得不到释放。 知名的NewSQL数据库TiDB就是参照Percolator模型来对2PC协议进行优化的。
但是我们要知道,2PC的性能问题还是存在的,好在主流的分布式数据库都做了优化,性能损耗只会越来越小。 (编辑:淮安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |