V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  guonaihong  ›  全部回复第 2 页 / 共 23 页
回复总数  458
1  2  3  4  5  6  7  8  9  10 ... 23  
100 天前
回复了 chai2010 创建的主题 程序员 《国产编程语言蓝皮书-2023》开启申报
厉害。
也许 linux 之父的影响力比 sqlite 之父高呗。
105 天前
回复了 fulvaz 创建的主题 职场话题 最近前端工作感悟一二
楼主描述的解决问题的方法,我一般称为“控制变量法”,a&b&c 都可能导致一个问题的产出,每次改变一个点,看下结果。这是初中学习电路,get 的一个方法论。
@helloword001 不能无缝转,要自己写代码。无论是 http chunked 模拟(也叫 sse),还是 websocket 或者 grpc 都要写点代码。
@helloword001 你想用 http chunked 模拟?具体代码网上找找例子,这个也看客户端的开发能力,搞得定也行,缺点只能模拟单向流,s->c 侧的。websocket 和 grpc stream 是全双工的,c->s ,s->c 都行。
websocket 库可以玩下我写的,https://github.com/antlabs/quickws ,有使用上的问题帮你看看。
你启个 websocket 或者 grpc stream 服务端。客户端不停读就行。
214 天前
回复了 chengiri 创建的主题 Go 编程语言 请教一个关于 go websocket 的问题
服务端在 read/write 的地方加超时时间和心跳。心跳就由客户端向服务端发,毕竟客户端要做链接保活的。
分两种情况讨论:
1. 主动推送场景(s->c):
比如红点,点赞,收藏,关注的通知。服务端在 WriteMessage 的时候加个稍短的超时时间。超时了就关闭这个 conn ,主动踢掉坏的 conn 。
2. 客户端主动要推消息到客户端这种(c->s):
客户端确认连接的健康度,做法的话
2.1 在 WriteMessage 的时候加些超时时间
2.2 加些心跳检查,定时 ping/pong ,超时间根据业务的敏感度,和服务端压力定个值,最后失败的话再用指数退避定个失败的重试时间。

所以做法就是开头聊的方式。
220 天前
回复了 Dongxiem 创建的主题 Go 编程语言 go 开源项目求推荐
@iwwftlan 带有目的性看就行。比如要做一个好玩的东西,少了相关的知识点,然后看下对应的书。
我现在获取知识点的过程是 1. 做一个好玩的东西-》 2. 缺少相关知识-》 3. 边查边做。 这样注意力不容易散,可以坚持下去。如果喜欢有分享欲望,还可以加 4. 总结。

以前也适过没有目的性看书。看过 unix 环境高级编程, apue ,大而全的书,容易放弃。

可以根据自己的爱好选择适合的流程,我是特别喜欢写代码,才这么获取知识点的。喜欢就意味着不容易放弃。
229 天前
回复了 dyllen 创建的主题 Go 编程语言 goframe 框架好吗?我感觉怪怪的。。。
gf 和 go-zero 我选后者。

上面的选择主要基于清晰度,gf 眼花缭乱的基础类型,看别人用 gf 写的代码清晰度绕来绕去不知所云。

还有一个是担心 gf 代码质量,记得看同事的代码用了.gVar , 就扫了一眼 gf 里面的 gVar 的 New 的实现。发现一个 bool 变量的语义写反了,这是一个 bug(后面和同事说了下,应该提 pr 修复了)。

最后如果 gf 作者能看到我的回答,有些建议:
1. 基础类型没必须 type 一个新类型,只会分裂认识。
2. json/xml 等等基础能力没有必须再包装下,同一。
3. 观注能提升生产力的地方,静态 MVC ,统一数据结构,然后根据这些数据结构生成一些 logic 代码。
235 天前
回复了 csznet2023 创建的主题 程序员 如何推广自己的开源项目
楼上的真有趣。接个龙,比如这样。高性能低内存占用 websocket 库 https://github.com/antlabs/quickws
239 天前
回复了 guonaihong 创建的主题 Go 编程语言 高性能 websocket 库 quickws 发布
@eudore 挺好的建议,可以直接 pr 。哈哈。
240 天前
回复了 guonaihong 创建的主题 Go 编程语言 高性能 websocket 库 quickws 发布
@eudore 好了,你试下 v0.1.4 版本
240 天前
回复了 guonaihong 创建的主题 Go 编程语言 高性能 websocket 库 quickws 发布
@eudore 感谢提的问题,我修复下。
241 天前
回复了 guonaihong 创建的主题 Go 编程语言 高性能 websocket 库 quickws 发布
@DDDZZZFFF 是想了解业务 websocket 网关还是基础网关?前者是业务聚合数据用的,后者如 nginx 之类的.
现在一堆 ai 辅助编程的插件 感觉收益不是那么明显。copilot 一个回车解决的事情。
你们 im 的 id 不是单调递增的吗?如果的是话 server_max - client_max 如果等于 0 ,说明没有消息更新就不需要拉。
243 天前
回复了 guonaihong 创建的主题 Go 编程语言 高性能 websocket 库 quickws 发布
@Glauben 你说的场景要优化的不是语言,而应该先优化网络, 一次 ping 的 icmp 包是 7ms(随便 ping 个 baidu 或者 qq 的网址),一次 go 的 stw 最长在 <=1ms 。真的有这种担心 stw 的应用,应该先优化下网络 用专线,再考虑服务端的语言 gc 的问题,一个是 1/8 ,另一个是 7/8 的影响。

普通互联网应用不需要操这个心。上面我已经讲过存活时间越长的 websocket 连接,upgrade 的时间开销越接近于 0.
243 天前
回复了 guonaihong 创建的主题 Go 编程语言 高性能 websocket 库 quickws 发布
@Glauben gobwas/ws 的作者发明的新词,指通过 websocket upgrade 不分配内存。其实没什么用的概念,只会误导用户。你看我前面的数据代入证明就明白了,zero upgrade 和不 zero upgrade 没什么影响,无论是内存整体占用还是 tps 。
243 天前
回复了 guonaihong 创建的主题 Go 编程语言 高性能 websocket 库 quickws 发布
@hafung 你可以下载 https://github.com/guonaihong/bench-ws 自己跑下
make
./script/tps-benchmark.sh

在.bashrc 下面加上
sysctl -w fs.file-max=2000500
sysctl -w fs.nr_open=2000500
sysctl -w net.nf_conntrack_max=2000500
ulimit -n 2000500
sysctl -w net.ipv4.tcp_tw_reuse=1

历史压数数据在
https://github.com/guonaihong/bench-ws/issues/3
1  2  3  4  5  6  7  8  9  10 ... 23  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1016 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 27ms · UTC 22:11 · PVG 06:11 · LAX 15:11 · JFK 18:11
Developed with CodeLauncher
♥ Do have faith in what you're doing.