Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

请教一个问题:微信支付,我如果只初始化一个全局Client实例,在处理不同请求的时候会不会有并发瓶颈?(比如同时有1000人下单,会不会有阻塞的情况) #70

Closed
zhangbo0724 opened this issue Sep 16, 2020 · 5 comments
Labels
good first issue Good for newcomers

Comments

@zhangbo0724
Copy link

No description provided.

@llgoer
Copy link

llgoer commented Sep 16, 2020

客户端请求的时候是带锁的,一个处理完处理另外一个,同时下单会阻塞

@zhangbo0724
Copy link
Author

真实应用场景的时候肯定会有并发的需求,如果是同步执行的话就弱化了SDK的功能。只所以只实例化一个Client实例,是为了针对需要证书的请求时,避免频繁加载证书,但是单实例又会遇到并发的问题。希望后续可以完善SDK,考虑并发的场景。谢谢!

@llgoer
Copy link

llgoer commented Sep 16, 2020

没必要担心这个问题,一次请求本身就挺快的了,1000人同时支付,你这业务量真大

@iGoogle-ink
Copy link
Member

iGoogle-ink commented Sep 17, 2020

@zhangbo0724
客户端请求的锁是 读写锁,而且只加的读锁,以防在读的时候被改掉,读锁的性能很高的,这点暂时还不用担心
还有一点很重要的,加锁只是在 读一些参数时做的,真正发起请求,锁已经释放了,刚处理优化过这个问题
image

@iGoogle-ink iGoogle-ink added the good first issue Good for newcomers label Sep 21, 2020
@fwhezfwhez
Copy link

为啥要加锁,看不明白。
只有存在竞态的业务,才需要锁。

支付的sdk,很显然,所有业务都不是竞态的。

代码的架构上,还是有一点问题的

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good first issue Good for newcomers
Projects
None yet
Development

No branches or pull requests

4 participants