服务计算-cloudgo
1.概述
开发简单 web 服务程序 cloudgo,了解 web 服务器工作原理。
任务目标
- 熟悉 go 服务器工作原理
- 基于现有 web 库,编写一个简单 web 应用类似 cloudgo
- 使用 curl 工具访问 web 程序
- 对 web 执行压力测试
参考课件
http://blog.csdn.net/pmlpml/article/details/78404838
2.任务要求
基本要求
- 编程 web 服务程序 类似 cloudgo 应用
- 使用 curl 测试
- 使用 ab 测试
3.程序实现
先附上Github
web框架
在这里选用的框架是iris。因为iris是目前发展最快的Go Web框架,它提供完整的MVC功能并面向未来,所以决定学习一番(虽然可能学不会也用不来 )。附上其github和文档
函数实现
main.go
这里几乎仿照课件上的main.go
server.go
NewApp()
在这里仅仅实现了简单的功能,就在网站输入http://localhost:8080/str1/str2
时,会输出str1,str2
4.程序测试
go run main.go
输入命令后,服务可以正常启动,在浏览器页面输入网址http://localhost:8080/hello/world
可以打印hello,world
go run main.go -p 10123
输入命令后,服务可以正常启动,在浏览器页面输入网址http://localhost:10123/hello/world
可以打印hello,world
curl -v http://localhost:10123/hello/world
向服务器发出请求序列,由图中信息可以看出测试成功!
ab -n 1000 -c 100 http://localhost:10123/hello/world
现在进行压力测试。
其中比较重要的参数有-
吞吐率(Requests per second)
服务器并发处理能力的量化描述,单位是reqs/s,指的是在某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。 -
并发连接数(The number of concurrent connections)
并发连接数指的是某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。 -
并发用户数(Concurrency Level)
要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。 -
用户平均请求等待时间(Time per request)
处理完成所有请求数所花费的时间/(总请求数/并发用户数) -
服务器平均请求等待时间(Time per request:across all concurrent requests)
处理完成所有请求数所花费的时间/总请求数
-