[返回] [最新] [最热门] [最高评价]

Kafka的复制机制

最近在设计一个多分区多副本的消息系统,以前对kafka有一些了解,在阅读了阿里的RocketMQ、小米的Pegasus等分布式系统后,再仔细阅读的kafka的复制设计,整理出本篇文档,可以和其它系统做一个对比。

Kafka是一种高吞吐量的分布式发布订阅消息系统,有如下特性:

通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。

高吞吐量:
...

鸟窝 2017-11-03 10:21 | 查看: 612

如何整个替换git master分支?

最近需要将一个项目的master分支用另一个分支完全替换, 查找了相关资料,最后追溯到stackoverflow上的一个提问: How to replace master branch in git, entirely, from another branch?。

网友给出了两种方案。

假设需要将seotweaks分支替换成master。

1、

1
2
3
4

git checkout
...

鸟窝 2017-10-24 14:45 | 查看: 264

[译] Kafka 存储的工作机制

翻译自 Kafka/Confluent 公司的工程师 Travis Jeffery 的文章: How Kafka’s Storage Internals Work。

通过本文我会帮助你理解Kafka是如何存储它的数据的。
对于调优Kafka的性能以及了解broker配置实际是干什么的, 了解Kafka的存储很有用。 我受Kafka的简单性的启发, 用我所学开始实现一个Go的Kafka: jock
...

鸟窝 2017-10-12 19:40 | 查看: 711

GOMAXPROCS需要设置吗?

自 Go 1.5开始, Go的GOMAXPROCS默认值已经设置为 CPU的核数, 这允许我们的Go程序充分使用机器的每一个CPU,最大程度的提高我们程序的并发性能, 而且,在大部分情况下, 我们并不会去设置这个参数。因为默认值已经足够好了, 以至于fasthttp的作者valyala提议禁止runtime.GOMAXPROCS设置这个数值, 对于所有的case, GOMAXPROCS默认值是否是
...

鸟窝 2017-10-11 15:41 | 查看: 498

badger 一个高性能的LSM K/V store

大家好,给大家介绍一下, 新晋的高性能的 K/V数据库: badger。

这是 dgraph.io开发的一款基于 log structured merge (LSM) tree 的 key-value 本地数据库, 使用 Go 开发。

事实上,市面上已经有一些知名的基于LSM tree的k/v数据库, 比如 leveldb、goleveldb、rocksdb、boltdb, 可是为什么还要创造
...

鸟窝 2017-10-11 12:17 | 查看: 474

Convert Shadowsocks into an HTTP proxy

备用,不解释

socks5 to http proxy

1、 首先安装 polipo, 设置parent proxy to Ss:

1
2
3

apt-get install polipo
service polipo stop
polipo socksParentProxy=localhost:1080 &

macosx运行

1
2

brew install polipo
poli
...

鸟窝 2017-10-10 15:35 | 查看: 580

[转]KV存储的对比

本文转自饿了么的高级架构师陈东明(cadem)发布于云栖社区的文章: KV存储的对比。作者还整理了另外一篇文章: 存储系统的分类,列举了常见的一些kv存储模型和实现。

最近对各种KV存储进行一个比较,从存储引擎到存储引擎的类型,到单机版的kvstore,再到分布式kvstore集群。

存储引擎的类型

类型
全称

btree

LSH
Log-Structured Hash Table

L
...

鸟窝 2017-10-10 11:39 | 查看: 521

functor applicative 和 monad

Monad 函数式编程中的一个概念, 在 Haskell 和 Scala 语言中用的比较多。

这个概念来源于数学中的范畴学,过于学术化,我看国内的文章介绍的很多,但是准确、清晰而简要的介绍的文章却没有看到。

我也不准备介绍,因为我对它的理解也不够深,这里引用 Functors, Applicatives, And Monads In Pictures一文中的图片和总结,来加深一下自己的理解。
...

鸟窝 2017-10-05 22:30 | 查看: 744

再谈谈获取 goroutine id 的方法

去年年初的时候曾经写过一篇关于如何获取goroutine id的方法: 如何得到goroutine 的 id?, 当时调研了一些一些获取goid的方法。基本的方法有三种:

通过Stack信息解析出ID

通过汇编获取runtime·getg方法的调用结果

直接修改运行时的代码,export一个可以外部调用的GoID()方法

每个方式都有些问题, #1比较慢, #2因为是hack的方式(Go
...

鸟窝 2017-09-30 22:15 | 查看: 1502

使用 Go 和 Let's Encrypt 快速配置HTTPS加密

Let's Encrypt 在2015年秋季推出了免费的数字证书认证计划,旨在消除当前手动创建和安装证书的复杂性,并推广加密的万维网服务,为安全网站提供免费的SSL/TLS证书。
Let's Encrypt 是由互联网安全研究小组(ISRG,一个公益组织)提供的服务。主要赞助商包括电子前哨基金会,Mozilla基金会,Akamai以及思科。2015年4月9日,ISRG与Linux基
...

鸟窝 2017-09-30 17:04 | 查看: 646

[转][译]面向分布式系统工程师的分布式系统理论

原文:Distributed systems theory for the distributed systems engineer

译者:youngsterxyf

Gwen Shapira,大腕级的解决方案架构师(SA),如今Cloudera的全职工程师,在Twitter上提的一个问题引起了我的思考。

如果是以前,我可能会回答“嗯,这里有篇FLP论文,这里有篇Paxos论文,这里还有篇拜占
...

鸟窝 2017-09-27 16:29 | 查看: 597

[译]使用 bcc/BPF 分析 go 程序

BCC 是基于 BPF 的 Linux IO 分析、监控、网络工具集合。BPF Compiler Collection (BCC) 是创建高效内核追踪和处理程序的工具包,包含几个有用的工具和用例。BCC 扩展了 BPF (Berkeley Packet Filters) 的用途,BPF 之前被称为 eBPF,是 Linux 3.15 新增的一个新特性。BCC 大部分的功能都要求 Linux 4.1
...

鸟窝 2017-09-22 18:11 | 查看: 531

...更多...