ZooKeeper 入门简介

是什么?

Zookeeper 最早起源于雅虎研究院的一个研究小组。在当时,研究人员发现,在雅虎内部很多大型系统基本都需要依赖一个类似的系统来进行分布式协调,但是这些系统往往都存在分布式单点问题。所以,雅虎的开发人员就试图开发一个通用的无单点问题的分布式协调框架,以便让开发人员将精力集中在处理业务逻辑上。

《从 Paxos 到 ZooKeeper》

ZooKeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。

查看更多

ZooKeeper 配置文件解析

最低配置

以下是必须在配置文件中定义的最低配置选项:

  1. tickTime: ZooKeeper 中使用的基本时间单元, 以「毫秒」为单位, 默认值是 2000。它用来调节心跳和超时。例如, 默认的会话超时时间是两倍的 tickTime
  2. dataDir: ZooKeeper 用来存储内存数据库快照的目录, 并且除非指定其它目录, 否则数据库更新的事务日志也将会存储在该目录下。建议配置 dataLogDir 参数来指定 ZooKeeper 事务日志的存储目录。
  3. clientPort: 服务器监听客户端连接的端口, 也即客户端尝试连接的端口, 默认值是 2181
查看更多

tmux 入门 + 快捷键整理

1
2
3
本文全部快捷键和配置文件均在以下环境成功运行:
操作系统:MacOS 10.14
tmux 版本:tmux 2.9a

最近进入了工作热情高涨的时期,疯狂的重构、打包、上传,每次这样搞都要重复开好多的终端窗口而且要一个一个的用鼠标点来点去的很麻烦(最近莫名的嫌弃鼠标),所以想起了之前被自己放到「待会儿再读」收藏夹的「十分钟学会 tmux」,貌似这个工具可以帮助我更好的管理终端窗口。

话不多说直接上手:

PS:如果你也像我一样第一次接触这类软件,那么我建议你不要观望,先把软件下下来然后根据快捷键列表一个一个的尝试一次,再决定要不要使用,整个过程不超过十分钟但是却能给你节省 N 多观望的时间。

安装 tmux

tmux 可以应用在各类终端上(Windows 下未测试)支持 Vi/Emacs 风格的键盘映射

查看更多

webpack 4 入门

导读

写这篇文章是为了让自己在自学 webpack 的过程中有所产出,于是边读 webpack 中文文档 边写下了这篇文章,里面的很多实例都是直接挪用的文档中的实例,但在一些概念的理解上我加入了自己的想法「未必精确」,所以读的时候要抱着「怀疑的态度」。

文章内容不仅仅是简单的「概念堆叠」,还有一些「重点」概念的「深入理解」,不过篇幅有限我不希望这篇文章变成一份冗长的伪文档,所以全部的内容都是围绕 webpack 的 4个 核心概念延展开来的,每个配置后面我都会尽量跟上一个实例以更加形象的展示配置的具体作用。

站在我的角度上,读完这篇文章并不能让你精通 webpack 但是理解 webpack 中的重要概念,自己编写一个 webpack.config.js 配置文件还是可以的。

webpack 简介

本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(static module bundler)。在 webpack 处理应用程序时,它会在内部创建一个依赖图(dependency graph),用于映射到项目需要的每个模块,然后将所有这些依赖生成到一个或多个bundle。

查看更多

MacOS 下利用 pyenv 管理Python 版本和虚拟环境

pyenv 介绍

pyenvPython 版本管理工具。pyenv 可以改变全局的 Python 版本,安装多个版本的 Python,设置目录级别的 Python 版本,还能创建和管理 virtual python environments。所有的设置都是用户级别的操作,不需要 sudo 命令。

pyenv 主要用来管理 Python 的版本,比如一个项目需要 Python 2.x,一个项目需要 Python 3.x。 而 virtualenv 主要用来管理 Python 包的依赖,不同项目需要依赖的包版本不同,则需要使用虚拟环境。

pyenv 原理简介

pyenv 通过系统修改环境变量来实现 Python 不同版本的切换。而 virtualenv 通过将 Python 包安装到一个目录来作为 Python 包虚拟环境,通过切换目录来实现不同包环境间的切换。

pyenv 的美好之处在于,它并没有使用将不同的 PATH 植入不同的 shell 这种高耦合的工作方式,而是简单地在 PATH 的最前面插入了一个垫片路径(shims):~/.pyenv/shims:/usr/local/bin:/usr/bin:/bin。所有对 Python 可执行文件的查找都会首先被这个 shims 路径截获,从而使后方的系统路径失效。

安装之前

不同系统请参考 Common build problems,安装必须的工具。

查看更多

Python 虚拟环境:virtualenv 以及 virtualenvwrapper

在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题;亦或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难。此时,我们需要对于不同的工程使用不同的虚拟环境来保持开发环境以及宿主环境的清洁。

1. virtualenv

virtualenv 可以在系统中建立多个不同并且相互不干扰的虚拟环境。

1.1 原理简介

把系统 Python 「复制」一份到 virtualenv 的环境,用命令 source venv/bin/activate 进入一个 virtualenv 环境时,virtualenv 会修改相关环境变量,让命令 pythonpip 均指向当前的 virtualenv 环境。

PS:想了解更多可以查看 activate 脚本文件源码。

1.2 安装

1
pip install virtualenv

查看更多