远程办公安全性“三步曲
NewSQL 数据库相比中间件+分库分表的先进在哪儿?画一个简单的架构对比图:
这些大多也是 NewSQL 数据库产品主要宣传的点,不过这些看起来很美好的功能是否真的如此?接下来针对以上几点分别阐述下的我的理解。 分布式事务 首先要说的就是分布式事务:这是一把双刃剑。 CAP 限制 想想更早些出现的 NoSQL 数据库为何不支持分布式事务(最新版的 MongoDB 等也开始支持了),是缺乏理论与实践支撑吗? 并不是,原因是 CAP 定理依然是分布式数据库头上的颈箍咒,在保证强一致的同时必然会牺牲可用性 A 或分区容忍性 P。 为什么大部分 NoSQL 不提供分布式事务?那么 NewSQL 数据库突破 CAP 定理限制了吗?并没有。 NewSQL 数据库的鼻主 Google Spanner(目前绝大部分分布式数据库都是按照 Spanner 架构设计的)提供了一致性和大于 5 个 9 的可用性,宣称是一个“实际上是 CA”的。 其真正的含义是系统处于 CA 状态的概率高由于网络分区导致的服务停用的概率非常小,究其真正原因是其打造私有全球网保证了不会出现网络中断引发的网络分区。
另外就是其高效的运维队伍,这也是 cloud spanner 的卖点。详细可见 CAP 提出者 Eric Brewer 写的《Spanner, TrueTime 和 CAP 理论》: remove的源码很简单,找到对应的值全部置空,这样在垃圾回收器回收的时候,会自动把他们回收掉。 那为什么ThreadLocalMap的key要设计成弱引用?key不设置成弱引用的话就会造成和entry中value一样内存泄漏的场景。 补充一点:ThreadLocal的不足,我觉得可以通过看看netty的fastThreadLocal来弥补,大家有兴趣可以康康。 好了,你不仅把我问的都回答了,我不知道的你甚至都说了,ThreadLocal你过关了,不过JUC的面试才刚刚开始,希望你以后越战越勇,最后拿个好offer哟。 什么鬼,突然这么煽情,不是很为难我的么?难道是为了锻炼我?难为大师这样为我着想,我还一直心里暗骂他,不说了回去好好学了。 总结 其实ThreadLocal用法很简单,里面的方法就那几个,算上注释源码都没多少行,我用了十多分钟就过了一遍了,但是在我深挖每一个方法背后逻辑的时候,也让我不得不感慨Josh Bloch 和 Doug Lea的厉害之处。 在细节设计的处理其实往往就是我们和大神的区别,我认为很多不合理的点,在Google和自己不断深入了解之后才发现这才是合理,真的不服不行。
ThreadLocal是多线程里面比较冷门的一个类,使用频率比不上别的方法和类,但是通过我这篇文章,不知道你是否有新的认知呢? (编辑:莆田站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |