01
百万 Go TCP 连接的思考3: 正常连接下的吞吐率和延迟
这G一篇文章介绍了I/O密集型服务器和计算密集型的服务器的两种场景,对多epoller服务器和goroutine-per-connection服务器两种服务器进行测试,连接数分别是5000、2000、1000、500、200和100。
前两篇的是有巨量连接的情况下服务器的性能,这类服务器可能应用于消息推送、IOT、页游等场景,追求的是大量连接,并发量相对不大的场景。还有一类场景是服务器的连接数不多,几十几百,最多几千的TCP连接,比如公司内的服务之间的调用等,这类服务器在不同的实现下的性能是怎样的?
原文链接:
https://colobu.com/2019/02/28/1m-go-tcp-connection-3/
原文二维码:
02
从技术演变的角度看互联网后台架构
这是去年在部门内部做的一个面向后台开发新同学的课程,因为其他BG一些同学要求分享,所以发一下。
其实内容都是些常见开源组件的high level描述,比如flask, express框架,中间件的演化,micro service的概念,一些对nosql/column based db的概念介绍,docker的一些简单概念等等。从单个概念来说,这只是一些科普。
但是为什么当时要开这门课呢?重点是我发现很多新入职的后台开发同学并不太清楚自己做的东西在现代互联网整体架构中处于一个什么样的角色,而在IEG内部则因为游戏开发和互联网开发的一些历史性差异,有些概念并不清晰。
拿中间件来说,很多web application不用啥中间件一样可以跑很好,那么是不是都要上redis?到底解决什么问题?中间件又存在什么问题?中台和中间件又是个什么关系?如果开个mq就是中间件,微服务又是要做啥?
原文链接:
https://mp.weixin.qq.com/s/ybQd4zXyfQlUdbvbQl0h9A
原文二维码:
03
从nginx热更新聊一聊Golang中的服务器热更新(上)
静态语言在服务器编程时都会遇到这样的问题:如何保证已有的连接服务不中断同时又升级版本?
服务程序热更新这个问题在层7网关中尤其严重,网关中承载着大量的请求,包括HTTP/HTTPS短连接、HTTP/HTTPS长连接、甚至是websocket这种超长连接(websocket通常连接时间会很长,十几分钟到几天不等)。这样的话我们势必不能讲服务程序停止再启动的冷更新,服务进程热更新是非常有必要的。
网关作为一个基础组件,需要保证高可用,是很难将其先停下来再更新的;
有人说可以使用负载均衡将需要更新的组件先隔离,再停机更新,但是如果是一个很小的集群没有负载均衡呢,又或者这样手动一台一台升级也着实麻烦,部分情况下就算隔离了也不过是不会有新的连接过来,旧的连接/请求依旧需要处理完成,否则就会造成部分服务不可用。
原文链接:
https://zhuanlan.zhihu.com/p/59193526
原文二维码:
04
Go 语言 for 和 range 的实现
循环是几乎所有编程语言都具有的控制结构,也是编程语言中常用的控制结构,Go 语言除了使用经典的『三段式』循环之外,还引入了另一个关键字 range 帮助我们快速遍历数组、哈希表以及 Channel 等元素。
在这一节中,我们将介绍 Go 语言中的两种不同循环,也就是经典的 for 循环和 for…range 循环,我们会分析这两种循环在运行时的结构以及它们的实现原理。
for 循环能够将代码中的数据和逻辑分离,让同一份代码能够多次复用处理同样的逻辑,我们先来看一下 Go 语言两种不同的 for 循环在汇编代码这一层是如何实现的?
原文链接:
https://draveness.me/golang-for-range
原文二维码:
05
在Golang的HTTP请求中共享数据
首先,我们需要先明确一下问题的描述:本文所要讨论的共享数据可不是指的 cookie、session 之类的概念,它们描述的是在「请求间」共享数据,而我们关注的是在「请求中」共享数据,也就说是,在每个请求中的各个 middleware 和 handler 之间共享数据。
实际上,我之所以关注这个问题是因为 httprouter,众所周知,httprouter 是目前 Golang 社区最流行的 HTTP 路由库,不过它有一个问题,其 handler 参数定义如下:
func (http.ResponseWriter, *http.Request, httprouter.Params)
而 Golang 官方的 http.Handler 参数定义是:
func (http.ResponseWriter, *http.Request)
原文链接:
https://huoding.com/2019/02/08/718
原文二维码:
职位推荐:
【北京、武汉】云沃客招聘高级 Golang 开发工程师
【上海】晓信科技招聘Go工程师
【北京】晓链科技招聘golang 开发工程师
招聘详情地址:https://gocn.vip/explore/category-8
Gopher China 2019 最新资讯:
志愿者招募:
因 Gopher China 2019 大会报名人数超出预期,现还需招募大会现场服务执行志愿者3名,本次招募只限北京地区。
地区:仅限北京地区 人数:3人
工作时段:
4月26日下午+4月27日上午+4月28日下午,需要1名,(不会错过27号下午和28号上午的演讲)。
4月27日全天+4月28日上午,需要2名,(在没有工作安排的情况下听27号和28号上午演讲,不会错过28号下午的演讲)。
如果你是北京地区在校学生,也是Go语言爱好者,可通过申请志愿服务免费获得 Gopher China 2019 大会参会资格。
识别下方二维码即可报名志愿者:
志愿者福利:
a. 免费参会资格,2天干货不得不 get 的新技能!
b. Gopher China 2019 限量版T恤一件,买不到的T恤你攒了几件?
c. 与国内外Go语言界的技术大牛近距离接触,或高冷或萌心的技术大牛一网打尽〜
d. 有机会获得各厂商的展台礼品,展台上的市场小姐姐都是人美嘴甜心地好〜
大会更多动态:
Gopher China 2019 讲师专访-滴滴出行/R lab 高级专家工程师杜欢
Gopher China 2019 讲师专访-腾讯/TARS开源团队核心成员陈明杰
Gopher China 2019 讲师专访-Grab/地图团队资深架构师胡泊
Gopher China 2019大会正式开启企业团购通道
详情请加微信号:13458572960(玉璧)
戳下方“阅读原文”即可报名本次 Gopher China 大会!