golang来处理http请求,有自带的http包,也有各种框架如gin等,但是很少有资料说明这些包和框架在高并发请求下是如何处理的?
比如java的spring会创建一个线程池和队列来帮助处理大量请求,那golang的http或者gin框架是如何做的呢?创建一个goroutine池?还有其他更细节的说明吗?网上资料好像很少。。。
有疑问加站长微信联系(非本文作者)

golang来处理http请求,有自带的http包,也有各种框架如gin等,但是很少有资料说明这些包和框架在高并发请求下是如何处理的?
比如java的spring会创建一个线程池和队列来帮助处理大量请求,那golang的http或者gin框架是如何做的呢?创建一个goroutine池?还有其他更细节的说明吗?网上资料好像很少。。。
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
`单行代码`
这些框架基本上都是把自带的 http 包做了一次封装。 处理请求的时候就直接新建一个 goroutine 去处理, 参考这个地方: https://github.com/golang/go/blob/master/src/net/http/server.go#L2732
谢谢回答。会不会出现这种情况,短时间内并发请求数暴增,比如达到了千万级,但明显不可能起千万个goroutine,这个时候该怎么办?
水平扩展
看来只能堆机器,用负载均衡来解决了
这个优化考虑有两个方向 1: 提升单机的性能 (吃力不讨好) 2: 水平扩展
嗯,谢谢
什么是水平扩展呀!???
就是开一堆一样的进程,运行在不同机器上,这需要先有负载均衡机制才能实现。