Go语言中文网 为您找到相关结果 321

golang byte转string 字节数组转字符串的问题

golang语言本身就是c的工具集,开发c的程序用到的大部分结构体,内存管理,携程等,golang基本都有,他只是在这个基础上又加了一些概念这里说一个很小的问题,就是字节数组转string的问题,网上大部分都是这样转的(包括google上):string(p[:]),这个转完了是有问题的,我们再来看一下string这个结构体: struct String{ byte* str; intgo len;}; 这个结构体让我想起了nginx的string,他是这样定义的: typedef struct { size_t len; u_char *data;} ngx_str_t; golang里边 string的概念其实不是以前遇到\0结尾的概念了,他其实就是一块连续的内存,首地址+长度,上面那样...阅读全文

博文 2015-08-17 03:00:00 anjianliang

微服务实战(一):微服务架构的优势与不足

【编者的话】本文来自Nginx官方博客,是微服务系列文章的第一篇,主要探讨了传统的单体式应用的不足,以及微服务架构的优势与挑战。正如作者所说,微服务架构更适合用于构建复杂的应用,尽管它也有自己的不足。 这篇文章作者是Chris Richardson,他是早期基于Java的Amazonite EC2 PaaS平台CloudFoundry.com的创始人。现在他为企业提供如何开发和部署应用的咨询服务。他也经常在http://microservices.io上发表有关微服务的文章。 微服务正在博客、社交媒体讨论组和会议演讲中获得越来越多的关注,在Gartner的2014 Hype Cycle上它的排名非常靠前。同时,软件社区中也有不少持怀疑论者,认为微服务不是什么新东西。Naysayers认为这就...阅读全文

博文 2016-02-29 11:00:20 hokingyang

go 通过nginx代理后获取用户ip

