nbio icon indicating copy to clipboard operation
nbio copied to clipboard

请问,这个库对每个用户的websocket连接是单独开启一个协程吗?

Open ericjing83 opened this issue 1 year ago • 14 comments

您好,

请问,这个库对每个用户的websocket连接是单独开启一个协程吗,还是多个用户连接共享一个协程的?

ericjing83 avatar Nov 23 '23 01:11 ericjing83

不同IOMod处理方式不同,默认是 IOModNonBlocking,是IO协程池(等同于poller协程,写成数量为NPoller)、逻辑协程池处理所有连接,逻辑协程池size可定制(MessageHandlerPoolSize

IOMod可以看下这里: https://github.com/lesismal/nbio#different-iomod

lesismal avatar Nov 23 '23 02:11 lesismal

好的。 请教下,如果用这个库开发一个云服务,有上百万个用户的websocket连接,您建议用哪种IOMod,服务端读消息和推送消息的性能比较高?

ericjing83 avatar Nov 23 '23 05:11 ericjing83

如果持续高在线量的话 IOModNonBlocking 就可以,如果低峰时段在线量不那么大,用 IOModMixed 可以响应延迟略低、更好些

lesismal avatar Nov 23 '23 05:11 lesismal

好的。 这个库,调用linux操作系统的epoll,是通过cgo吗?还是通过纯的go代码实现的?

ericjing83 avatar Nov 23 '23 05:11 ericjing83

没有使用cgo,所有功能都是纯go的。 也相当于没有三方依赖,只依赖标准库。tls依赖的llib是我自己的库,是基于标准库魔改的代码,由于标准库开源协议不是MIT,所以单独拆到llib里了

lesismal avatar Nov 23 '23 06:11 lesismal

非常感谢指导。 再请教下,如果上百万个用户连接,有些用户可能比较频繁操作系统,发送请求,另一些用户可能不是很频繁操作。无论间隔多长时间客户端和服务端相互之间没有发送任何消息,我想让服务端始终保持websocket连接。这个库可以保持连接吗?有没有相关的服务端启动参数之类的?

ericjing83 avatar Nov 23 '23 06:11 ericjing83

你的双方不主动关闭就可以保持连接。 为了避免僵尸连接,通常有心跳机制,正常发心跳就可以了,心跳可以参考这里的建议: https://github.com/lesismal/nbio-examples/issues/12

lesismal avatar Nov 23 '23 06:11 lesismal

This issue is stale because it has been open for 30 days with no activity.

github-actions[bot] avatar Dec 24 '23 02:12 github-actions[bot]

不同IOMod处理方式不同,默认是 IOModNonBlocking,是IO协程池(等同于poller协程,写成数量为NPoller)、逻辑协程池处理所有连接,逻辑协程池size可定制(MessageHandlerPoolSize

IOMod可以看下这里: https://github.com/lesismal/nbio#different-iomod

io协程和连接协程有啥区别

7c0o avatar Jan 05 '24 09:01 7c0o

io协程和连接协程有啥区别

io协程是nbio自己的协程池、数量不大、可以自己配置数量 基于标准库的连接每个连接一个协程、在线数大的时候协程数量大

lesismal avatar Jan 05 '24 10:01 lesismal

io协程和连接协程有啥区别

io协程是nbio自己的协程池、数量不大、可以自己配置数量 基于标准库的连接每个连接一个协程、在线数大的时候协程数量大

能直接在连接协程里面,进行数据库操作等比较耗时的操作吗?现在测试过程发现,在连接协程做耗时的操作 影响用户连接。

7c0o avatar Jan 08 '24 05:01 7c0o

提供下示例代码

lesismal avatar Jan 08 '24 13:01 lesismal

你说的 “连接协程” 是指nbio的处理连接的逻辑协程,还是指基于标准库的每个连接一个协程? 先把术语对齐,然后提供下你的有问题的示例

@7c0o

lesismal avatar Jan 08 '24 14:01 lesismal

This issue is stale because it has been open for 30 days with no activity.

github-actions[bot] avatar Feb 08 '24 02:02 github-actions[bot]

This issue was closed because it has been inactive for 14 days since being marked as stale.

github-actions[bot] avatar Feb 23 '24 02:02 github-actions[bot]