百万在线的美拍直播弹幕系统如何实现
直播弹幕指直播间的用户,礼物,评论,点赞等消息,是直播间交互的重要手段。美拍直播弹幕系统从 2015 年 11 月到现在,经过了三个阶段的演进,目前能支撑百万用户同时在线,这期间的发展比较好地诠释了根据项目阶段进行平衡演进的过程。这三个阶段分别是快速上线,高可用保障体系建设,长连接演进。本文是作者对构建弹幕系统的经验总结。
在公众号中回复(非评论)关键词“ 弹幕系统 ”即可阅读原帖
gops - Go语言程序查看和诊断工具
想必 Java 的开发者没有不知道或者没用过 jps 这个命令的,这个命令是用来在主机上查看有哪些 Java 程序在运行的。
作者刚用 Go 语言程序的时候也很苦恼:部署在公司服务器上的 Go 程序,其他的同事由于不清楚就经常找不到。
那么 Go 语言有没有像 jps 这样的工具呢?当然有,不仅有,而且还是 Google 自己出品的,官方认证(这种问题 Google 不可能自己想不到啊)。名称也跟 jps 很像,叫 gops。
在公众号中回复(非评论)关键词“ gops ”即可阅读全文
结合 Go 读 APUE-基本文件I/O
每个语言基本都有对应的函数或方法,直接调用就行,在这种情况下可以理解成 -> 语言就是个工具。作者比较偏向 Go 的风格,所以本文中选择以 Go 的函数库为例,但在介绍其之前,要明白一个概念:文件描述符——
- 对于内核而言, 所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数。
如果对上面的描述还是有点模糊呢?——
-
当打开一个现有文件或创建一个新的文件时,内核向进程返回一个 文件描述符。
-
当读、写一个文件时,使用 open 或 create 返回的 文件描述符 标识该文件,将 文件描述符 作为参数传递给 read 或 write。
- 通常用变量 fd 来表示文件描述符 (file descripter)
在公众号中回复(非评论)关键词“ APUE ”即可阅读全文
Channel 的行為(译)
当作者第一次开始使用 Go 的 channel 来工作时,误把 channel 作为一个资料结构,同时又接受了 channel 作为 queue 来使用,提供 goroutine 之間的自動同步存取。這種結構的理解使作者寫了很多不好而且複雜的 concurrent 程式碼。
经过不斷的學習,作者不再关注如何結構化 channel,而是專注在它們的行為。所以現在回到 channel 思考一件事情:信號。经过一個 channel 允許一個 goroutine 對於一個特定的事件去通知另一個 goroutine。信號在你的 channel 中應該是一切核心。將 channel 作為一個信號機制的思考將讓你撰寫更良好的程式碼,並具有明確定義和更精確的行為。
要了解信號的工作原理,必須了解它的三個屬性:
-
交付保證(Guarantee Of Delivery)
-
狀態(State)
- 有無資料(With or Without Data)
這三個屬性共同圍繞在建立一個設計信號的原理。之後我會討論這些屬性,我將提供一些程式碼範例來示範信號與這些屬性的應用。
在公众号中回复(非评论)关键词“ 信号 ”即可阅读全文
理解go的反射机制reflection
不同语言的反射模式是不同的。本文中将讲解反射实现的前提、如何从接口变量中获取value和type信息、如何从Value中获取接口信息,以及如何通过reflect.Value设置实际变量的值和收到reflect.Value变量后如何获取信息。
在公众号中回复(非评论)关键词“ reflection ”即可阅读全文
开源项目
目前功能最丰富性能最好的路由器
在公众号中回复(非评论)关键词“ 路由器 ”即可阅读全文
基于 event-loop 的网络库
在公众号中回复(非评论)关键词“ evio ”即可阅读全文
今日鸡汤
吴恩达:你所下过的那些笨功夫,才是你的核心竞争力
点击“阅读原文”即可查看
有疑问加站长微信联系(非本文作者)