摘要:
[TOC] 1. 前言 本文以go1.12.5版本分析,map相关的源码在runtime包的map开头的几个文件中,主要为map.go。 go的map底层实现方式是hash表(C++的map是红黑树实现,而C++ 11新增的unordered_map则与go的map类似,都是hash实现)。go m 阅读全文
摘要:
[toc] 使用示例 NSQ的golang版客户端:https://github.com/nsqio/go nsq 提供了生产者和消费者的接口封装。 doc.go文件描述的蛮清楚的: 生产者Producer 消费者Consumer 配置参数 无论是生产者还是消费者,创建时均需要提供一个Config结 阅读全文
摘要:
今天发现大家对NSQ等组件的集群原理还不了解,所以这遍文章对一些常见组件的集群原理做一个汇总整理。我会不定期更新,增加一些新的组件或修改错误。 1 NSQ NSQ集群比较简单,主要包含4个部分,一是生产者(图上没画)、二是nsq实例(nsqd)、三是服务发现nsqlookupd、四是消费者(Coms 阅读全文
摘要:
[toc] 1 引言 昨天与靓神聊到浮点数精度丢失的问题,于是今天写一篇文档来详细描述现代计算机的浮点数存储方式,进而解答相关的一些问题: 明明是小数,为什么程序里要叫浮点数? 什么是浮点数的精度,为什么会发生精度丢失?为什么叫浮点数为近似表示? 为什么浮点数不能直接比较? 浮点数的范围,为什么fl 阅读全文
摘要:
[toc] 1 概述 NSQ包含3个组件: nsqd:每个nsq实例运行一个nsqd进程,负责接收生产者消息、向nsqlookupd注册、向消费者推送消息 nsqlookupd:集群注册中心,可以有多个,负责接收nsqd的注册信息,向消费者提供服务发现 nsqadmin:用于监控和管理的web ui 阅读全文
摘要:
[TOC] 1 引言 RB Tree,即红黑树,它的定义如下: 1. 这是一颗二叉树,且每个节点要么是红色、要么是黑色 2. 根节点是黑色 3. 叶子节点也是黑色的,且叶子节点不存储数据,即叶子节点是nil空节点 4. 不能出现连续的红色节点,即相邻的红色节点必须被黑色节点隔开 5. 任何一个节点到 阅读全文
摘要:
[toc] 1 背景 随着用户不断下单,DB订单表和订单附属表的单表记录数过大,影响到前端和管理系统拉取订单列表的性能。单表最大多少行合适与具体业务有关,难以下定论,但一般推荐不要超过1千万行,之后单表的性能下降会比较明显。 本文档整理了数据库大表优化的一些常用思路的原理,最后针对订单表提出优化方案 阅读全文
摘要:
[TOC] 1 准备工作 1.1 在k8s部署istio Istio在k8s集群内的部署很简单,非生产要求的部署,可以直接在https://github.com/istio/istio/releases 下载最新的发布包,压缩包里有供简单部署的yaml文件: 注意,上面两条指令会把主要的组件都给装上 阅读全文
摘要:
[TOC] 概述 一般情况下,我们的系统对外暴露HTTP/HTTPS的接口,内部使用rpc(GRPC)通讯,这时GRPC在服务之间通过service访问,本地调试时通过service nodePort方式调用。 但随着业务壮大,需要跨集群的GRPC通讯,或者pod数量太多、nodePort端口管理混 阅读全文
摘要:
[TOC] 一、Cat通用参数 |参数名|指令示例|功能| | | | | |Verbose|GET /_cat/XXX/?v|开启详细输出| |Help|GET /_cat/XXX/?help|输出可用的列| |Headers|GET /_cat/XXX/?h=column1,column2|指定 阅读全文