Motan学习开篇
你已经走到这里了,后面只要耐心的走下去就行了。 --佚名
入职新公司以后,公司使用dubbo框架,简单的照葫芦画瓢之后,也算是入手了,但是其中内部的实现的机制一概不懂。我单纯的有种好奇心,觉得每个框架都是结构精密的仪器,研究了一个月后总结一下,学到的东西。之所以题目叫motan而不是dubbo,一来看motan代码总共2万行,测试代码1万多行,觉得够简单.二是已经在微博平台大量实用。三来:写本文的时候近期还更新。最起码让我觉得他还活着。相比而言: dubbo更复杂,更老。 哈哈哈哈哈哈哈哈哈哈哈哈哈。
- motan是什么?
motan是RPC框架和服务治理框架。
- RPC和服务治理又是啥?
rpc就是Remote Procedure Calls,简单来说就是调用远程对象的方法。 调用远程对象的方法必然需要通信,因此需要通信框架, motan选取高效的NIO框架, netty。
服务治理:一个服务可以认为就是一个具体的方法(实际对应一个类,就是provider),服务治理可以认为是服务管理,我们的有很多服务可以调用,比如:查询天气预报的,交水电费的等等,而且一个服务可能有很多服务器提供,比如查天气预报,你可以通过网络,短信等形式查询。 现在有这么多服务,这么多服务提供者。查询者要记住这么多服务地址实在复杂。并且可能由于一些服务房会停止服务,或者变更服务的地址,查询者需要获取最新的服务地址。所以需要服务注册中心。motan选用zookeeper,消费者端订阅,提供者端注册,看看zookeeper的发布订阅了解了
如何使用?
基于 Spring配置,配置成自定义bean,比如注册中心的bean,服务提供者的bean,消费者相关bean等,对于这些自定义bean需要编写自定义 bean的解析器,获取对应的对象,具体的实现在motan-springsupport。实现代码中其实就是几个简单的类。先看看图一源码的目录结构感受一下。

图1:motan的目录结构图
Motan学习开篇的更多相关文章
- 总结暨JAVAWEB学习开篇(一)
匆匆,距上一篇博客已经过去7月有余,遂作文一篇总结暨JAVAWEB学习开篇. 1. 啃英文新概念.在多方讨教英语大佬后改变学习方式,通过背诵英文书籍以及多听英文录音来学习,效果还不错(等真正有成效了跟 ...
- HTML学习开篇
最近开的博客,一切都是从零开始,昨天刚写了java的开篇,今天写一写HTML开篇. 很多初学者都不太看重前端的学习,甚至鄙视前端,我刚开始时就这样.其实,要想成为一个真正的程序员,前端和后端都必须了解 ...
- Web前端学习开篇
首先想想自己喜欢干什么?想干什么?脑袋需要什么?什么对自己来说最重要?自己的规划? 本人数字媒体技术专业,想学Web前端开发有好长时间了,有一定的基础,所以就想进一步深入学习.谁料想,我怎么那么没有耐 ...
- Node学习——开篇
前言:自从下决心转学前端以来,我的专业课java基本荒废了,所以对于后台开发的逻辑也已基本忘干净了.但是作为一名准前端程序猿,我认为还是有必要了解后端开发的,虽不必深入学习,但是能够了解项目从前端到后 ...
- Python 学习开篇
前言 最近看到一张图,有点意思: 蓝色是(成长+付出),红色是回报.有多久可以达到这个红心,要看我们自已的努力,付出了多少专注与汗水.我想说的是,水平轴并不是时间,如果不能坚持努力,可能永远都到不了那 ...
- php源码学习——开篇
这个系列是对php源码的学习记录.由于本人水平有限,可能并不能写的非常清晰和深入,所以,可能只适合本人阅读:) 初次接触php源码,看到陌生的文件夹和大量的文件,可能会觉得茫然无措.php-inter ...
- python零基础学习开篇
我是某工业大学的一名博士,研究方向是基于人脸的模式识别.很遗憾,毕业后没有继续从事图像处理中模式识别相关研究.多种原因进入了一家国企单位,从事交通方面工作.工作2年中一直迷茫,没有在工作岗位中找到自己 ...
- go学习开篇
我是做java开发的,从接触java开始算,已经8年了,为什么会想到学go语言呢?前端时间我一直在学习jvm,java的一些更底层的东西,梳理回顾时,感觉可以通过学习其他开发语言,来提 ...
- 《OpenResty 最佳实践》学习开篇
前言:对openresty学习中,收集了一些相关知识的参考网站,有兴趣的可以看看.另附网盘分享. lua菜鸟教程 openresty最佳实战 lua在线解析工具 Nginx Lua API Nginx ...
随机推荐
- Hibernate逍遥游记-第12章 映射值类型集合-004映射Map(<map-key>)
1. 2. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate ...
- 创业草堂之二十二:创业公司C类官员的职位说明书
麻雀虽小,五脏俱全. 创业公司启航,三五十来个人.七八条枪,其中“C”字开头的官儿还真少不了 – CEO.CTO.COO.CFO.CMO.CIO.CCO.CLO.Chairman/Chairwoman ...
- AutoCAD图形打印出图片 C#
这几天搞cad二次开发,用的是C#语言,目前在网上找到的资料比较少.弄了两天,才做出怎样实现打印出图片.首先得在AutoCAD软件界面下,设置打印机的页面设置和打印机设备名称一样(以防打印不出来).即 ...
- json-lib 中关于null与"null"
总感觉json-lib里面关于null和"null"的处理非常不合理,或者说是bug,去了json-lib的网站,最后一次更新是10年了... 发现官方网站第一段就说json-li ...
- servlet request.getParamter 有时获取参数为null
他妈的,参数有时可以获取,有时又不行,折腾了好久,把tomcat换成8.0的,之前用apache-tomcat-7.0.67
- 让Maven支持代理
1.如果你的公司架设了防火墙并设置了HTTP代理服务器来禁止你们直接连接互联网,那么Maven就无法通过代理自动下载依赖包. 为了让Maven能够工作,你需要在Maven的配置文件 settings. ...
- The type xxx cannot be resolved. It is indirectly referenced from required .class files
项目A中引入一个jar包B,在项目A中调用项目B,出现如下错误提示: 大致意思是:这上面所需的包是间接引用的,即A项目调用B项目,B项目又引用了另外一个包C,而这个包现在不在你的A项目的引用中. ...
- Altium Designer哪里下载和导入元件库_图文教程
http://jingyan.baidu.com/article/46650658064621f549e5f88f.html
- 方法Equals和操作符==的区别
http://www.codeproject.com/Articles/584128/What-is-the-difference-between-equalsequals-and-Eq When w ...
- sdut 1728 编辑距离问题( dp )
题目 思路:edit(i, j),它表示第一个字符串的长度为i的子串到第二个字符串的长度为j的子串的编辑距离. 有如下动态规划公式: if i == 0 且 j == 0,edit(i, j) = 0 ...