V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  lesismal  ›  全部回复第 42 页 / 共 62 页
回复总数  1239
1 ... 38  39  40  41  42  43  44  45  46  47 ... 62  
2022-02-15 12:28:04 +08:00
回复了 lesismal 创建的主题 程序员 伸手党真是烦
@liaohongxing http1.x 应该是比较完整了,你可以试下。multipart/form-data, application/x-www-form-urlencoded, application/json 之类的,这些不影响 parser 解析规则,解析后的数据是丢给了标准库的 http.Request 里的 header ,标准库支持的应该就自动支持了,如果遇到 bug 可以开个 issue 给我

fasthttp 好像还没支持 trailer ,nbio/nbhttp 也是支持了的

websokcet 通过了全面的测试项 Autobahn Test Suite ,readme 里有链接可以参考下,这得感谢外国友人 acgreek 来提需求和 pr 。而且因为支持并发写,本身也是非阻塞写,所以不需要像 gorilla 那样在遇到广播场景时直接写就行,不需要像 melody 那样在 gorilla 基础上额外封装 chan 的 send 队列(基于标准库的 conn 是阻塞写,广播场景如果某个连接窗口拥塞、写阻塞了,广播循环时其他 conn 就都得等着了,也是线头阻塞的一种)。
BTW ,melody 的接口设计很赞,个人很喜欢。前阵子发现它有个可能宕机的 bug ,去提了 pr:
github.com/olahol/melody/pull/67
但是 melody 作者似乎不维护了,issue 列表里有其他人提问,不知道作者是不是遇到了什么困难放弃了,各位使用 melody 时注意下,可以修复下然后使用自己的 branch 保平安。衷心希望 God Bless Him!

http2.0 太差了,不打算支持了,如果哪天有体力,可能会考虑开另一个库去改造下 quic/3.0 ,因为虽然是 udp ,但目前 go 版本的 quic 实现还都是提供了同步 conn 方案、仍然是一个 session 至少一个 goroutine 的方式,并发量大应该还是 cover 不住 1000k 。去年就有想过,但是也是够复杂,而且去年撸 tls http websocket 那几个月有点伤元气了,需要缓缓。。
2022-02-15 10:12:44 +08:00
回复了 lesismal 创建的主题 程序员 伸手党真是烦
@liaohongxing

与其他标准库为基础的框架结合,是替换了标准库 net.Conn 这些,因为 nbio 是异步的了,不能再像标准库那样子一个连接一个协程了,要用 nbio/nbhtt/websocket ,代码在这里:
github.com/lesismal/nbio-examples/blob/master/http_with_other_frameworks/echo_server/echo_server.go

gin 的也在这个仓库里,其他标准库为基础的,也能类似方式
2022-02-14 22:09:21 +08:00
回复了 lesismal 创建的主题 程序员 伸手党真是烦
@cdxjcl123 其实脾气一点都不好,只是线上也拿他没办法,要是线下我就直接对他狮吼功了。。


@janxin "race issues"应该是指 golang race condition, 一些变量未加锁并发访问时,开启这个选项会有 race 相关的 warning ,就是并发访问竞争、一致性这种问题。std 方案那种无状态的服务通常很少涉及这种。一些场景能够满足并发访问安全,则也是没必要加锁的,nbio 里的应该都是 ok 的。race 只是帮助检查代码可能存在的问题,确认没有问题就好了


@iyaozhen 干净的代码,demo 比文档看着更直观。项目历史包袱确实烦躁,即使你给他 java 他也可能有另一种吐槽 囧


@zooeymango 你这种就是社区之光了,哈哈哈,都这样子的话,估计 linus 也就不会火爆脾气了


@lookStupiToForce 对对对,巨婴!太可怕了。老外确实是大神多,但是更多人也是不钻研很深,都是专注自己业务领域、经验多了升职加薪就行,因为人家没有 35 淘汰、可以干到退休,人家的社保也时真能保障未来,所以都是命吧。。。


@fenglangjuxu 感谢兄弟支持!


@chengkai1853 过奖了,我是 issue 少所以这么耐心,中文的 issue 还好,英文的我这回复一条也花好一阵功夫,要是真多了,估计也扛不住。。。


@XiLingHost 项目情况不一样,issue 数量不多,也还好,要是哪天有机会多起来了,模板 lable 各种也都搞起来,看不过来就也不能那么认真回复了。。
2022-02-14 13:14:38 +08:00
回复了 lesismal 创建的主题 程序员 伸手党真是烦
@twing37
#71 文档确实难写,异步库并发、时序相关的细节太多了,但是提供给应用层的接口仍然是同步方案,异步不容易描述清楚、写多了反倒会让写同步逻辑的同学迷惑,所以是写了很多 examples 为主,囧
#72 对,最开始发关于 nbio 的帖子的时候,记得有个 'byte0' 大神给我一顿教学,哈哈哈,我一顿回复后都没鸟我。后来在其他帖子里见到他有点黑 go ,at 他他也不鸟我,估计把我 block 了吧 囧
2022-02-13 19:03:39 +08:00
回复了 lesismal 创建的主题 程序员 伸手党真是烦
@YaakovZiv 还遇到过更奇葩的,去某个中小公司面试,面试官比较稚嫩,问一堆他们项目里遇到的实际问题,我就把解决方案都给面试官教会了,然后面试结束给个很低的薪资问我来不来,只能一笑而过,且当手有余香吧
2022-02-13 17:19:50 +08:00
回复了 lesismal 创建的主题 程序员 伸手党真是烦
@proxytoworld
分两个大阶段

第一阶段是只支持 poller ,实际上不复杂,具体花费的时间不记得了,核心部分主要是 io 、其实只要几天,剩下的就是换不同的姿势折腾和测试,比如 timer 是用时间轮还是最小堆,内存简单优化、接口易用性扩展性之类的偶尔完善下,实际花费的时间不算太多

第二阶段是对 tls/http1.x/websocket 的异步支持,也支持 client-side ,支持同一个 engine 里跑 client/server/tls/non-tls 。这个去年也消耗了几轮,实现 http1.x/websocket 的异步流解析器,tls 太复杂、图省事直接魔改标准库实现了异步解析器支持。另外花费的最大头时间是内存池优化,把 4-7 层,从 tcp 到 tls 到 http/websocket 各层的内存池打通。因为全是异步(可能 half-packet ),涉及很多 half-packet buffer cache ,打通这几层细节比较多,测试也麻烦,花费的时间比较多。也没有用其他那些基于同步方案的 2^N size 内存池,因为同步方案,每个 conn 一个协程处理读,循环读,buffer size 可控并且容易复用,不涉及复杂的异步 half-packet cache 逻辑,所需的 buffer size 也容易设定,2^N 逻辑也比较容易,而异步方案里,不确定性很多,比如对象、buffer 的跨协程生命周期管理,half-packet 相关的涉及很多 mem move/copy ,用 2^N size 实测反倒比标准库方案内存占用更多、十分拉垮。所以这些细节花费的时间较多,到主体成型,加起来花了估计有三个月以上吧,加上各种 example 之类,应该是有三个月以上了,没细算过
2022-02-13 17:01:16 +08:00
回复了 lesismal 创建的主题 程序员 伸手党真是烦
@tywtyw2002
@ericwoflskin

恩恩,以后遇到不合理的问题就不回了,既浪费感情又浪费自己时间。

以前看到一些关注度高的项目作者不回复或者很久回复,因为作者们确实事情多、issue 也多,忙不过来。

但是自己项目关注度不高,闲余时间就尽量回复了,而且多回复一些,以后有其他人遇到类似问题直接搜出来就不用重复回复了。只是没想到这次遇到的这位会这样子 :joy:


@paulw54jrn 感谢支持!
2022-02-13 15:55:43 +08:00
回复了 lesismal 创建的主题 程序员 伸手党真是烦
@mirone 没事,平常心,"不愠不郁"是下一个修炼目标:joy:
2022-02-13 15:32:57 +08:00
回复了 lesismal 创建的主题 程序员 伸手党真是烦
@abbottcn
“然后被拉黑了”这操作有点太过了,防着别人图他啥似的

