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