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大会全面启动

Gopher China  2019大会正式开启企业团购通道

详情请加微信号:13458572960(玉璧)

戳下方“阅读原文”即可报名本次 Gopher China 大会!

一周 Go World 新鲜事-2019W11相关推荐

  1. 一周 Go World 新鲜事-2018W54

    01 Golang之美 初始golang,语言之美之简洁之高效,天生具有高并发等特性. 本文来自蔡欣圻.邵聪聪,对go语言的分析很到位全面,在这里分享出来给go开发者,希望能让你有一个更深刻的认知. ...

  2. 一周 Go World 新鲜事

    01 技术分享之<Golang高级讲义> 我曾经做过外面做过两次python语言的分享,一次是python gil解密,另一次是 python 内存管理. 我个人很喜欢研究探索语言本身的一 ...

  3. 一周 Go World 新鲜事-2018W45

    01 并发map --- sync map分析 本文基于1.10源码分析,如之前的文章可以看到,golang中的map是不支持并发操作的,golang推荐用户直接用读写锁对map进行保护,也有第三方类 ...

  4. 一周 Go World 新鲜事-2018W44

    01 Golang通道的无阻塞读写 无论是无缓冲通道,还是有缓冲通道,都存在阻塞的情况,但其实有些情况,我们并不想读数据或者写数据阻塞在那里,有1个唯一的解决办法,那就是使用select结构.这篇文章 ...

  5. 一周 Go World 新鲜事-祝大家开工大吉!

    01 使用Golang的Elasticsearch查询示例 Elastic中的查询与标准(不)SQL中的查询有很大不同.即使最终结果几乎相同(从表A得到全部,按B列排序,C desc在列D如'E'), ...

  6. 一周 Go World 新鲜事-2018W43

    01 Go Web框架特性比较 Go是一种快速增长的开源编程语言,旨在构建简单,快速,可靠的软件. 看看哪些伟大的公司使用Go来为他们的服务提供支持. 本文提供了所有必要的信息,以帮助开发人员了解有关 ...

  7. 一周 Go World 新鲜事-2018W50

    01 万字长文揭秘:阿里如何实现海量数据实时分析? 随着数据量的快速增长,越来越多的企业迎来业务数据化时代,数据成为了最重要的生产资料和业务升级依据.本文由阿里AnalyticDB团队出品,近万字长文 ...

  8. 一周 Go World 新鲜事-2018W42

    01 Go语言性能优化- For Range 性能研究 如果我们要遍历某个数组,Map集合,Slice切片等,Go语言(Golang)为我们提供了比较好用的For Range方式.range是一个关键 ...

  9. 分享Silverlight新鲜事(11月15日-21日) - PDC 10 Downloader

    分享一些最近一周Silverlight的新鲜事.^_^ 1. PDC 10资源下载客户端Silverlight版 该客户端汇集了PDC10上所有的Presentation资源,包括PPT,视频,代码等 ...

最新文章

  1. CTFshow 命令执行 web74
  2. 软件工程概论 课堂练习【空调维修系统 类图】
  3. VC控件 Edit Control
  4. 集成电路883和883b有什么区别
  5. Apache—DBUtils框架开发学习实例
  6. 处理32人!永久取消申报基金/报奖资格……又一批科研不端案例被通报批评
  7. java 文件存在 却找不到文件_当文件确实存在时,ProcessBuilder给出“找不到文件”异常...
  8. Mac上好用且免费的远程桌面SSH工具(FinalShell)
  9. gcc 源码下载地址
  10. 家庭必备,轻、快、好用的WIN10自带虚拟机
  11. 2021 苟且活着,2022 向上生长
  12. java modifier access_Java中的默认访问修饰符是什么? (What is the default access modifier in Java?)...
  13. 真正卓越的领导者,都有这6大共性
  14. win10+睡眠+计算机命令,Win10关闭系统休眠——使用powercfg –h off命令轻松节省硬盘容量...
  15. android手机密码怎样删掉,手机密码忘了怎么解锁 删除密码解锁教程
  16. 程序媛的芳华,女神节快乐!
  17. 初学python 没有动手没有发言权
  18. html 拖放插件,DAD – jQuery拖拽/拖放插件
  19. Vscode下载很慢解决
  20. 铁电存储器这样应对充电桩存储痛点

热门文章

  1. 【博客625】keepalived开启garp refresh的重要性
  2. Linux删除带‘\\’的文件夹
  3. 在ANSYS WORKBENCH中使用APDL命令的例子
  4. Python 文件处理 open()函数
  5. 情人节程序员用HTML网页表白【情人相册模板】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  6. dream_ready
  7. 微服务集成SkyWalking
  8. 知识图谱介绍-我的学习笔记
  9. 巴法络nas硬盘挂linux,教你轻松DIY——巴法络家用NAS使用详解
  10. Java线程同步容易犯错的坑