@ohmyself 以后再遇到这种,我就尽量不回
2022-02-13 15:29:15 +08:00
回复了 lesismal 创建的主题 程序员 伸手党真是烦
@Herong 感觉他送你游戏是为了结个善缘,说不定以后你能帮他推广更多人,结果啪啪被拒:joy:
2022-02-13 15:06:52 +08:00
回复了 lesismal 创建的主题 程序员 伸手党真是烦
@skiy 对,所以我也只是“估计”,老外不是也遇到过逗逼,这玩意跟地域、种族发达程度受教育程度有关系,可能比例有高有低,但是对于个体事件、没有直接关系,看运气,碰到了是自己倒霉:joy:
2022-02-13 15:04:44 +08:00
回复了 lesismal 创建的主题 程序员 伸手党真是烦
@wzxlovesy 他这样做之前,不知道他是这种。他这样子之后,他自己都说了不再来了,哈哈哈,所以算了,万一哪天他成长了呢
2022-02-13 15:03:40 +08:00
回复了 lesismal 创建的主题 程序员 伸手党真是烦
@mdgwmt0 看运气吧,正常人还是多数
2022-02-13 15:02:27 +08:00
回复了 lesismal 创建的主题 程序员 伸手党真是烦
@0o0O0o0O0o
eranyanay/1m-go-websockets 这个库,去年有人在我 arpc 的仓库里提到过,建议我参考它一下,所以我去简单扫了几眼他的源码,目测是有问题的并且写了个 demo 很容易就复现了,在这里和后面的部分: https://github.com/lesismal/arpc/issues/2#issuecomment-746694287

他们只依赖 easygo 实现了事件触发读,却没有实现异步流解析、半包处理、并且对于单个 conn 仍然是阻塞读完整包,所以当一个 conn 收到 half-packet 的时候,这个 conn 的 Read 就阻塞了,而这个 conn 阻塞,它所在的 goroutine (可能是 poller 协程或者数量有限的协程池)就阻塞了,进而让其他 conn 等待。我之前在这个仓库里提了这个 issue 但是才发现作者竟然把 issue 给禁了?所以看不到了。我也到他们最终使用的 gobwas/ws 里提了 issue 和复现代码,并且有其他人也给他提过 issue 因为遇到过我说的问题,gobwas/ws 的作者更逗,不想解决问题,反而直接 close issue 囧。

eranyanay/1m-go-websockets 、gobwas/ws 这些,都不应该被部署到生产环境,否则慢连接攻击下,甚至不需要攻击,公网有时候就是不够稳定的,他们服务就延迟感人了。所以其实这些库也解决不了那孩子的问题,其他一些异步网络库 evio gev gnet 都还没有支持 tls 、http ,只有 gev 支持了简单的 websocket 但也不支持 tls http 。

go 框架里能搞定 1000k 的,暂时全网就我这一份了。。。:joy:
2022-02-13 14:01:42 +08:00
回复了 lesismal 创建的主题 程序员 伸手党真是烦
奇怪,at 多几位就提示需要注册满 1000 天,以前好像不这样子
2022-02-13 13:59:17 +08:00
回复了 lesismal 创建的主题 程序员 伸手党真是烦
@PerFectTime
我也是被这句噎笑了,就差我跪着把代码提交到它项目了 囧
2022-02-13 13:58:54 +08:00
回复了 lesismal 创建的主题 程序员 伸手党真是烦
一开始提问也还好,但是怕遇到这种豪不思考并且还得寸进尺的,我中间已经比较委婉说了让他自己搜一些基础知识否则我英语回答不到位,结果人家直接给我"no worry..."告诉我不用为自己英语担心、让我放心回答,然后继续弱智问题,所以我才会直说让他自己认真读代码和思考一下,然后人家就干翻我了 :joy:
1 ... 38  39  40  41  42  43  44  45  46  47 ... 62  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4943 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 24ms · UTC 05:47 · PVG 13:47 · LAX 21:47 · JFK 00:47
Developed with CodeLauncher
♥ Do have faith in what you're doing.