Skip to content
New issue

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

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

Already on GitHub? # to your account

是否有打算对reactive和连接多路复用等进行支持 #57

Open
759434091 opened this issue Jul 3, 2019 · 1 comment
Open

Comments

@759434091
Copy link

759434091 commented Jul 3, 2019

Reactive Stack

基于Project Reactor 编程库和 Spring5 Reactive Stack 进行异步化的响应式编程。请问对于这一方面有支持的想法吗

服务端目前处理是基于业务线程池化,进行同步阻塞业务再提交task返回。
如果服务端使用Reactive Data、Reactive Redis、WebFlux WebClient开发,可能可以免去新建另外的业务线程池。数据仅仅通过切换Eventloop流动变化,解放线程,而不是在从业务线程池中的一条进行不断的阻塞等待。
(表述可能有误,未能讲明我的意思)

连接中多路复用

目前Rpc协议可以根据request&correlation_id 实现唯一标识。
对于同一个连接,Client可以同时发出多个不同的ServicePackage,Server亦可以乱序响应多个不同的ServicePackage。

客户端:
目前的ProtobufRpcProxy 受限于同步阻塞的方式,在一条线程上发送请求,然后开始doWaitCallback。这样处理感觉类似Jdbc,不过是在Netty的基础上强行在业务线程阻塞等待(根据callbackDone标志)。是否没有发挥出当先NIO和目前Rpc协议的最大优势。

这个是目前的Rpc协议以及其实现所支持的,不过似乎在最终提供给业务开发方层面却没能够这么做(Blocking+NonBlocking=Blocking)

预编译

目前预编译需要另外加插件和配置进行生成编解码的文件,使用File/OutputStream/Compiler/MiniTemplater进行相关实现。使用注解处理器会不会更加方便呢,特别是对于Spring boot fatJar来讲。

DEMO

根据你的源码。我大概编写出了一些实现的DEMO。目前对相关开发了解不深,写的比较挫
reactor-rpc4j
jprotobuf-annotation-processor

@jhunters
Copy link
Collaborator

非常感谢反馈, reactor模式我们详细了解一下。
基于注解处理的确是友好一些, 也是不少开发者反馈使用asm来生成,提升效率,这个我们也会安排时间来分析一下

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants