- 浏览: 38167 次
- 性别:
- 来自: 上海
最新评论
-
至尊宝_唯一:
要是搞个列表能直接跳转到相应的章节就更完美了
(一) Nepxion-Thunder分布式RPC集成框架 - 介绍 -
nepxion:
参考第一章,就描述了这个框架和Dubbo的一些区别,以及性能上 ...
(十五) Nepxion-Thunder分布式RPC集成框架 - 序列化 -
梦秋雨:
有没有和dubbo做过比较呢。
(十五) Nepxion-Thunder分布式RPC集成框架 - 序列化 -
zhjxzhj:
...
(二) Nepxion-Thunder分布式RPC集成框架 - 使用 -
nepxion:
birdhur 写道很不错的框架,值得好好学习,赞谢谢!最近有 ...
(一) Nepxion-Thunder分布式RPC集成框架 - 介绍
文章列表
Nepxion-Thunder(QQ 群 471164539)发布在https://github.com/Nepxion/
1. 概要
1.1 Thunder是基于Netty + Hessian + Kafka + ActiveMQ + Tibco + Zookeeper(Curator Framework) + Redis + FST + Spring + Spring Web MVC + Spring Boot + Docker分布式RPC调用框架。架构思想主要是来自阿里巴巴的Dubbo框架,但比它更轻量级,零配置式实现部署跟Dubbo相比,Thunder的增强功能包括1) ...
Nepxion-Thunder(QQ 群 471164539)发布在https://github.com/Nepxion/
实例代码在工程nepxion-thunder-spring-boot-docker下
Spring Boot
1. Spring Boot实例代码
有三个入口,使用起来比较方便,代码逻辑就不介绍了
NettyServerBootTest.java单纯 ...
Nepxion-Thunder(QQ 群 471164539)发布在https://github.com/Nepxion/
框架支持两种方式的序列化,Java对象和字节数组的序列化和反序列化,Java对象和Json字符串的转换
1)binary - Java实体类和字节数组的序列化/反序列化2)compression - 对binary模块运行结果的压缩/解压3)json - Java实体类和Json字符串的转换调用序列化的方式很简单,调用SerializerExecutor.java,主要是下面6个方法
public static byte[] serialize(Seriali ...
Nepxion-Thunder(QQ 群 471164539)发布在https://github.com/Nepxion/ 调用链根据单端和多端分成两种方式
单端链式调用
多端跨进程调用链
单端链式调用
基于Jdeferred框架,实现单端的链式调用,支持异步链式Callback调用。它的调用过 ...
Nepxion-Thunder(QQ 群 471164539)发布在https://github.com/Nepxion/
基于Google Guava EventBus,实现事件驱动发布框架内部事件,解除耦合;发布外部事件,进行重试补偿,异常通知(邮件或短信通知)
1)eventbus - 基于Google Guava的进程内发布/订阅机制,支持同步和异步事件发布2)mobile - 基于EventBus的异常信息的短信通知,未实现3)protocol - 基于EventBus的异常信息的发布/拦截,是其它事件通知模块的基础4)registry - 基于EventBus的上下线通知 ...
Nepxion-Thunder(QQ 群 471164539)发布在https://github.com/Nepxion/
1. 本地配置
如果本地配置启动,需要在XML配置config="local"
<thunder:registry id="registry" type="zookeeper" address="localhost:2181" config="local"/ ...
Nepxion-Thunder(QQ 群 471164539)发布在https://github.com/Nepxion/
负载均衡和同步中心只应用于Netty和Hessian
loadbalance - 负载均衡consistenthash - 一致性Hash算法random - 随机算法roundrobin - 轮询算法
consistency - 同步中心
1. 负载均衡
...
Nepxion-Thunder(QQ 群 471164539)发布在https://github.com/Nepxion/
通过MonitorStat.java去刻画监控的属性,包括
private String traceId; // 跟踪ID
private String messageId; // 消息ID
private String messageType; // 消息类型,取值:Reque ...
Nepxion-Thunder(QQ 群 471164539)发布在https://github.com/Nepxion/
1. 介绍
治理中心是基于Nepxion Swing Repository组件,Java Desktop版的服务治理系统,计划用基于Ebay Jetstream框架做个Web版。它的主要功能包括
1.1 登录需要填入注册中心(Zook ...
Nepxion-Thunder(QQ 群 471164539)发布在https://github.com/Nepxion/
1. 存储结构
点击查看大图
应用存储区位于顶级节点application下,分不同的通信中间件进行存储。树状结构:对于服务端,[中间件名]/[组名]/[应用名]/service/[接口名]/[ApplicationEntity的Json串]对于调用端,[中间件名]/[组名]/[应用名]/reference/[接口名]/[ApplicationEntity的Json串]其中[应用名]节点下存储ApplicationConfig.java对象,内容如下: ...
Nepxion-Thunder(QQ 群 471164539)发布在https://github.com/Nepxion/
1. JMS消息队列模型
主要是用于ActiveMQ & Tibco等基于JMS标准的MQ。结构图如下: 点击查看大图
工作原理 1)Spring扫描线程扫描到一个Service节点后,就会去新建一个MQContext对象,放入ServiceContextMap缓存中(如果存在则不新建,去缓存中拿),进而创建queueAsyncResponseDestination,queueSyncResponseDestination,top ...
Nepxion-Thunder(QQ 群 471164539)发布在https://github.com/Nepxion/
点对点模型实现,主要是用于Netty & Hessian。结构图如下:点击查看大图
1 Netty框架 1.1 工作原理 1)Spring扫描线程扫描到一个Service节点后,就开启一个服务端Netty NioSocketChannel通道(绑定服务端口),并开启Redis的对该Service的订阅 2)Spring扫描线程扫描到一个Reference节点后,就开启一个调用端Netty NioSocketChannel通道(根据Applica ...
Nepxion-Thunder(QQ 群 471164539)发布在https://github.com/Nepxion/
1 ServerExecutor.java - 服务端运行器接口 interfaze :接口名(例如com.nepxion.thunder.test.service.UserService) applicationEntity包含四个参数:application(应用名),group(组名),host(服务地址),port(端口)。应用名和组名的作用,一是为了管理方便,二是防止同名接口的出现 ServerExecutor.java作用是根据 ...
Nepxion-Thunder(QQ 群 471164539)发布在https://github.com/Nepxion/
Thunder的扫描框架是采用Spring自定义标签扫描来初始化的
1. 定义名称空间
定义thunder-1.0.xsd,通过xsd文件进行对Spring配置文件节点的定义,规范对服务端/调用端XML格式
定义spring.schemas,实现对thunder-1.0.xsd的引用
http\://www.nepxion.com/schema/thunder/thunder-1.0.xsd=com/nepxion/thunder/thunde ...
Nepxion-Thunder(QQ 群 471164539)发布在https://github.com/Nepxion/
1. 类结构
1.1 cluster:负载均衡和远程注册中心集群服务地址同步1.1.1 consistency - 远程服务上下线会产生事件,该模块线程安全维护本地服务列表和注册中心同步。该服 ...