grails框架入门小结(三)—Maven+Git+Dubbo+Zookeeper

时间:2023-01-25 22:55:52

知识浅薄,不喜勿喷。

1.下载WebStorm、Idea、JDKMySQL。

Idea安装配置教程:http://jingyan.baidu.com/article/fd8044fad2edcf5030137a67.html,

gulp+npm+cnpm+node.js安装配置教程:http://jingyan.baidu.com/article/14bd256e7f7d7fbb6d2612c4.html?qq-pf-to=pcqq.c2c,

Terminal的一个命令:http-server

2.配置JDK、Grails、Maven、MySQL的环境变量

3.免安装版MySQL的安装配置:http://blog.csdn.NET/frt007/article/details/50184143,

一个错误:mysql服务启动的1067错误,可能由于没有在my.ini文件中配置server的启动项。

Navicat连接数据库:http://jingyan.baidu.com/article/3c343ff70d0ee00d37796397.html,

Navicat破解:http://www.jb51.Net/softjc/473494.html

4.maven

maven的jar包依赖http://mvnrepository.com/artifact/org.springframework/spring-context/4.3.1.RELEASE

maven学习:http://www.cnblogs.com/dcba1112/archive/2011/05/01/2033805.html


学习maven,要知道几个概念:

构建:就是把我们写好的源文件.java文件,变成.class文件,能够被浏览器所访问,

部署:就是把我们写好的java工程,配置的jar包,打成包放在应用服务器中,如Tomcat,这样就变成了一个动态Web工程,能够被浏览器所访问。

maven就是一个自动构建工具,能够帮我们自动编译源文件。也能够清楚我们已经编译的过的代码,回到初始状态。

仓库:分为本地仓库、远程仓库(私服(在局域网中的服务器)、*仓库、*仓库镜像)

install命令能够将我们写好的并且已经打包好(package)的工程放到本地仓库,我们就能像使用jar包一样使用它。

pom.xml:很重要,可以在其中 配置jar包的唯一坐标,maven就能帮我们进行自动下载。

5.Git:

看廖雪峰的教程。

安装:直接下载git,

配置全局:$ git config --global.user.name="myname"   $ git config --global.user.email="myemail",

创建版本库:创建一个喜欢的目录,即文件夹,进入文件夹进行$git init,初始化一个版本库

常用命令:

$ git add readme.txt  把文件添加到版本库,只能一个个添加

$ git commit =m "i add txt to my repertory" 提交到master分支,这个操作可以提交多次add,引号中类似备注

$ git status 查看仓库的当前状态,

$ git diff "readme.txt" 可以查看对readme.txt文件都做了哪些修改,

$ git log 查看git的操作历史记录

$ git log --pretty=oneline查看git的操作历史记录,只显示其commit的版本号及其提交时候的备注信息

HEAD表示当前版本,HEAD^表示上一个版本,HEAD^^表示上上个版本,HEAD~100表示第前100的版本。

$ git reset 回到add之前的版本

$ git reset --hard213445345 数字为版本号,不必写全,可自行查找

以上。就是git本地操作的一些准备操作。

连接远程仓库:

创建SSH秘钥:$ ssh-keygen -t -rsa -C "myemail"

找到公钥放到 github 账户的ssh秘钥中就可以。

添加远程仓库$ git remote add origin git@XXX origin后面的是远程仓库的地址。这样就连接到了远程仓库。

上传操作$ git push origin master:dev  将本地master分支的内容上传到远程仓库的dev分支。

克隆操作$ git clone git@XXX clone后面同样是远程仓库的地址。能把远程仓库中的内容clone在本地进行操作。

理解分支:

在没有其他分支的时候只有一个master分支,

创建一个叫做dev的分支:$ git checkout -b dev

切换到dev分支:$ git checkout dev 

查看当前仓库有多少分支:$ git branch

查看远程仓库分支状态:$ git remote -v

合并分支:$ git merge dev 在切换到master 分支后,可以把dev分支进行合并

删除dev分支:$ git branch -d dev

6.Dubbo:

分布式服务框架。

先安装好java,mvn。

zookeeper安装:下载,解压,在zookeeper-3.4.6的统计目录创建data,datalog,logs文件夹。

../zookeeper-3.4.6/conf/zoo.sample.cfg文件改为 zoo.cfg,并修改其中dataDir、datalogDir,分别对应文件夹路径。

windows下运行,zookeeper-3.4.6/bin/zkServer.cmd命令和zkCli.cmd就是成功启动了zookeeper的服务端和客户端。

 API、Provider、Consumer

API接口,即interface,就是服务接口,将打包在一个jar包,并提供给Provider和Consumer两个项目使用。

Provider对接口进行实现,此处就像我们在项目中使用jar一样,如果使用了Maven,就是把服务借口安装到本地,并在Provider的pom.xml文件中通过在本地仓库中这个服务接口jar包的位置,来自动导入jar包,就能够对其进行实现,并注册到ZooKeeper。

Consumer在到ZooKeeper中寻找对应的接口实现

例子:

Provider:(spring的xml文件resources.xml)

<dubbo:application name="hello-world-app-provider" />//提供应用方信息
<dubbo:registry address="zookeeper://127.0.0.1:2181" /> //使用zookeeper广播中心暴露服务地址
<dubbo:protocol name="dubbo" port="20880" /> //使用dubbo协议在20880端口暴露服务
<dubbo:service interface="cn.eaglefire.app.service.DemoService" ref="demoService" />//声明要暴露接口

Consumer:

<dubbo:application name="hello-world-app-provider" />//提供应用方信息
<dubbo:registry address="zookeeper://127.0.0.1:2181" />//使用zookeeper广播中心暴露服务地址
<dubbo:reference id="demoService" interface="cn.eaglefire.app.service.DemoService" />//生成
远程服务代理,可以像使用本地bean一样使用demoService,也就是从zookeeper中找到要用的接口及其实现。

个人总结:

其意义在于:之前我们使用jar包,可以导入到我们的项目中,并且可以对其接口进行实现,比如实现Filter接口,写一个MyFilter实现类,但是呢,我们又想在别的项目中使用这个我们写好的MyFilter,就得把我们写好的这个项目打包,打成jar包,导入到我们的项目中,才得以使用。

现在呢,我们当我们把服务接口写好,打成jar包,利用Maven安装(install)到本地。然后我们编写Provider也就是服务接口的实现,我们可以利用Maven从本地导入这个jar包,然后对其进行实现,并通过上面的Spring配置文件,暴露地址和端口,以及生命要暴露的接口,把这个服务接口注册到zookeeper中。在Consumer中的Spring的.xml文件,可以按照上面的注册方式,暴露地址和端口以及生命要使用的接口。如此这般,我们就能在Consumer项目中使用我们自己写好的API的,Provider实现,这样就很简便的联系起来了两个不同的项目。


Dubbo再总结:

IAPI:

javaBean:对应domain中的字段,类型务必一致,另外,类名尽量不要与domain的类名相同,可写成(ItemTypeBean、ItemType)

service:实际上就是interface,定义接口,在provider中进行实现。

打jar包,安装到本地。


IProvider:

resources.xml:配置dubbo,zk,以及暴露接口。

pom.xml:依赖的jar包有,IAPI的jar,MySQL连接数据库,dubbo和zk。

domain:要与javaBean中字段一致。

service:实现IAPI的接口并实现。此处有用到一个javaBean和domain转换的工具类。注意类型。


IConsumer:

resources.xml:配置dubbo,zk,以及订阅接口服务。

pom.xml:依赖的jar包有,IAPI的jar,MySQL连接数据库,dubbo和zk。

controller:spring注入IAPI的接口,例如IItemTypeService itemTypeService(即为这个接口服务的id,在resources.xml中有配置),用itemTypeService去调用在IProvider中实现接口服务的方法,把前端传来的参数,封装成JavaBean,在IProvider中药注意javaBean与domain的转换。


以上。