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

[提问]关于Handle中业务处理的问题 #17

Closed
Uyuhz opened this issue Jan 14, 2019 · 1 comment
Closed

[提问]关于Handle中业务处理的问题 #17

Uyuhz opened this issue Jan 14, 2019 · 1 comment
Assignees
Labels
question Further information is requested

Comments

@Uyuhz
Copy link

Uyuhz commented Jan 14, 2019

我看cim中有使用单独的线程池这种方式去处理,可网上又有文章和问题不赞成使用这类方式,有些疑惑
所以handle中耗时业务该究竟怎样处理?希望能抽空解答一下

  • A. 直接处理。
  • B. 使用另外的线程池。
  • C. 将handle绑定EventLoopGroup:
pipeline.addLast(nioEventLoopGroup, new Handler());

顺便还有个小问题:
什么时候handle该使用@Sharable注解,而非每个Channel使用不同的handle

@crossoverJie crossoverJie added the question Further information is requested label Jan 14, 2019
@crossoverJie crossoverJie self-assigned this Jan 14, 2019
@crossoverJie
Copy link
Owner

关于 IO 线程是否需要额外的线程处理在另一个项目 cicada 中也有多次讨论:

我个人的考虑是在 cim 这个场景下由于可能会存在对消息做多次处理;不能保证每次处理的效率。所以我把他的处理逻辑放到了线程池中,这样不会影响到正常的 IO

而在 cicada 作为一个 HTTP 框架的场景下,默认是不开启额外的线程处理 IO 业务,但也打算新增一个注解,加上之后默认也是由内部线程池处理。

所以我认为在大多数场景下都需要把 IO 线程独立起来,避免出现极端情况阻塞 IO 线程导致吞吐量降低。

顺便还有个小问题:
什么时候handle该使用@Sharable注解,而非每个Channel使用不同的handle

这个建议先 Google 了解下。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants