jasper的技术小窝

关注DevOps、运维监控、Python、Golang、开源、大数据、web开发、互联网

etcd中的raft实现

作者:jasper | 分类:分布式 | 标签:     | 阅读 1016 次 | 发布:2018-02-13 4:50 p.m.

在之前的一篇文章中我们了解了怎么使用ectd的raft的库来实现一个简单的分布式存储,但是只看了应用端对raft的调用以及周边,但是对于raft的库的内部没有做涉及,那么这篇文章我们就深入到raft内部看看其实现的细节。

阅读全文

深入Golang之context

作者:jasper | 分类:Golang | 标签:   | 阅读 509 次 | 发布:2018-01-28 11:26 p.m.

context在Golang的1.7版本之前,是在包golang.org/x/net/context中的,但是后来发现其在很多地方都是需要用到的,所有在1.7开始被列入了Golang的标准库。Context包专门用来简化处理单个请求的多个goroutine之间与请求域的数据、取消信号、截止时间等相关操作,那么这篇文章就来看看其用法和实现原理。

阅读全文

etcd-raft使用分析

作者:jasper | 分类:分布式 | 标签:     | 阅读 804 次 | 发布:2018-01-26 11:57 p.m.

最近在做一些分布式方面的项目,涉及到的数据一致性的问题当然没有造轮子,而是使用的开源的的实现,由于是Golang语言的,所以使用了hashcorp的raft库来实现,该库使用起来比较方便;在业界还有一个现成的raft实现就是etcd,使用会麻烦的多,这篇文章就来看看其具体的使用。

阅读全文

深入Golang之CGO

作者:jasper | 分类:Golang | 标签:   | 阅读 596 次 | 发布:2018-01-21 11:22 p.m.

在Golang中可以直接调用C语言的代码,之所以有这样的设计是因为Golang的定位虽然是"next C",但是一些底层的实现还是没有C强大的,这样可以解决一些类似的问题;其次毕竟Golang是一门年轻的语言,很多库可能不太健全,可以依靠C语言这样的老前辈自然会方便很多。下面我们就来探一探Golang中调用C的一些原理。

阅读全文

深入Golang之unsafe

作者:jasper | 分类:Golang | 标签:   | 阅读 448 次 | 发布:2018-01-14 11:51 p.m.

unsafe包在Golang中新手总是使用的不多,但是如果用好了的话,可以有一些黑魔法,解决一些棘手的问题,或者提高类型转化的效率。包里包含一些可以完成Golang中类型转换工作的操作。这一篇文章就让我们来一探究竟。

阅读全文

深入Golang之垃圾回收

作者:jasper | 分类:Golang | 标签:   | 阅读 707 次 | 发布:2017-12-25 10:12 p.m.

接着上一篇的来说,这里我们来看一下在Golang中垃圾回收的机制。其实Golang的垃圾回收在随着版本的更迭,一直在做调整和优化,这里是基于1.9版本的来分析。

阅读全文

深入Golang之内存管理

作者:jasper | 分类:Golang | 标签:   | 阅读 613 次 | 发布:2017-12-17 9:20 p.m.

我们知道Golang之所以比C开发起来容易的一个最主要原因就是它有自己的内存管理,有自己的GC机制。这让我们不用自己去关心对内存作管理。但是你使用这一门语言的时候,又必须知道它底层对于内存的管理,这样对于优化编程和排障等都有好处。

阅读全文

深入Golang之http

作者:jasper | 分类:Golang | 标签:   | 阅读 500 次 | 发布:2017-12-10 8:43 p.m.

Golang作为一个适用于高并发场景的语言,非常适合用以构建web服务。而且基于Golang的HTTP模块可以很方便地来实现,因为他自带了路由注册,连接处理等功能,这也是现在开源界Golang的web框架如此多的原因。下面我们就来看看Golang中HTTP的实现,从中我们也可以学习到Golang编程的一下小技巧。

阅读全文

使用InfluxDB监控kafka

作者:jasper | 分类:kafka | 标签:     | 阅读 696 次 | 发布:2017-12-02 5:30 p.m.

在很早之前的一篇文章里面,介绍了使用JMXTrans来监控kafka,最近在玩InfluxDB,想着也可以用InfluxDB来存储kafka的监控数据。虽然仍然可以使用JMXTrans来将数据发到kafka,实际上网上也有这样的实现,但是其部署和配置都不够简便,所以本文提供了一个更方便的方案。

阅读全文

深入Golang之netpoller

作者:jasper | 分类:Golang | 标签:   | 阅读 639 次 | 发布:2017-11-26 9:33 p.m.

Golang是一门主要面向互联网环境的分布式语言,这意味着它需要面对高并发的挑战。当系统出现高并发的IO访问时,如一个网络服务器通常要并发处理成百上千的链接,每个链接可能都是由一个用户任务执行的,那么将会出现大量阻塞的IO操作,如果为每个阻塞操作都单独分配一个OS线程,那么将会增加系统的负载。在Golang中针对网络IO做了特别的优化,而这就是我们这一篇将要探讨的netpoller。

阅读全文

其他分类: