miniDubboOpen icon indicating copy to clipboard operation
miniDubboOpen copied to clipboard

已完成功能列表

  • [x] 基于zk服务注册和服务发现
  • [x] 基于netty + json序列化网络通信
  • [x] zk连接复用、netty client连接复用
  • [x] 可以单独使用,也可以与spring boot集成
  • [x] 支持一个类多个版本实现
  • [x] 服务端优雅启动,防止流量过早进来,造成超时。在spring容器启动成功后,再注册到zk上。
  • [x] zk重新连接时,重新注册关注的事件,恢复现场。对于服务端是重新注册;对于客户端是重新订阅
  • [x] netty心跳保活机制,客户端超时断开重连,重连时dubbo invoker不可用,服务端超时关闭无效连接
  • [x] 服务端请求用线程池实现,避免阻塞NioEventLoop
  • [x] shutdown hook。spring容器销毁时,关闭占用的资源,如netty client/netty server。做加法,也得做减法。
  • [x] 服务端优雅下线。在spring容器销毁前(ContextClosedEvent),先从zk取消注册,最后再关闭客户端连接,避免容器销毁时业务请求大量报错。
  • [x] netty client通过计数引用销毁资源。

TODO LIST

    通用需求:

  • [ ] zk抖动导致所有服务实例下线优化
  • [ ] 支持protobuf序列化
  • [ ] 支持http协议通信
  • [ ] 其他注册中心支持,如consul/redis
  • [ ] Attachment/tag实现

    provider功能:

  • [ ] 服务端支持曝光实现多个接口的一个类

    consumer功能:

  • [ ] 服务负载均衡算法:随机/轮询/加权,服务同机房路由
  • [ ] 集群失败策略:failover/failsafe/fallback

    控制台规划:

  • [ ] 服务展示和治理
  • [ ] 支持管理服务上下线
  • [ ] 支持动态配置和下发

博客参考:

简易版dubbo实现

其他工程:

api miniDubboDemo

更多精彩样例,请关注公众号:

扫一扫