深入学习Motan系列(一)——入门及知识zookeeper储备
背景以及说明:
最近逮到个RPC框架,打算深入学习,框架千千万,只有懂得内部原理,才能应对复杂的业务,进行自定义化系统。
这个系列的Motan文章也是自己慢慢摸索的轨迹,将这个过程记录下来,一是提升自己对框架的理解,二是让大家看到这个过程,解决心中学习的困惑,三是由于网上Motan的文章,大多感觉没有写的足够深入,自己想学习又找不到很好的东西,干脆,自己写,撸起膀子开干。
本篇目标:
了解Motan基本知识,搭建Motan Demo,对Zookeeper有个初步的认识。
1.概要
Motan是微博的框架,没有比官方介绍的更准确的了,直接上链接,http://tech.sina.com.cn/i/2016-05-10/doc-ifxryhhh1869879.shtml
对里面的东西有个大体认识就行,主要是Motan架构及模块设计下面的两张蓝色的图需要着重有个认识,困惑也没关系,带着困惑往后走。
2.tutorial --Motan Demo
新项目要干的第一件事,helloWorld. 还是贴个链接,因为别人写了一遍比较详细的文章,没必要再弄了。
https://blog.csdn.net/linuu/article/details/53115290
我照着做了,可以成功的做出来。照着文章中的东西,将Demo搭建起来。
需要注意的地方有如下几个:
(1)自己动手下载Motan源代码,因为需要编译后生成的xsd文件,以及后面学习时需要看源代码;
(2)motan-manager的war包,这里可以越过,因为它就是个页面管理端;
(3)我编译源码时遇到的第一个错,maven-javadoc-plugin XXXXXXXXXXXXX 什么什么的错误信息,意思是说源码的javadoc有问题,不规范。我的解决办法是直接将motan工程中的pom.xml文件中maven-javadoc-plugin那里的<profile>标签,整块注掉
(4)后续编译出现几处错误,都是test类的错误,直接将test类中的内容注释掉就可以了,简单粗暴,我喜欢
入门Demo有些短小精悍,不过成功跑出来就可以了。相信大家都成功搭建了,信心满满的进入下一篇吧!如果Demo没搭建成功,千万不要往后看,小心走火入魔!
当时走到这里时,袋鼠信心爆棚,心想不过如此,so easy!
3.Zookeeper
它能做很多事,其中一个功能就是作为注册中心。这个,是我们这次所关注的。(其余介绍百度搜一下,自己解决)
推荐下列文章:
Zookeeper用作注册中心的原理 https://www.jianshu.com/p/68a05b5af088
基于ZooKeeper的服务注册中心 https://www.cnblogs.com/valor-xh/p/6281502.html
如果之前对rpc框架没有了解的话,zookeeper的部分,可以读读上面两篇文章,帮助后面的理解。
Zookeeper官网 https://zookeeper.apache.org/
深入学习Motan系列(一)——入门及知识zookeeper储备的更多相关文章
- 深入学习Motan系列(五)—— 序列化与编码协议
一.序列化 1.什么是序列化和反序列化? 序列化:将对象变成有序的字节流,里面保存了对象的状态和相关描述信息. 反序列化:将有序的字节流恢复成对象. 一句话来说,就是对象的保存与恢复. 为什么需要这个 ...
- 深入学习Motan系列(四)—— 客户端
困惑的袋鼠,对框架的把握有些茫然,但是仍然一步步向前,行动总比一直迷茫停止不前要好,您说呢,各位客官? 这篇开始客户端的分析.有些地方的代码,就不每段都标出了,中间有跳跃的地方,请自己对照代码来看.鄙 ...
- 深度学习Dubbo系列(入门开篇)
此文档为系列学习文档 这系列文档详细讲解了dubbo的使用,基本涵盖dubbo的所有功能特性.在接下来的文章里会详细介绍. 如果你正依赖dubbo作为你业务工程的RPC通信框架,这里可以作为你的参考手 ...
- 深入学习Motan系列(二)——服务发布
闯关经验: 袋鼠走过了第一关,顺利搭建出了Demo,信心爆棚.不过之后,心想怎么去研究这个框架呢.查了一下,官方文档,好像没什么东西可以研究啊.后来,又搜了搜博客,因为这是微博的框架嘛,所以搜索时用百 ...
- 深入学习Motan系列(三)——服务发布
袋鼠回头看了看文章,有些啰嗦,争取语音简练,不断提高表达力!袋鼠奋起直追! 注:此篇文章,暂时为了以后时间线排序的需要,暂时发表出来,可是仍然有许多地方需要改写.自己打算把服务端发布,客户端订阅都搞定 ...
- Linux入门基础知识
注:内容系兄弟连Linux教程(百度传课:史上最牛的Linux视频教程)的学习笔记. Linux入门基础知识 1. Unix和Linux发展历史 二者就像父子关系,当然Unix是老爹.1965年,MI ...
- 超全PHP学习资源整理:入门到进阶系列
PHP是少数几门在语言层面饱受诟病,但在实际开发和应用上却又让人无法撒手的语言之一.就好比路边摊小吃,一遍骂人家不卫生,一遍却又说:真香.所谓接地气,不外如此,大道理不说,PHP光是轮子多.市场占有率 ...
- MyBatis学习总结-MyBatis快速入门的系列教程
MyBatis学习总结-MyBatis快速入门的系列教程 [MyBatis]MyBatis 使用教程 [MyBatis]MyBatis XML配置 [MyBatis]MyBatis XML映射文件 [ ...
- 【转载】salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句
salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句 salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex ...
随机推荐
- window有哪些属性?
self:self代表自己,相当于window. parent:返回父窗口. top:返回顶层窗口,和parent作用一样. opener:窗口开启者. status:设置窗口状态栏的文本.
- java 实现简单的链式栈
package com.my; /** * 链式栈 * @author wanjn * */ public class LinkedStack { private Node head; private ...
- 解决WDCP3环境gbk网站编码程序乱码问题
因为默认WDCP V3版本环境编码格式是UTF-8版本,如果我们程序采用的是GBK编码肯定都会有乱码问题. 我们到WDCP后台,"网站管理"-"PHP设置",看 ...
- eclipse项目环境搭建(做了好多遍,老是忘记,以此文帮助记忆)
今天把eclipse的环境搭建好(不能用myeclipse好忧伤). 要求: 1.在svn上管理项目,要下载svn插件. 2.是web所以要用到tomcat插件. 3.将项目运行起来. 流程: ecl ...
- python字符串转换成数字
Action(){ int i; char *s="{str}"; i=atoi(lr_eval_string(s)); lr_output_message("%d&qu ...
- vue2+webpack 开发环境配置
前提条件: 1.安装node.js https://nodejs.org/en/ 下载安装合适的平台 2.安装npm 第一步:初始化项目 新建文件夹 E:\app 推荐vue项目目录结构: confi ...
- ClickOnce 和管理员权限
有些程序需要管理员权限需要运行,同时又想用ClickOnce进行发布,这时候就麻烦了,两者是互斥的. 解决方案是,去掉管理员权限的要求,可以进行发布. 程序启动的时候,加载程序员权限的请求. 代码如下 ...
- Spring学习六(事物管理)
参考链接 http://www.mamicode.com/info-detail-1248286.html http://www.cnblogs.com/wangdaqian/archive/2017 ...
- Oracle使用exp和imp导出、导入数据
===========导出============ exp 用户名/密码@服务器(localhost) file=文件路径.dmp owner=(用户名) ===========导入========= ...
- 利用python库计算person相关系数
使用numpy库,可以实现person相关系数的计算,例如对于矩阵a. a Out[235]: array([[1, 1, 2, 2, 3], [2, 2, 3, 3, 5], [1, 4, 2, 2 ...