前面讲了Vagrant的几个命令:

  • vagrant box add 添加box的操作
  • vagrant init 初始化box的操作
  • vagrant up 启动虚拟机的操作
  • vagrant ssh 登录虚拟机的操作
阅读全文 »

实际上Vagrant只是一个让你可以方便设置你想要的虚拟机的便携式工具,它底层支持VirtualBox、VMware甚至AWS作为虚拟机系统,本书中我们将使用VirtualBox来进行说明,所以第一步需要先安裝Vagrant和VirtualBox。

阅读全文 »

虚拟开发环境

平常我们经常会遇到这样的问题:在开发机上面开发完毕程序,放到正式环境之后会出现各种奇怪的问题:描述符少了、nginx配置不正确、MySQL编码不对、php缺少模块、glibc版本太低等。

所以我们就需要虚拟开发环境,我们虚拟和正式环境一样的虚拟开发环境,而随着个人开发机硬件的升级,我们可以很容易的在本机跑虚拟机,例如VMware、VirtualBox等。因此使用虚拟化开发环境,在本机可以运行自己喜欢的OS(Windows、Ubuntu、Mac等),开发的程序运行在虚拟机中,这样迁移到生产环境可以避免环境不一致导致的莫名错误。

阅读全文 »

什么是时间管理

时间管理(Time Management)就是用技巧、技术和工具帮助人们完成工作,实现目标。时间管理并不是要把所有事情做完,而是更有效的运用时间。时间管理的目的除了要决定你该做些什么事情之外,另一个很重要的目的也是决定什么事情不应该做;时间管理不是完全的掌控,而是降低变动性。时间管理最重要的功能是透过事先的规划,做为一种提醒与指引。

https://zh.wikipedia.org/zh-cn/%E6%97%B6%E9%97%B4%E7%AE%A1%E7%90%86

时间的管理最重要的在于能够集中自己的大的整块时间进行某些问题的处理。

阅读全文 »

摘自一篇博客,找不到了

Kafka技术概览

Kafka的特性

高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒

可扩展性:kafka集群支持热扩展

持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失

容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)

高并发:支持数千个客户端同时读写

Kafka一些重要设计思想

下面介绍先大体介绍一下Kafka的主要设计思想,可以让相关人员在短时间内了解到kafka相关特性,如果想深入研究,后面会对其中每一个特性都做详细介绍。

阅读全文 »

本篇主要是对网上资源的整理,缺乏原创。

什么是SimHash

SimHash是一种局部敏感hash(即Locality Sensitive Hashing,感兴趣可以自行学习下),是google用来处理海量文本去重的算法。

与普通Hash区别

传统的加密式hash,比如md5,其设计的目的是为了让整个分布尽可能地均匀,输入内容哪怕只有轻微变化,hash就会发生很大地变化。
我们理想当中的哈希函数,需要对几乎相同的输入内容,产生相同或者相近的hashcode,换句话说,hashcode的相似程度要能直接反映输入内容的相似程度。很明显,前面所说的md5等传统hash无法满足我们的需求。

阅读全文 »

zookeeper watch机制

一个zk的节点可以被监控,包括这个目录中存储的数据的修改,子节点目录的变化,一旦变化可以通知设置监控的客户端,这个功能是zookeeper对于应用最重要的特性,通过这个特性可以实现的功能包括配置的集中管理,集群管理,分布式锁等等。

阅读全文 »

Design

Motivation

我们设计Kafka用来作为统一的平台来处理大公司可能拥有的所有实时数据源。为了做到这点,我们必须思考大量的使用场景。

它必须有高吞吐去支持大数据流,例如实时日志聚合。

它必须优雅的处理数据积压,以支持定期从离线系统加载数据。

这也以为这系统必须支持低延迟的分发来处理传统消息系统的场景。

我们想支持分区的、分布式的、实时的处理数据源并创建新的数据源,这推动了我们的分区和消费模型。

最后,将流反馈到其他系统进行服务的情况下,我们知道系统必须能够保证容错性,在部分机器故障的时候提供服务。

支持这些使用推动我们做了一些列特殊的元素设计,比起传统的消息系统更像是数据库日志。我们将在以下章节介绍一些设计要素。

阅读全文 »