- 博客(20)
- 收藏
- 关注
转载 3种优雅的Go channel用法
写Go的人应该都听过Rob Pike的这句话Do not communicate by sharing memory; instead, share memory by communicating.相信很多朋友和我一样,在实际应用中总感觉不到好处,为了用channel而用。但以我的切身体会来说,这是写代码时碰到的场景不复杂、对channel不熟悉导致的,所以希望这篇文章能给大家带来
2016-12-30 00:56:56 7205 2
转载 一些Golang小技巧
今天给大家介绍3个我觉得比较有启发的Golang小技巧,分别是以下几个代码片段nsq里的select写文件和socketio模块里的sendfilefasthttp里对header的处理nsq里的select读在nsq中,需要读取之前磁盘上的,或者是从内存中直接读取,一般人都是先判断内存中有没有数据,然而,nsq另辟蹊径使用了select语句,把CSP模式用到了极致。源文件链接
2016-12-30 00:55:29 2315
转载 NSQ源码剖析之nsqd
NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。NSQ 具有分布式和去中心化拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征,是一个成熟的、已在大规模生成环境下应用的产品。NSQ 由 3 个守护进程组成: nsqd 是接收、保存和传送消息到客户端的守护进程。 nsqlookupd 是管理的拓扑信息,维护着
2016-12-30 00:50:23 1437
转载 NSQ源码分析之nsqlookupd
上篇文章介绍了NSQ整体概述以及拓扑结构;这篇文章开始分析下NSQ源码;NSQ主要由三个部分nsqd,nsqlookupd,nsqadmin以及一些工具组成,我们从简单的nsqlookupd开始分析源码;nsqlookupd是nsq管理集群拓扑信息以及用于注册和发现nsqd服务;所以,也可以把nsqlookupd理解为注册发现服务;当nsq集群中有多个nsqlookupd服务时,因为每个nsqd都
2016-12-30 00:44:44 1230 2
转载 NSQ源码分析之概述
消息队列在互联网公司使用非常普遍,因此也促使我去学习研究消息队列的原理以及细节问题;之前也有接触过消息队列,最主要就是在异步处理方面,当然消息队列还解耦,流量削峰等功能;目前消息队列产品也比较多,例如kafka,ActiveMQ,RabbitMQ,NSQ等等;之前原本打算看kafka,但是处于学习成本(kafka是scala编写,之前scala接触的比较少),所以就先不看kafka,选择了NSQ;
2016-12-30 00:43:12 2265
转载 NSQ的设计特点:
nsq的设计特点:分布式的队列传输节点,能够避免传输节点的单点故障,确保消息一定会被传输一次, 但是这样可能引起消息被多次传输bound the memory footprint of a single process (by persisting some messages to disk)简化消费者和生产者的配置提供了一个简单明确的升级路线提升了效率nsqde的基本概念
2016-12-30 00:40:03 2422
转载 Scaling NSQ to 750 Billion Messages
Since Segment’s first launch in 2012, we’ve used queues everywhere. Our API queues messages immediately. Our workers communicate by consuming from one queue and then publishing to another. It’s given
2016-12-30 00:31:45 428
转载 Go高性能编程技巧2
So You Wanna Go Fast?I originally proposed this as a GopherCon talk on writing “high-performance Go”, which is why it may seem rambling, incoherent, and—at times—not at all related to Go. The
2016-12-29 22:24:30 894
转载 Go高性能编程技巧
1. 线程ID,最好自己模拟实现。不要使用runtime库。性能损耗很大。最好别这么做。func GoID() int {var buf [64]byten := runtime.Stack(buf[:], false)idField := strings.Fields(strings.TrimPrefix(string(buf[:n]), "goroutine
2016-12-29 22:20:19 1410
转载 Go语言中Gob与Thrift的测试
Golang提供了一个服务器之间传输数据的包Gob。使用这个包可以轻松的在服务器之间传递Go语言内置类型的数据。使用的时候只需要调用 Encode 和 Decode 两个方法,不需要关注内部的数据传输细节。同时thrift从0.9.1版本(目前最新的thrift版本是0.9.2)开始,实现了对Go语言的支持。最近在重新设计日志系统,涉及到数据传输,就考虑到使用Gob还是Thtift。这里的关注点比
2016-12-29 14:16:13 1445 1
转载 Thrift 的TNonblockingServer运行原理分析
整理下thrift TNonblockingServer的工作流程,简单记录下, 因为处理过程比较复杂不具体分析了,TNonblockingServer的工作流程如下:–1– server 创建 多个 iothread 和 工作线程池 workpool thread (给iothread发消息的方式主要通过管道的方式进行 )–2– 传递listenfd 给 iothread
2016-12-29 13:27:22 686
转载 golang thrift 总结一下网络上的一些坑
我们以hello world来大概分析一下golang中的thrift包,并且扒一扒网络上有关thrift的一些坑 查看源码,服务器定义如下:(详见simple_server.go文件)type TSimpleServer struct { quit chan struct{} stopped int64 processorFactory
2016-12-28 19:31:49 3096
转载 golang thrift 源码分析,服务器和客户端究竟是如何工作的
首先编写thrift文件(rpcserver.thrift),运行thrift --gen go rpcserver.thrift,生成代码namespace go rpcservice RpcService { string SayHi(1: string name); void SayHello(1: string name);}搭建一个以二进制为传输
2016-12-28 19:21:30 1166
转载 GO语言构建高并发分布式系统实践
此文是根据周洋在【高可用架构群】中的分享内容整理而成,转发请注明出处。周洋,360手机助手技术经理及架构师,负责360长连接消息系统,360手机助手架构的开发与维护。不知道咱们群名什么时候改为“Python高可用架构群”了,所以不得不说,很荣幸能在接下来的一个小时里在Python群里讨论golang....360消息系统介绍
2016-12-24 14:00:01 9074
转载 来自Google的TCP BBR拥塞控制算法解析
写本文的初衷一部分来自于工作,更多的来自于发现国内几乎还没有中文版的关于TCP bbr算法的文章,我想抢个沙发。本文写于2016/10/15! 本文的写作方式可能稍有不同,之前很多关于OpenVPN,Netfilter,IP路由,TCP的文章中,我都是先罗列了问题,然后阐述如何解决这个问题。但是本文不同!本文的内容来自于我十分厌恶的一个领域,其中又牵扯到我十分厌恶的一家公司-华夏
2016-12-21 12:03:43 1928
转载 Golang官方如何支持加载动态库
Golang1.8官方支持加载动态库了,而且看起来功能很强大。 文档上面描述Plugin功能是协程并发安全的,而且支持高级数据类型(包括chan),同时不需要写任何C代码(以前或多或少需要写一些)。下面我们通过一些demo来看看如何使用golang plugin功能入门下面是一个简单的plugin 代码:package main// // No C code needed.i
2016-12-20 21:19:27 17010 1
转载 awesome-go
https://awesome-go.com/Awesome Go A curated list of awesome Go frameworks, libraries and software. Inspired by awesome-python.ContributingPlease take a quick gander at the contribu
2016-12-20 19:44:06 2935
转载 【译文】通过Go来处理每分钟达百万的数据请求
原文作者为Malwarebytes公司的首席架构师Marcio Castilho,博客原文地址 —— http://marcio.io/2015/07/handling-1-million-requests-per-minute-with-golang/前言目前Malwarebytes公司正在经历显著的发展,自从我一年前加入这家在硅谷的公司, 我的主要责任之一就是给一些快速发展的安
2016-12-20 18:21:42 503
原创 google protobuffer 3.1.0安装
sudo权限wget https://github.com/google/protobuf/archive/v3.1.0.tar.gzyum install autoconfautomakelibtool./autogen.sh./configuremake && make install参考资料 protob
2016-12-08 11:30:51 2228
原创 cgo的一些经验. golang 调用 so 方法
int EC60789803D1(const char *CompanyTag, char *dataIn, int inlen, unsigned char *dataout, int outlen);// Encrypt{ var byteOutBuffer []byte byteOutBuffer = make( []byte, 2048 ) var outle...
2016-12-02 16:17:52 9655 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人