求阙厅

春有百花秋有月,夏有凉风冬有雪。若无闲事挂心头,便是人间好时节。

Go 系列 GC优化

相关指标 Go 的 GC 被设计为成比例触发、大部分工作与赋值器并发、不分代、无内存移动且会主动向操作系统归还申请的内存。因此最主要关注的、能够影响赋值器的性能指标有: CPU 利用率:回收算法会在多大程度上拖慢程序?有时候,这个是通过回收占用的 CPU 时间与其它 CPU 时间的百分比来描述的。 GC 停顿时间:回收器会造成多长时间的停顿?目前的 GC 中需要考虑 STW 和...

Mongo 可扩展性

开启 MongoDB 学习新篇章

可伸缩性(可扩展性) 是一种对软件系统计算处理能力的设计指标,高可伸缩性代表一种弹性,在系统扩展成长过程中,软件能够保证旺盛的生命力,通过很少的改动甚至只是硬件设备的添置,就能实现整个系统处理能力的线性增长,实现高吞吐量和低延迟高性能。 分片(sharding)是指将数据拆分,将其分散存储在不同的机器上的过程。将数据分散到不同的机器上,不需要功能强大的大型计算机就可以存储更多的数据...

Mongo 一致性

开启 MongoDB 学习新篇章


Mongo WiredTiger引擎

WiredTiger存储引擎介绍...

与MySQL类似,MongoDB底层也使用了『可插拔』的存储引擎以满足用户的不同需要。从 MongoDB 3.2 开始,WiredTiger 存储引擎开始作为默认的存储引擎。WiredTiger 使用文档级并发控制进行写操作,使用 MultiVersion 并发控制(MVCC)方式。 In-Memory In-Memory 存储引擎将数据存储在内存中,除了少量的元数据和诊断(Di...

Mongo 高可用

开启 MongoDB 学习新篇章

高可用性 HA(High Availability)指的是缩短因正常运维或者非预期故障而导致的停机时间,提高系统可用性。大白话就是,无论出啥事都不能让承载的业务受影响,这就是高可用。无论是数据的高可靠,还是组件的高可用全都是一个解决方案:冗余。通过多个组件和备份导致对外提供一致性和不中断的服务。冗余是根本,但是怎么使用冗余则各有不同。 MongoDB 高可用方案分两种: M...

Go 系列 接口

在计算机科学中,接口是计算机系统中多个组件共享的边界,不同的组件能够在边界上交换信息。如下图所示,接口的本质是引入一个新的中间层,调用方可以通过接口与具体实现分离,解除上下游的耦合,上层的模块不再需要依赖下层的具体模块,只需要依赖一个约定好的接口。 概述 接口类型是一种抽象类型,不会暴露出它所代表的对象的值、结构,也不会暴露这个对象支持的基础操作的集合;它们只会表现出自己的方法...

Mongo 聚合之管道

开启 MongoDB 学习新篇章

MongoDB 提供的聚合工具: 聚合框架 MapReduce 几个简单的聚合命令: count、distinct和group 聚合框架 聚合(aggregate)框架可以对集合中的文档进行变换和组合。基本上,可以用多个构件创建一个管道(Pipline),用于对一连串的文档进行处理。这些构件包括筛选(match)、投射(projecting)、分组(grouping)、排序(so...

Go 系列 版本

业界有许多 GO 语言的版本管理工具,我们借助这些工具可以实现同时安装多个 GO 语言版本,要理解这些工具的实现原理,也需要了解GO语言运行机制,比如 import 搜索路径,而手动安装GO语言版本可以加深这些认识 gvm管理工具 下载 gvm bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/...

Mongo 集群

开启 MongoDB 学习新篇章

分片是 MongoDB 用来将大型集合分割到不同服务器(或者说一个集群)上所采取的方法。 分片是集群中负责数据某一子集的一台或多台服务器 目标 集群无感知:采用proxy模式,MongoDB 自带了 mongos 专有路由进程,对应用的请求进行转发。 可用性: 通过冗余存储,以便当一个进程/机器/数据中心宕机了,其他副本能够接替其工作。 可扩展性:MongoDB支...

Go 系列 闭包

闭包仅仅是锦上添花的东西,不是不可或缺的。

闭包是函数式语言中的概念。闭包是由函数和与其相关的引用环境组合而成的实体。(即:闭包=函数+引用环境) 1 2 3 4 5 6 7 8 9 10 11 func f(i int) func() int { return func() int { i++ return i } } c1 := f(0) c2 := f(0) c1() ...