分布式RPC调用框架:Nepxion-Thunder

jopen 9年前

Thunder是基于Netty + Hessian + ActiveMQ + Tibco + Zookeeper(Curator Framework) + Redis + FST + Spring + Spring Web MVC 分布式RPC调用框架。架构思想主要是来自阿里巴巴的Dubbo框架,但比它更轻量级,零配置式实现部署。支持同步调用,异步调用 Callback,广播通知方式(点对点的发布订阅。主要功能:

  • Thunder进程又是服务方,也是调用方,互为Server和Client模式,只要在注册中心注册,无论是客户端还是服务端都将是负载均衡的节点
  • 支持TCP NIO框架(Netty),TCP MQ消息队列框架(Kafka,ActiveMQ,Tibco),HTTP(Hessian)的传输方式,支持多线程调用
  • 支持同步调用,异步调用Callback,广播通知方式(点对点的发布订阅模式)
  • 支持基于Spring的简单本地调用方式(显式调用),达到远程调用的目的,RPC调用
  • 支持服务方应用上下线调用方和服务的自动发现,不用重启调用方应用
  • 支持心跳和自动重连机制
  • 支持应用与注册中心Zookeeper重连机制
  • 支持注册中心的负载均衡的时候,切换到不健康服务方的时候,继续切换功能,并提供尝试切换次数的设定
  • 支持注册中心的负载均衡,一致性Hash(Consistent Hash)算法,权重轮循算法(Round Robin),随机轮循算法(Random)
  • 支持授权,基于密钥的服务安全访问,跟Hessian自带的安全认证结合在一起,采用双向密钥匹配方式
  • 支持接口调用的版本Version控制,版本不匹配拒绝调用,采用双向版本匹配
  • 支持限流,通过令牌刷新方式,可控制单位时间内接口被调用的次数
  • 支持升级后,服务中心持久化对象不一致,版本判断,并重新创建
  • 支持远程配置和调优,管理者可以通过远程配置工具,配置和调优众多分布式的服务提供方和调用方,当然它们既可以使用本地的配置,也可以使用远程配置
  • 支持统计中心的服务依赖情况(SOA治理)。查看服务方接口所在的地址和端口,所走的协议,所属应用,所属组,以及它暴露的接口方法列表,查看其是否启动,可动态刷新;查看调用方的所调用的接口,接入的地址,所走的协议,所属应用,所属组,查看其是否接入,可动态刷新
  • 支持监控中心监控所有的方法调用(耗时、次数、异常等)信息,结合Splunk做动态日志监控,也可以通过第三方WebService分布式接入,做数据统计,通过广播方式,所有接入进来的WebService都将获得统计数据
  • 提供界面化的服务治理,包括分布式的服务方和调用的分布情况,上下线动态刷新,以及令牌控制,密钥控制,版本控制等功能
  • 支持五大通信中间件的性能优化,通过独立的配置文件实现,采用局部配置和全局配置的方式,局部配置优先于全局配置
  • 支持MQ(消息队列)在同一个进程中为服务/调用指定不同的MQ服务器
  • 支持MQ(消息队列)指定三种Connection或Session的缓存方式(SingleConnectionFactory,CachingConnectionFactory,PooledConnectionFactory)
  • 支持MQ(消息队列)指定两种初始化方式(JNDI和非JNDI)
  • 支持MQ(消息队列,主要是Kafka)的异步事件驱动发布框架内部事件

项目主页:http://www.open-open.com/lib/view/home/1450582002401