go 如果使用自己的服务器,可以直接使用 net/http 来获取 func ip(w http.ResponseWriter, r *http.Request) { fmt.Println(r.RemoteAddr) } 另外,在net包中也有 func (c *IPConn) RemoteAddr() Addr 以上是获取用户的ip,是与用户直连的ip,如果走代理,会是代理的ip 如果通过nginx代理,上边方法获得的是nginx的服务器的ip,所以这里要设置nginx代理 proxy_set_header Remote_addr $remote_addr; nginx会 转发ip到go的服务器,在通过go获取header中的romote_adder 获取用户的ip func ip(w ...阅读全文

博文 2014-10-04 19:26:28 zggsdy

Golang在京东列表页实践总结

目前线上状态 基于搜索实现; 全量数据,搜索结果不理想; 接口响应时间长,影响了用户体验; 没法针对数据做二次优化; 转化率相对较低; 基于以上原因,需要做出改变,所以就需要对老进行重构,如下 重构版本 非全量数据,线下异步根据数据模型进行进行筛选部分最优数据; 要求时时过滤计算,接口相应时间要快,保证用户体验; 数据进行优化,提高转换率,提搞GMV; 为何选择golang golang语言强大的并发能力; 与C相媲美的性能,新版对cpu计算要求较高; 基于以上两点,所以选择了golang语言作为服务端计算使用的语言。 重构后的架构图 解释下架构图各个模块功能 Nginx+Lua: 用来渲染页面,拿到go计算服务的json数据渲染到页面端,最终呈现给终端用户; Config Center 是...阅读全文

微服务实战(二):使用API Gateway

【编者的话】本系列的第一篇介绍了微服务架构模式。它讨论了采用微服务的优点和缺点,除了一些复杂的微服务,这种模式还是复杂应用的理想选择。 当你决定将应用作为一组微服务时,需要决定应用客户端如何与微服务交互。在单体式程序中,通常只有一组冗余的或者负载均衡的服务提供点。在微服务架构中,每一个微服务暴露一组细粒度的服务提供点。在本篇文章中,我们来看它如何影响客户端到服务端通信,同时提出一种API Gateway的方法。 介绍假定你正在为在线购物应用开发一个原生手机客户端。你需要实现一个产品最终页来展示商品信息。 例如,下面的图展示了你在亚马逊Android客户端上滑动产品最终页时看到的信息。 虽然这是一个智能手机应用,这个产品最终页展示了非常多的信息。例如,不仅这里有产品基本信息(名字、描述和价格)...阅读全文

博文 2016-03-02 10:44:11 Sonyfe25cp

GO性能测试:未进行任何优化

srs.go中对于GO的tcp模块,以及web服务器martini做了初步的性能测试,没有做任何优化。 TCP部分 TCP部分参考:https://github.com/winlinvip/srs.go/tree/master/research/tcp GO作为服务器 GO作为服务器 go build ./tcp.server.go && ./tcp.server 1 1990 4096 >/dev/null g++ tcp.client.cpp -g -O0 -o tcp.client && ./tcp.client 1990 4096 >/dev/null ----total-cpu-usage---- -dsk/total- ---net/lo-- ---paging-- ---sys...阅读全文

博文 2014-11-03 19:00:00 winlinvip

让go语言调用外部程序时支持管道符

有一个需求是用go语言程序调用外部命令时,允许使用管道符,如 ls | wc -l Go语言对外部命令的调用进行了一定的封装,下面来试一下: package main import ( "os" "os/exec" ) func main() { run1() } func run1() { cmd := exec.Command("ls", "|", "wc", "-l") cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr cmd.Start() cmd.Run() cmd.Wait() } 这样执行时,控制台会打出错误: ls: 无法访问|: 没有那个文件或目录 ls: 无法访问wc: 没有那个文件或目录 难道Go程序不能使用管道符命令吗?带这此...阅读全文

博文 2014-10-04 19:26:31 qinerg

PHP7+Swoole比Nginx/Golang性能高75%

性能对比 使用apache bench工具对Nginx静态页、Golang Http程序、PHP7+Swoole Http程序进行压力测试。在并发100进行100万次Http请求的基准测试中,PHP7+Swoole比Nginx/Golang性能高75%,QPS对比如下: 软件QPS Nginx 164489.92 Golang 166838.68 PHP7+Swoole 287104.12 Nginx-1.9.9 245058.70 注:Nginx升级到最新的1.9.9,关闭access_log,启用open_file_cache缓存静态文件到内存,最新测试达到了245058.70qps 测试环境 硬件配置 CPU:Intel® Core™ i5-4590 CPU @ 3.30GHz × 4...阅读全文

博文 2015-12-15 21:00:01 chunguang

Go 和 Python Web 服务器性能对比

自:http://www.oschina.net/question/25940_19172 siege -c 200 -t 20s http: //SERVER_ADDR :8080 /Hello/100 框架请求速率 [1/sec] Go http 1350 Twister 1324 Web.go 1141 Tornado 882 Tornado+nginx 862 Web.py+CheryPy 169 Web.py+nginx 114 框架请求速率 [1/sec] Go http 1768 Twister 1746 Tornado 1682 Web.go 1516 Tornado+nginx 1378 Web.py+CheryPy 308 Web.py+nginx 198 框架请求速率 ...阅读全文

博文 2014-12-04 00:00:01 anbo724

微服务实战(四):服务发现的可行方案以及实践案例

这是关于使用微服务架构创建应用系列的第四篇文章。第一篇介绍了微服务架构的模式,讨论了使用微服务架构的优缺点。第二和第三篇描述了微服务架构内部的通讯机制。这篇文章中,我们将会探讨服务发现相关问题。 为什么要使用服务发现?设想一下,我们正在写代码使用了提供REST API或者Thrift API的服务,为了完成一次服务请求,代码需要知道服务实例的网络位置(IP地址和端口)。传统应用都运行在物理硬件上,服务实例的网络位置都是相对固定的。例如,代码可以从一个经常变更的配置文件中读取网络位置。 而对于一个现代的,基于云微服务的应用来说,这却是一个很麻烦的问题。其架构如图所示: 服务实例的网络位置都是动态分配的,而且因为扩展、失效和升级等需求,服务实例会经常动态改变,因此,客户端代码需要使用一种更加复杂...阅读全文

博文 2016-03-04 10:25:26 hokingyang

nginx +golang

nginx 配置 01 #列出所有服务器地址,nginx 自动均衡分发请求到各个服务器。 02 upstream frontends { 03 ip_hash; 04 server 192.168.199.1:8088; 05 server 192.168.199.2:8089; 06 } 07 server { 08 listen 80; 09 server_name mydomain.com www.mydomain.com; 10 location / { 11 proxy_pass_header Server; 12 proxy_set_header Host $http_host; 13 proxy_redirect off; 14 proxy_set_header X-Real-...阅读全文

博文 2015-06-17 20:23:36 zb_liang

linux 服务器部署go工程

linux安装go环境这里不做讲解 假设gopath GOPATH="/root/go" 那么把工程上传到这个/root/go/src/ 这个目录下,假设工程名字是future,那么cd /root/go/src/future 执行go build,这时候cd future后ls会发现多了一个绿色的future文件 这个时候如果只想执行一个(关闭putty的时候自动停止运行)执行./future ,但是我们部署的工程往往希望在后台一直运行,这时侯如果刚才的已经执行了./future命令,再执行nohup ./future &> future.log &就会报错,翻译过来是说这个程序已经在运行了,首先ps aux|grep future 找出这个pid ,假如是21432 ,直接执行kill ...阅读全文

博文 2016-04-25 17:00:01 silk_java

ngx_lua与go高并发性能对比

Nginx在处理高并发能力上非常出色,而go作为新时代互联网语言,在设计之初就为实现高并发。ngx_lua由Nginx来处理网络事件,并使用协程来实现非阻塞,从而实现高并发。 go语言级别提供非阻塞的api,同样使用协程来提供高并发处理。 我们来测试对比一下两者的性能。 ngx_lua:Tengine/1.4.3+luajit+ngx_lua go:go1.0.3 分别实现512字节的内容的输出,对比在不同并发下的qps。 测试机器: 16core Intel(R) Xeon(R) CPU E5520 @ 2.27GHz Linux localhost 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:48 EDT 2009 x86_64 x86_64 x86_6...阅读全文

博文 2014-11-12 14:00:01 weiyuefei

使用golang开发websocket的记录

使用beego框架进行整个社区的restful api的开发,查找资料后决定使用github.com/gorilla/websocket 作为websocket的包, 定义websocket的属性 var upgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } 都是按照官方的例子来,期间也参考了beego的一个聊天室的实例。 ws, err := upgrader.Upgrade(this.Ctx.ResponseWriter, this.Ctx.Request, nil) defer ws.Close() 因为是使用beego框架,所以实例化websocket的时候,传输的参数是使用beeg...阅读全文

博文 2016-01-06 03:00:00 bingciwei

Beego+uploadify实现图片批量上传

抱歉这个原页面打不开,链接是百度快照的,请作者见谅 我对前端了解的不多,这里原作者提供的思路和插件挺好的,以下全部为转载: Beego+uploadify实现图片批量上传 Golang>Beego+uploadify实现图片批量上传 by momaek 2014-09-12 02:38. 使用uploadify来实现无刷新批量上传图片,后台使用Beego 来处理上传的图片。需要在 form 表单需要添加这个属性 enctype="multipart/form-data" 不然浏览器是不会上传你的文件的。 下载uploadify,就不多说了。免费的版本就可以了,你也可以下载收费的。免费的是flash版本,收费的是html5版本。具体区别我没有研究过。感兴趣的童鞋可以去研究下。 引入upload...阅读全文

博文 2015-06-17 20:13:48 u012210379

golang--零下线时间式重启

在Hacker News看到用Go达到Zero-downtime restarts,意思大概为零下线时间式重启,很早就知道nginx可以轻松做到平滑重启,一直都想用go来实现这样的功能。看了一下它的代码实现,所以有了这篇博文。 项目名字叫goagain,地址在:https://github.com/rcrowley/goagain。该项目是一个类库,也就是package,在go开发的程序中添加这个package就可以轻松地重启程序。 goagain会监控2个系统信号,一个为SIGTERM,接收到这个信号,程序就停止运行。另一个信号为SIGUSR2,接收到这个信号的行为是,当前进程,也就是父进程会新建一个子进程,然后把父进程的pid保存到一个名为GOAGAIN_PPID的环境变量;子进程启动的...阅读全文

博文 2014-10-04 19:26:11 getong

用wrk对golang/nodejs/nginx做性能测试对比

sudo taskset -c 1 ./wrk -c1 -t1 -d30 http://localhost/hello wrk+nginx(helloworld module) sudo taskset -c 0 sbin/nginx nginx: cpu:76% wrk: cpu:70% Running 30s test @ http://localhost/hello 1 threads and 1 connections Thread Stats Avg Stdev Max +/- Stdev Latency 61.55us 27.57us 4.30ms 99.28% Req/Sec 11.58k 682.50 14.44k 76.94% 325276 requests in 30.0...阅读全文

博文 2015-05-18 21:00:02 chuqingq

golang 基于beego web框架写的 web页面自由配置nginx虚拟主机

nginxconf web页面自由配置nginx虚拟主机 该项目基于golang的 beego web框架 主要实现了一下功能 创建新的nginx代理配置文件 并自动调用 nginx reload 命令 暂时没有实现删除配置文件命令 应用场景 nginx需要实现代理访问多个主机,操作人员无需懂得nginx配置只需要在web页面点击下鼠标即可 多个 golang 应用程序在服务器后台运行在非80端口,nginx更具不同的域名代理访问不同的golang应用程序 改造后可以做什么? 增加设置多个nginx配置模板,可以实现负载均衡、自动配置虚拟主机等高级的nginx的功能 nginx配置模板为nginxconf/template/domainlocalconf.tpl 该项目使用帮助 由于我在wi...阅读全文

博文 2015-03-20 20:00:01 young-轻人

nginx 反向代理 golang web

现有两个Golang Web服务程序: web1(8080), web2(8081), 两个域名:www.xxxxx.com, www.yyyy.com 在一台机器上,使xxxxx.com 解析到 8080端口,yyyy.com解析到8081端口 使用nginx进行反向代理的方法: 一、在nginx配置文件中,添加如下配置 server{ listen 80; server_name www.xxxxx.com xxxxx.com; location /{ try_files /_not_exists @backend; } location @backend{ proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header H...阅读全文

博文 2015-10-31 15:00:06 honsty0113

Rancher使用入门

上个月末,Rancher Labs在其官方博客上宣布了 Rancher 1.0正式版本发布。 这是继Apache Mesos、 Google Kubernetes以及Docker 原生 Swarm 之后,又一个可用于Production环境中的容器管理和服务编排工具,而Rancher恰似这个领域的最后一张拼图(请原谅我的孤陋寡闻,如 果有其他 厂商在做这方面产品,请在评论中留言告诉我)。从Rancher Labs的官方about中我们可以看到:Rancher Labs致力于为DevOps team打造一个最好的容器管理平台,让容器的部署和管理变得更加Easy。 本文将带大家与Rancher来个亲密接触,直观的体会一下Rancher的入门级使用方法。 注意:由于Rancher还在active ...阅读全文

博文 2016-04-19 08:54:40 bigwhite

准备写一个基于go、angularjs的系统管理平台

功能要求:监控 http、tcp、udp 等服务状态分析 nginx、tomcat、weblogic 等日志监控 linux 服务器 cpu、硬盘、内存、网卡流量邮件报警go 主要用来写后台代码和监控 linux 服务器的 client 代码,并提供一个 api 给 angularjs 来查询和更新数据。上面这些功能使用 python 更容易实现一些(python 有许多现成的模块可以使用),只不过拿这个项目作为学习 go 的一个手段。目前完成了一部分的 go 和 angularjs 的代码。代码目前托管在 coding,有兴趣的朋友可以留言一起来学习交流 go 和 angularjs...阅读全文

博文 2015-06-18 09:02:45 qcpm1983

使用Filebeat输送Docker容器的日志

今天我们来说说Docker容器日志。 一、容器日志输出的旧疾及能力演进 Docker容器在默认情况下会将打印到stdout、stderr的 日志数据存储在本地磁盘上,默认位置为/var/lib/docker/containers/{ContainerId} /{ContainerId}-json.log。在老版本Docker中,这种日志记录方式经常被诟病,诸如:日志大小无限制、无法 Rotate(轮转)、无日志基本管理能力以及性能糟糕等。针对这些旧疾,Docker一直试图在演进中完善和解决。 记忆中好像是在Docker 1.8版本中,Docker增加了对json-file型(默认)log driver的rotate功能,我们可通过max-size和max-file两个–log-opt来配置。...阅读全文

博文 2016-04-19 08:54:10 bigwhite

The easy guide to securing HTTP + TLS with Go

The Go programming language makes it easy to write and deploy servers offering HTTPS ( HTTP + Transport Layer Security) to clients. The crypto package in Go’s standard library is easy to use and well documented: it’s an under-explored gem. Due to it’s low-on-legacy implementation of modern standards and easy configurability, there is no reason to i...阅读全文

博文 2015-04-29 14:04:19 Siddharth Mathur

使用client-go实现k8s操作

package main import ( "flag" "fmt" "k8s.io/client-go/1.4/kubernetes" "k8s.io/client-go/1.4/pkg/api" "k8s.io/client-go/1.4/pkg/api/unversioned" "k8s.io/client-go/1.4/pkg/api/v1" "k8s.io/client-go/1.4/tools/clientcmd" "log" ) var ( kubeconfig = flag.String("kubeconfig", "./config", "absolute path to the kubeconfig file") ) func main() { flag.Parse() ...阅读全文

博文 2016-12-21 00:00:02 yevvzi

Golang UnitTest单元测试

最近做项目的时候一直很苦恼,go的单元测试是怎么回事,之前有看过go test xx_test.go命令进行单元测试,只知道有这么一说。最近项目中写了很多工具类,一直想测试一下性能和执行结果。发现完全不对。 这是代码。 发现多次执行go test utilfile_test.go完全没有任何输出。查很多原因和多帖子,都没说到重点。今天在群里问了下,才发现go单元测试对文件名和方法名,参数都有很严格的要求。 例如: 1、文件名必须以xx_test.go命名 2、方法必须是Test[^a-z]开头 3、方法参数必须 t *testing.T 之前就因为第 2 点没有写对,导致找了半天错误。现在真的让人记忆深刻啊,小小的东西当初看书没仔细。 go test -v utilfile_test.go测...阅读全文

博文 2015-06-18 08:02:19 x369201170

Benchmarking Go and Python Web servers

To build the Web applications I use mostly Python. An year ago I started learning Go, mainly for fun. In the meantime it turned out that I have to rewrite some old CGI application written in C, which have worked with thttpd server in chroot mode. I started searching for a tool with which I could write a standalone web application with embedded web ...阅读全文

博文 2015-05-14 11:00:10 鑫鑫向融

Golang UnitTest单元测试(go test)

##Golang UnitTest单元测试 Golang单元测试对文件名和方法名,参数都有很严格的要求。 例如: 1、文件名必须以xx_test.go命名 2、方法必须是Test[^a-z]开头 3、方法参数必须 t *testing.T 之前就因为第 2 点没有写对,导致找了半天错误。现在真的让人记忆深刻啊,小小的东西当初看书没仔细。 下面分享一点go test的参数解读。来源 go test是go语言自带的测试工具,其中包含的是两类,单元测试和性能测试 通过go help test可以看到go test的使用说明: 格式形如: go test [-c] [-i] [build flags] [packages] [flags for test binary] 参数解读: -c : 编译g...阅读全文

beego 0.9.0 中智能路由AutoRouter的使用方法及源码解读

了解beego的开发者肯定知道,beego的路由设计来源于sinatra,原来是不支持自动路由的,每一个路由都要自己配置的,如: type MainController struct { beego.Controller } func (this *MainController) Get() { this.Ctx.WriteString("hello world") } func main() { beego.Router("/", &MainController{}) beego.Run() } beego.Controller 提供所有的restful方法,Get,Post,Delete等方法,通过重写这些方法,已响应客户端不同的请求方式。 用过Node.js的同学,肯定觉得很熟悉,拿最...阅读全文

博文 2014-10-04 19:26:21 yuan-shuai

用golang fastcgi与nginx配合写web

1.配置nginx/FastCGI This is actually pretty easy. I assume you already have some experience configuring nginx.conf. (Each install seemingly has different defaults as to the conf file's location, and contents, so I won't go over it here. Mine is in /usr/local/etc/nginx.) I assume too that you've configured PHP with FastCGI before. If not, you may stil...阅读全文

博文 2015-06-17 20:02:14 ijibu

新兴的web服务器caddy

caddy 是一个像 Apache, nginx, 或 lighttpd 的web服务器。你要问nginx已经很好了,为什么要用caddy呢? 我觉得caddy最大的特点是用起来简单,然后呢,它还有下面这些开箱即用的特性: HTTP/2 全自动支持HTTP/2协议,无需任何配置。 Auto HTTPS Caddy 使用 Let's Encrypt 让你的站点全自动变成全站HTTPS,无需任何配置。当然你想使用自己的证书也是可以的。 Multi-core 因为caddy是golang写的,所以当然可以合理使用多核啦。 IPv6 完全支持IPv6环境. WebSockets Caddy 对WebSockets有很好的支持. Markdown 自动把md转成 HTML ,当然,我后续要给大家介绍更...阅读全文

博文 2017-03-16 13:00:48 Muninn

使用golang切割nginx日志

简单学习了golang/go语言的基础语法,做个定时切割nginx日志的小脚本练习下,感觉挺好使的~ 脚本代码如下,install后将脚本加入到crontab定时运行,当然golang也可以自己定时执行,这里加入到crontab运行,是因为golang进程有可能会被kill掉.... package main import ( "fmt" "os" "path/filepath" "syscall" "time" "strings" "os/exec" "io/ioutil" ) func main(){ //日志目录 srcDirPath := "/usr/local/nginx/logs" //存放切割日志目录 targetDirPath := "/usr/local/nginx/log...阅读全文

博文 2015-06-17 20:02:18 phpwww

微信服务号和Go语言开发初学者开发服务号过程中的填坑之旅

最近给某用户做微信服务号自定义开发,需求很简单,主要功能是从用户已有的系统读取数据显示在服务号中。虽然是微信服务号和Go语言的开发初学者,但是感觉实现过程也应该非常简单,也就是从用户已有的外网数据库中读出数据,调用微信的API展示,相信一周之内可以很快搞定。没想到实际开发过程中还是遇到了一些坑,将填坑过程总结如下: 1、 用户要求自定义菜单的二级菜单有6项,一开始没当回事,后来看微信API文档发现只支持5项二级菜单。 这个好解决,和用户沟通把多余的二级菜单移到另一个主菜单下,但估计会给用户留下不专业的印象啦 2、 服务端API采用Go语言开发,用户旧系统的数据库用的是SQLServer2000,是的,SQLServer2000,你没看错,很古老的数据库。 1) Go语言没有支持SQLServ...阅读全文

博文 2014-12-16 15:00:08 bluezwt

ELK5.5+Filebeat分布式日志系统

最近在用k8s管理项目, 每个容器都会打印自己的日志, 目前的解决方案是用ntfs4在线文件系统统一存储, 考虑到性能问题, 还是将日志打印到宿主机, 然后通过elk分布式日志收集. 但如果在每台服务器部署logstash是比较耗资源的, 毕竟是java项目. 好在作者重新用golang写了一套新的采集工具filebeat, 性能更高, 暂用资源也更少, 所以这里在每台服务器部署filebeat采集日志, 然后统一缓存到redis, 而elk所在的服务器通过logstash从redis里面取数据, 然后发送给elasticsearch分析, 通过kibana显示 此图是盗用别人的, 但能够很好的展示流程, 所以自己就不画了 一. 日志服务器配置 下载二进制文件到/mnt挂在目录 # 进入挂载...阅读全文

博文 2017-07-26 17:06:25 殷临风

Go和Python Web服务器性能对比

Go和Python Web服务器性能对比 2011-08-05 13:41 renwofei423 开源中国社区 我要评论(0) 字号:T | T 我通常使用Python来构建Web 应用。一年前,在兴趣的驱使下,我开始学习Go。我发现,有 http、mustache.go GoMySQL 包的 Go 可以是我用来工作的不错的工具组合。因此,我决定使用Go编写我的应用 AD:2013云计算架构师峰会精彩课程曝光 我通常使用Python来构建Web 应用。一年前,在兴趣的驱使下,我开始学习Go。 在此期间,我重写了一些原本由C 开发的CGI 应用,包括运行于 chroot 环境下的同 thttpd 服务器一起的应用。我开始寻找可以开发易于 chroot、且内置 Web 服务器的独立 Web 应...阅读全文

博文 2014-10-30 04:00:00 legend_x

Qihoo 360 and Go

自:http://blog.golang.org/qihoo Qihoo 360 and Go This guest blog post was written by Yang Zhou, Software Engineer at Qihoo 360. Qihoo 360 is a major provider of Internet and mobile security products and services in China, and operates a major Android-based mobile distribution platform. At the end of June 2014, Qihoo had about 500 million monthly act...阅读全文

博文 2015-07-10 03:00:06 leonzhouwei

奇虎360 和 go

This guest blog post was written by Yang Zhou, Software Engineer at Qihoo 360. Qihoo 360 is a major provider of Internet and mobile security products and services in China, and operates a major Android-based mobile distribution platform. At the end of June 2014, Qihoo had about 500 million monthly active PC Internet users and over 640 million mobil...阅读全文

博文 2015-07-09 15:00:01 尹绵绵, 肖邦也没谱, zypy333

用wrk测试nginx/ndoejs/golang

sudo taskset -c 1 ./wrk -c1 -t1 -d30 http://localhost/hello wrk+nginx(helloworld module) sudo taskset -c 0 sbin/nginx nginx: cpu:76% wrk: cpu:70% Running 30s test @ http://localhost/hello 1 threads and 1 connections Thread Stats Avg Stdev Max +/- Stdev Latency 61.55us 27.57us 4.30ms 99.28% Req/Sec 11.58k 682.50 14.44k 76.94% 325276 requests in 30.0...阅读全文

博文 2014-10-04 19:26:14 chuqq

使用 caddy 作为微服务的 API gateway

背景 大家都知道,Docker这些年让IT界产生了深刻的变革,从开发到测试到运维,处处都有它的身影。它同时也和微服务架构相互促进,并肩前行。 在最新版的 Docker(CE 17.03) 里,随着 swarm mode 的成熟,在较简单的场景里已经可以不再需要专门的基础设施管理,服务编排,服务发现,健康检查,负载均衡等等。 但是API gateway还是需要一个的。或许再加上一个日志收集,你的微服务架构就五脏俱全了。我们知道Nginx Plus是可以很好的胜任 API gateway 的工作的,但它是商业软件。Nginx我们不说认证啊限流啊统计啊之类的功能,单就请求转发这一点最基本的就出了问题。 我们知道Docker是用DNS的方式,均衡同一名称的服务请求到不同的node,但是Nginx为了...阅读全文

博文 2017-03-18 08:53:33 Muninn

GO web之Hello world

GO语言不像php、java那样,需要使用apache、nginx、tomcat之类的第三方服务器,可以自身通过http包构建web服务器 package main import ( "fmt" "net/http" ) func sayhelloName(w http.ResponseWriter, r *http.Request){ fmt.Fprintf(w, "hello world,go web!!") } func main() { http.HandleFunc("/goweb.go", sayhelloName) http.ListenAndServe(":9090", nil) ...阅读全文

博文 2015-06-17 23:08:19 u010816280

是的,为了更好的支持微服务,我们从PHP迁移到了Go

起初,我们认为坚持一门熟悉的语言是负责任的事情——我们是一个小团队,却已经冒了两次险:切换到微服务和完全重写我们的 Web 应用程序(高流量游戏平台)。但是,最终我们决定放弃 PHP 拥抱 Go,下面我将解释为什么这么做,并分享一些在我们的微服务架构中数据库相关的想法。微服务和 PHP:概念性错配我们熟悉的语言是 PHP,它支撑了我们现有的应用程序,有两个模糊的论据可以支持我们继续这么做下去:我们熟悉 PHP,它开发很快题。为什么要放弃对我们有用的东西?市面上有很多 PHP 开发人员。 选择 PHP 让我们更容易扩充团队。这听起来非常合理,但是当我们清楚 PHP 真的不是我们的正确选择时,我们很快就放弃了这些想法。我们正在迁移到微服务架构,因为我们希望我们的高流量架构基础设施(200 万日活...阅读全文

博文 2017-05-17 01:56:24 Jesse 译

golang test说明解读

go test是go语言自带的测试工具,其中包含的是两类,单元测试和性能测试 通过go help test可以看到go test的使用说明: 格式形如: go test [-c] [-i] [build flags] [packages] [flags for test binary] 参数解读: -c : 编译go test成为可执行的二进制文件,但是不运行测试。 -i : 安装测试包依赖的package,但是不运行测试。 关于build flags,调用go help build,这些是编译运行过程中需要使用到的参数,一般设置为空 关于packages,调用go help packages,这些是关于包的管理,一般设置为空 关于flags for test binary,调用go hel...阅读全文

博文 2014-10-04 19:26:09 yjf512

使用golang搭建新博客系统

原文链接:[https://ashan.org/archives/931](https://ashan.org/archives/931) 前一段时间想对博客系统进行一次大面积更新,因为原有Nodejs后台很多地方做的不好,无论从设计上还是编码结构上都没有达到我想要的效果。所以国庆节前就开始着手对新系统进行设计,经过几天的重构修改,前台部分第一版已经完成,后续还会继续优化。 ### 预计目标 我对我自己博客系统的构想一直没有过变化,而且就这个设想我还专门撰写过一篇名为[《我想要一个怎样的Blog系统》](http://www.ashan.org/archives/893)。我对这次系统更新做了如下几个优化点。 - 打开速度要更快 - 依然不需要花哨功能 - 路...阅读全文

使用 Gogs 搭建自己的 Git 服务器

参考文档:http://wenku.baidu.com/link?url=R-Puaq3FWB_2KnTqSYhzoq9-cYCcBtg_Dqm1Gr_os35PYQz-f64ncvHLraTGQ6h8-vN7TiNj0Kp5nOU6aOPGEuFwsxmR2k3sgXnc9rvTUia 搭建服务:https://mynook.info/blog/post/host-your-own-git-server-using-gogs gogs: https://github.com/gogits/gogs 安装过程分为这些步骤: 新建用户; 下载源码编译 / 下载预编译二进制打包; 运行安装; 配置调整; 配置 nginx 反向代理; 保持服务运行; 注意,这里默认你已经安装好了 MySQL 服务...阅读全文

博文 2016-09-07 16:00:01 zhuiluoyu

以Kubeadm方式安装的Kubernetes集群的探索

当前手上有两个Kubernetes cluster,一个是采用kube-up.sh安装的k8s 1.3.7版本,另外一个则是采用kubeadm安装的k8s 1.5.1版本。由于1.3.7版本安装在前,并且目前它也是承载了我们PaaS平台的环境,因此对于这个版本的Kubernetes安装环境、配置操作、日志查看、集群操作等相对较为熟悉。而Kubeadm安装的1.5.1版本K8s集群在组件部署、配置、日志等诸多方面与1.3.7版本有了较大差异。刚上手的时候,你会发现你原来所熟知的1.3.7的东西都不在原先的位置上了。估计很多和我一样,采用kubeadm将集群升级到1.5.1版本的朋友们都会遇到这类问题,于是这里打算对Kubeadm方式安装的Kubernetes集群进行一些小小的探索,把一些变动较...阅读全文

博文 2017-02-06 03:23:18 bigwhite

云导播台的设计和实现--基于golang的livego rtmp服务器

一、什么是云导播台 提供对多直播流rtmp或http-flv在直播过程中,实时进行流切换。举例,有多个直播rtmp源的时候,对源动态、实时进行选择,将其中一路直播出来,显示给观众。 二、什么是livego livego是基于golang开发的rtmp服务器。这里一个简单的云导播台就在livego的框架上进行开发。 三、实现的云导播台功能列表 rtmp流服务器主动拉取多路直播流; 拉取多路直播流指: rtmp流,http-flv流; 通过http选举,对拉取到的多份流进行动态选择,选择到的流再推送到上游; 四、云导播基本框...阅读全文

博文 2017-09-23 14:33:38 CSDN博客

go test 命令介绍

go test go test是go语言自带的测试工具,其中包含的是两类,单元测试和性能测试 通过go help test可以看到go test的使用说明: 格式形如: go test [-c] [-i] [build flags] [packages] [flags for test binary] 参数解读: -c : 编译go test成为可执行的二进制文件,但是不运行测试。 -i : 安装测试包依赖的package,但是不运行测试。 关于build flags,调用go help build,这些是编译运行过程中需要使用到的参数,一般设置为空 关于packages,调用go help packages,这些是关于包的管理,一般设置为空 关于flags for test binary,...阅读全文

博文 2015-04-08 13:00:05 csapr1987