$V2EX
Solana
Give SOL to Copy Address
使用 SOL 向 lesismal 打赏,数额会 100% 进入 lesismal 的钱包。
lesismal

lesismal

V2EX 第 497905 号会员,加入于 2020-07-06 13:49:58 +08:00
B 站又崩了-又到了复习高可用架构实践的时候
程序员  •  lesismal  •  168 天前  •  最后回复来自 qing18
3
lesismal 最近回复了
> 好多实现底层都直接用 epoll 了,上层协议解析还在死循环读 buffer

@penpenpen 好多都是被 gobwas/ws 带偏了吧 😂

nbio 只是不继续搞新的功能和优化, 不花那么多心思维护了, 还可以用.
但是连接数不是海量的, 基于标准库的方案确实更好, 所以就没什么必要用异步的方案了.
13 天前
回复了 chevalier 创建的主题 职场话题 35+劳动合同续签了
> 如果是合同期内的裁员,公司一般会给个 N+1 的方案,但是没有主动权,主动权在劳动者。一般没啥想法的劳动者就签了拿钱走人。但是如果劳动者不接受拒不签字,那只能走强制解除,强制解除按照劳动法的规定是要支付 2N 。

符合流程的合法的裁员是 N+1 ,强制解除也不需要 2N ,只有违法解除并且劳动者举证仲裁打官司之类的赢了才能 2N 。


> 身边最极端的一个案例是,劳动官司在法院排队了一年,最后法院支持[继续履行劳动合同],劳动者从裁员纠纷开始一直到判决,公司都要照常支付正常工资/年终奖/股票,公司损失惨重。这以上一切还不算公司因为劳动纠纷产生的舆情损失。

这个是公司的 HR 部门和裁员流程不专业导致的吧
20 天前
回复了 Jesens 创建的主题 云计算 慎用京东云,被 DDOS=清退
用谷歌的 VM 没被 D 过,国内厂的只部署个简单 echo 测试工具都会被 D 然后推销高防.

所以就很有意思,到底谁在 D 这种没有实际业务的节点.
34 天前
回复了 tangledDream 创建的主题 职场话题 面试表现太好也会导致不被录取吗?
我大学室友,大四面试的企业中,有两家知名企业有类似行政能力测试那种、包括智力题之类的,因为他笔试成绩一骑绝尘、比那两家公司当期和所有历史招聘的笔试成绩最高分还高了 20 多分,大概就是能进门萨俱乐部的水平,然后两家企业都让他止步一轮游了,说即使给 offer 即使入职了公司待遇没那么好、也是留不住。他当时很纳闷为啥一轮就凉了,因为他是整个院里智商最高的选手了,后来那两个公司给其他进入第二轮的其他哥们讲了原因、回来告诉大家才知道。
@Nanosk
go 协程池的几种主要实现方式:
1. 早期最简单的 chan 方式,多数实现会支持常驻协程,性能一般,但是简单易用。
2. gent 作者的 ants ,用 cond_t 实现,好像也是支持常驻协程。实现复杂,号称性能吊打其他协程池,但我和一些朋友实测并没有发现性能优势,而且实现的过于复杂,可能只是跟其他那些用 chan 的实现方式对比有优势。
3. 字节家的 gopool ,链表作为任务队列,如果当前执行任务的协程数量小于协程池 size ,则直接创建新的协程去执行任务,否则就等待当前正在执行任务的协程 for 循环挨个取任务执行。这种相较于 1 、2 性能是最好的,实现也简单。但有个缺点,生产持续大于消费速度时,队列一直增长,没有对上游自动反馈和限流的机制。
4. nbio/taskpool 的实现方式,与 3 中的字节家 gopool 类似、区别在于用 chan 做队列。


1 、2 两种都是支持常驻协程。但是,大概 golang 1.18 以后,runtime 自己有 goroutine 复用之类的,所以 go func()开销很小,比 1 、2 用 chan 、cond_t 那些实现方式性能更好,而且省掉了常驻协程。常见的 rpc 框架中、每个 Call 的处理默认都是 go func(),压测每秒几十万次 go func()都没什么压力,因为任务快速、同时并发存在的协程数量不多。协程池本身就限制了协程池 size ,所以每次 go func()就可以了,根本没必要使用常驻协程等待任务到来、新任务用 chan 传递反倒浪费性能甚至大于 go func()的开销。


3 、4 两种,多数时候设置的协程池 size 是 1w 以上,多数的业务,整个系统请求下有资源可能阻塞才会让协程池的协程短暂驻留,但通常 1w 这种级别也足够用了,否则下有资源也扛不住太高的并发量级,而且下有通常也是自带池限制的、比如 http.Client 和 sql.DB 的连接池。
而且多数情况是协程池 size 跑不满的,所以 3 、4 两种通常都是简单的原子判断协程池 size 、然后 go func()去执行、性能最好也最简单。


所以 1 、2 的那些库我是不推荐的。


我自己在 nbio 中使用自己的这种实现,因为 nbio 的主要设计目标就是资源控制、避免严重的 STW 和 OOM ,所以这种上下游之间的自动反馈和限流很有用。
如果你的业务上游自己有对协程池的限流,则直接使用字节家的就好,否则建议用 nbio 的这种。


字节家的:
https://github.com/bytedance/gopkg/tree/main/util/gopool

nbio 的(实现的很简单,百十来行有效代码,如果需要定制之类的、自己拷贝过去随便修改即可,feel free ):
https://github.com/lesismal/nbio/blob/master/taskpool/taskpool.go
39 天前
回复了 shfan 创建的主题 程序员 xshell plus 永久授权过保了,无法激活怎么办
免费版够用+1
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   4933 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 25ms · UTC 09:26 · PVG 17:26 · LAX 01:26 · JFK 04:26
♥ Do have faith in what you're doing.