每日一笑:看了网上有很多说熬夜的坏处,这些对我最大的改变就是从开开心心的熬夜变成了提心吊胆的熬夜。
前言
《把玩Dubbo系列》是我一直以来想做的一件事,一方面因为Dubbo是我在日常工作中一直会用到的一款RPC框架,所以有必要对它的原理深入理解一下,其次对自己所学的设计模式的一个巩固并且可以对设计代码思路有一个很好的扩展,然后,dubbo中用到了netty,可以借此逐步接触netty相关知识点。当然最重要的是为了面试吹牛逼,涨薪资,这是最关键的!!!!。
环境搭建
环境搭建总共分为五个步骤:环境准备、克隆源码、导入idea、编译、测试运行
环境准备
- 系统:Mac OS
- IDEA:2018.1.3
- JDK:1.8
- maven:apache-maven-3.5.3
- ZooKeeper 3.6.0(为了测试运行使用,如果单纯看dubbo源码可以不需要)
- Dubbo源码:github.com/apache/dubb…
- Dubbo注释源码:github.com/MrSorrow/du…
克隆源码
Dubbo官网本身指导我们下载完源码本地使用Maven命令行构建,再生成IDEA工程结构导入。我这里就不那么麻烦了,直接clone完之后用idea软件导入即可,效果是一样的。
克隆源码到本地
命令:git clone github.com/MrSorrow/du…
- 1、** 先进入到自己本地idea工程的路径 **
- 2、** 输入git clone github.com/MrSorrow/du… (小编是由于先fork,fork之后再clone,所以导致图片中的地址不一样)**
克隆完了之后会在本地生成对应的dubbo工程:
导入IDEA
打开IDEA,点击File->New->Project From Existing Source,选择好本地仓库,这里直接选择Dubbo工程根目录的pom文件即可,点击Open。
配置工程
1、maven环境配置 2、钩上递归搜索项目 3、钩上自动载入maven依赖
4、一路next工程导入成功。等待maven依赖更新成功,显示出IDEA工程目录如下:
编译
找到dubbo-parent工程,上面显示了root。进行clean和install。install之前记得跳过测试,IDEA中选中那个闪电按钮即可!
温馨小提示:根据亲身体验,编译大约需要5-10分钟,大家可以偷偷划水!
至此,其实我们的dubbo源码阅读环境就搭建好了,已经不妨碍大家阅读dubbo源码了,这里做的最后一步是测试,这里以zookeeper为例。
测试代码
安装注册中心
- 下载zk的压缩包
mirror.bit.edu.cn/apache/zook…
选择3.4.14版本的,3.4.14这个版本是很稳定的,然后解压,解压下载得到的ZooKeeper压缩包,发现有bin,conf,lib等目录。
- bin目录中存放有运行脚本;
- conf目录中存放有配置文件;
- lib目录”中存放有运行所需要第三方库。
在conf目录下,新建一个名为zoo.cfg的文件,或者直接zoo_sample.cfg,改成这个zoo.cfg,其中内容如下:
# 服务器与客户端之间交互的基本时间单元(ms)
tickTime=2000
# zookeeper所能接受的客户端数量
initLimit=10
# 服务器和客户端之间请求和应答之间的时间间隔
syncLimit=5
# 数据目录. 可以是任意目录.
dataDir=/zookeeper-3.4.14/data
# log目录, 同样可以是任意目录. 如果没有设置该参数, 将使用和#dataDir相同的设置.
dataLogDir=/zookeeper-3.4.14/log
# 监听client连接的端口号.
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
启动注册中心
切换到ZK的目录,命令行启动ZK(如果发现启动不成功,很可能是权限问题,命令在图中)
启动Provider
看图,找到demo模块的provider并注册到注册中心。
启动Consumer
看图,找到demo模块下的consumer进行rpc调用。
点关注,不迷路
好了各位,以上就是这篇文章的全部内容了。。。我后面会每周都更新常用技术栈相关的文章,敬请期待!!!如果这个文章写得还不错,觉得「小沙弥」我有点东西的话 求点赞👍 求关注❤️ 求分享👥 对我来说真的 非常有用!!!
白嫖不好,创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见!
迷途小沙弥 | 文 【原创】
如果本篇博客有任何错误,请批评指教,不胜感激 !