MongoDB 执行计划 & 优化器简介 (上) 最近,由于工作需求去了解一下Query是如何在MongoDB内部进行处理,从而丢给存储引擎的。里面涉及了Query执行计划和优化器的相关代码,MongoDB整体思路设计的干净利落,有些地方深入挖一下其实还是能有些优化点的。本文会涉及一条Query被parse之后一路走到引擎之前,都做了那些事情,分析基于MongoDB v3.4.6代码。由于篇幅过长,文章分为上下两篇,分别介绍执行计划 & ...
MongoDB WiredTiger 存储引擎cache_pool设计 (下) -- 实践篇 之前的文章《MongoDB WiredTiger 存储引擎cache_pool设计 (上) – 原理篇》和大家分享WiredTiger的整体架构和Cache Pool相关的设计,这篇来介绍下阿里云MongoDB线上出现的问题,及改进措施。
MongoDB WiredTiger 存储引擎(1) cache_pool设计 0. 前言最近由于工作需要,阅读了WiredTiger部分代码,感觉有的地方还是很值得学习的,准备搞个系列文章,笔者不是精通WiredTiger的大神,国内对WiredTiger深入分析的人不多,只是想在这里跟大家一起讨论一起学习。笔者在Gitlab上建了一个WiredTiger代码注释版本,基于v2.8.1,如有问题大家可以在Gitlab留言,issue!1. MongoDB 多引擎体系 – Wi
Nesty 高性能轻量级Http Restful Server Nesty 轻量级Http Restful Server,通过Netty NIO非阻塞实现IO的高并发和异步,非侵入式编程。支持类SpringMVC的HTTP注解,可以平滑前移,开发成本低
分布式系统设计系列 -- 概要 在现在的“大数据”、“云平台”这些前沿技术的背景下,衍生了很多平台型技术点,Nosql、Hadoop、Storm等层出不穷。这些华丽的技术后面其实处处都离不开“分布式”这个虽然提出了很久,但是大数据、云计算带火了的技术。以致于开个玩笑说,如果不懂一些“分布式"下的技术和原理的,会有点不好意思说自己是后端开发 -- (玩笑而已!! ^_^)。
Linux -- 内存控制之oom killer机制及代码分析 线上一些内存占用比较敏感的应用,在访问峰值的时候,偶尔会被kill掉,导致服务重启。发现是Linux的out-of-memory kiiler的机制触发的。
Java -- ExecutorService线程池触发的Full GC问题排查 今天在线上Java代码里,处理了一个由ExecutorServicec线程池引发的问题,将处理过程和一些调试沉淀下来。分布式任务处理模块中,有一个Java daemon进程,通过队列接受Java代码描述的任务(jar),产生子进程(单独的JVM)class loader,处理定义的Java代码,并收集日志、处理结果等,子进程数量在百级。
Linux -- Pagecache 文件缓存特性 今天看@褚霸的博客,看到了几篇关于pagecache、slab的几篇好文章,转一下!原创文章,转载请注明: 转载自系统技术非业余研究本文链接地址: Linux下谁在消耗我们的cacheLinux下对文件的访问和设备的访问通常会被cache起来加快访问速度,这个是系统的默认行为。 而cache需要耗费我们的内存,虽然这个内存最后可以通过echo 3>/proc
MySQL性能优化的最佳20+条经验 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧对你有用。1. 为
Java -- Hotspot虚拟机调优与GC垃圾回收策略 (先扯扯Java,热热身) 论坛上,经常看到有些人讨论c、c++、java哪个更快,哪个更主流等的口水贴,吵的乐此不疲。其实个人感觉Java 1.6之后性能和开发效率都提高了不少,虽然不像直接编译成机器码的语言一样,但是Java特有的JVM动态优化器、JIT即时编译器对热点代码都提供了动态编译和即时优化,而且开源的库也比较多,开发效率也比较高。不过,Java在高性能IO、大内存使用上还是有些自
分布式选主 -- 利用Mysql ACID和Lease协议实现选主和高可用 在实际生产开发中,遇到一些多节点共存,需要选主,并且要实现HA自动容错的场景,思考了写方法拿出来和大家分享一下。Lease协议,Mysql ACID高可用选主方案设计适用场景Java语言实现描述进一步优化 系统中有很多应用场景要类似主从架构,主服务器(Master)对外提供服务,从服务器(Salve)热备份,不提供服务但随时活着,如果Master出现宕机或者网络问题,Sl
Java如何实现多态性,基于itable, vtable源码分析 在Java实现中我们常使用多态性,在java里主要是通过itable, vtable来实现准确的跳转。Vtable: 虚拟函数表该类所有函数自有函数(除了static, final)和 父类的函数虚拟表。结构:vtableEntry | vtableEntry |vtableEntry...是以vtableEntry 结构体的数组顺序结构,在每个entry
Java -- common基础类库Google Guava和Guice 很久没更新文章了,最近忙于系统上线,同时拾起来一年多没写过的Java,做一些平台化,系统组件的开发。之后准备通过拜读一下HBase的代码来提升自己对Java的认识。以前写c/c++时,可选的Base库并不是特别多,boost、libev、libaio取之可数。最近用到了写Java的基础框架的库(SSH之类的就不说了),比如MyBaties、DBCP、Guice、Guava等。准备拿出些比较经典的和