kimserver 配置文件用的是 json 文件(config.json),保存于 bin 目录下(github)。
json 数据结构优点很多,缺点也不少(例如不能添加注释),文章主要解析配置文件内容。
kimserver 是多进程异步框架,而 zookeeper-client-c 工作模式是多线程,本章整理一下将它们整合的思考过程。
tmux 是终端比较实用的分屏工具,多屏工作模式可以极大提高生产效率。
前段时间在跟进 智慧农场项目,数据服务与硬件对接,需要用到 mqtt
解决方案 mosquitto
。通过 golang 建立数据服务,获取硬件数据。
标准库里有这个函数:set_difference
,它可以计算两个集合的差集。
它的算法实现并不复杂,但是要求传进来的两个参数数组集合数据都是有序的(从小到大排列)。
cppreference.com 有详细文档和测试用例。
protobuf 3.0 版本支持 protobuf 与 json 数据相互转换。
一致性哈希算法是一种特殊的哈希算法,目的是解决分布式缓存的问题。
本章主要讲述一致性哈希算法在 kimserver 架构下的使用流程,以及算法实现。
算法原理,这篇帖子(《五分钟理解一致性哈希算法》)讲得很通俗易懂,可以去看看。
写代码习惯了一边写一边编译,以前用 vistual studio 系列,有编译、调试、运行快捷键;现在使用 vscode 却找不到这些快捷键,在很长一段时间里,在 terminal 窗口执行脚本编译,窗口来回切换,麻烦不说,思路也很容易被打断。
最近查了一下,需要自己设置 vscode 的一些配置,绑定快捷键。
kimserver 节点发现,是通过中心服务进行管理,中心管理思路清晰,逻辑相对简单,而且有很多成熟的方案,例如 zookeeper。
父子进程传输文件描述符,通过管道通信实现。
kimserver 是多进程框架,在分布式系统里,多进程节点之间是如何进行通信的,客户端与分布式服务集群的通信流程是怎么样的,本章主要讲解这些问题。
这个函数,在多线程场景与锁结合使用。如果某些线程没事干,就把它阻塞,等待唤醒,这样可以避免线程空跑,浪费系统资源。
在 MacOS 系统下,经常使用 LLDB 调试程序,类似 《Gdb 使用》,记录一下常用命令和调试使用。
zookeeper 有 zookeeper-client-c,它可以被编译成静态库进行工作。
client 提供了两种接口:同步 / 异步。同步和异步接口都是通过多线程实现。下面通过走读源码,理解它们的工作方式,这样方便我们对它进行二次封装。
最近在做服务集群的节点发现,服务远程配置信息。以前造过类似的服务管理轮子,虽然是轻量级,但与 zookeeper (后面简称 zk) 这种成熟的解决方案比较,还有一段距离。
zk 是 java 系,需要先安装 java,然后再安装 zk。zk 的搭建比较简单,网上很多文档(《Zookeeper 安装配置》),这里记录一下 MacOS
的搭建。