beykery / jkcp

kcp for java . 适用于moba,视频加速等需要极速传输场景的应用,c#版本(客户端)请参考:https://github.com/beykery/kcp4sharp
Apache License 2.0
186 stars 85 forks source link

关于结构 #3

Closed linkerlin closed 8 years ago

linkerlin commented 8 years ago

我觉得,因为kcp是纯UDP的。 完全可以用java原生的API,单线程就可以实现。最多把发包和收包各一个线程。一共三个线程就够了。 不需要启动那么多的线程。

beykery commented 8 years ago

使用netty是为了使用它的ByteBuf,否则也不太好设计缓存; 的确单线程也能管理所有的kcp对象,不过我打算这样:udp数据到来后,先缓存到相应的kcp对象,等待kcp线程循环到来的时候再检查kcp状态并更新; 设计多个kcp线程目的是为了分担kcp对象集合的更新的压力,每个线程负责一部分kcp的更新; 发送这个动作,其实也是同样先缓存到kcp对象,等待kcp线程到来的时候才发送出去。

linkerlin commented 8 years ago

有没有参考asio_kcp? 我最近用quasar写了个ss的服务器,感觉不错。推荐下。 java的协程组件。

beykery commented 8 years ago

asio_kcp没听说;协程好像也不适合这里。