摘要: motan的序列化支持两种协议,一种是json,另一种是hessian2。主要涉及到的类和接口是是:FastJsonSerialization、Hessian2Serialization、Serialization、Codec、AbstractCodec、NettyDecoder、NettyEnco 阅读全文
posted @ 2016-09-19 19:52 【刘光亮】 阅读(1156) 评论(0) 推荐(0) 编辑
摘要: 本章将分析motan的序列化和底层通信相关部分的代码。 1.在上一章中,有一个getrefers的操作,来获取所有服务器的引用,每个服务器的引用都是由DefaultRpcReferer来创建的 2.NettyClient的创建过程及源码分析 3.Netty相关的连接建立是通过open()方法进行的 阅读全文
posted @ 2016-09-19 19:29 【刘光亮】 阅读(1035) 评论(0) 推荐(0) 编辑
摘要: 上一章我们分析了客户端调用服务端相关的源码,但是到了cluster里面的部分我们就没有分析了,本章将深入分析cluster和它的相关支持类。 1.clustersupport的创建过程,上一章的ReferConfig的initRef()方法中调用了相关的创建代码: 2.clustersupport的 阅读全文
posted @ 2016-09-19 17:32 【刘光亮】 阅读(1557) 评论(0) 推荐(0) 编辑
摘要: 在第一章中,我们分析了服务的发布与注册,本章中将简单的分析一下客户端调用服务的代码及流程,本文将以spring加载的方式进行分析。 1.在DemoRpcClient类的main()方法中加载类: 2.上面加载了spring的配置文件motan_demo_client.xml 经过spring装载Re 阅读全文
posted @ 2016-09-19 16:28 【刘光亮】 阅读(1093) 评论(0) 推荐(0) 编辑
摘要: 在本文第一章,分析的demo中使用了代码加载的方式加载了相关的类,但在我们的实际工作中,使用spring来加载相关的类的情况会更多,本文将分析一下motan是如何与spring一起协同工作的,主要的原理就是利用了spring支持的自定义标签的实现,这也是需要和spring结合的框架的实现方式。 1. 阅读全文
posted @ 2016-09-18 17:15 【刘光亮】 阅读(2200) 评论(0) 推荐(0) 编辑
摘要: 在motan的源码中使用了很多的spi机制进行对象的创建,下面我们来具体分析一下它的实现方法。 1.在实际的jar包的\META-INF\services目录中引入相关的文件,例如下图中,我解压了core的jar文件后,获得到的相应文件列表: 2.以第一节中的ConfigHandler为例来分析,打 阅读全文
posted @ 2016-09-18 16:26 【刘光亮】 阅读(1317) 评论(1) 推荐(0) 编辑
摘要: motan是新浪微博开源的服务治理框架,具体介绍请看:http://tech.sina.com.cn/i/2016-05-10/doc-ifxryhhh1869879.shtml. 本系列的文章将分析它的底层源码,分析的源码版本为:0.1.2。第一篇文章将以服务的发布和注册开始,注册服务使用zook 阅读全文
posted @ 2016-09-18 15:42 【刘光亮】 阅读(2373) 评论(1) 推荐(0) 编辑
摘要: 在实际的开发过程中,我们一定会遇到服务自有的定时任务,又因为现在的服务都是分布式的,但是对于定时任务,很多的业务场景下,还是只希望单台服务来执行,网上有很多分布式定时任务的框架,各位如感兴趣,可以自行去研究。本文采用非常简单的方式实现了分布式的定时任务,利用了zookeeper的节点的EPHEMER 阅读全文
posted @ 2016-08-26 11:04 【刘光亮】 阅读(425) 评论(0) 推荐(0) 编辑
摘要: demo源码:https://github.com/mantuliu/javaAdvance 中的类Lesson4IndependentLock 在上一节中,我们分析了Lock的源代码并一起实践了粗粒度锁对于性能的影响,在本节中,我们将用锁机制来解决一个生产环境实际的案例。下面的案例是一个真实的案例 阅读全文
posted @ 2016-08-25 12:09 【刘光亮】 阅读(1254) 评论(0) 推荐(0) 编辑
摘要: 写这篇文章源于我经历过的一次生产事故,在某家公司的时候,有个服务会收集业务系统的日志,此服务的开发人员在给业务系统的sdk中就因为使用了LinkedList,又没有做并发控制,就造成了此服务经常不能正常收集到业务系统的日志(丢日志以及日志上报的线程停止运行)。看一下add()方法的源码,我们就可以知 阅读全文
posted @ 2016-08-24 22:12 【刘光亮】 阅读(23624) 评论(4) 推荐(4) 编辑