相关工具的概念
1. dubbo:
是管理中间层的工具,在业务层到数据仓库间有非常多服务的接入和服务提供者需要调度,dubbo提供一个框架解决这个问题。注意这里的dubbo只是一个框架,至于你架子上放什么是完全取决于你的,就像一个汽车骨架,你需要配你的轮子引擎。这个框架中要完成调度必须要有一个分布式的注册中心,储存所有服务的元数据,你可以用zk,也可以用别的,只是大家都用zk。
2、Zookeeper的作用:
zookeeper用来注册服务和进行负载均衡,哪一个服务由哪一个机器来提供必需让调用者知道,简单来说就是ip地址和服务名称的对应关系。zookeeper通过心跳机制可以检测挂掉的机器并将挂掉机器的ip和服务对应关系从列表中删除。至于支持高并发,简单来说就是横向扩展,在不更改代码 的情况通过添加机器来提高运算能力。通过添加新的机器向zookeeper注册服务,服务的提供者多了能服务的客户就多了。
3. zookeeper和dubbo的关系:
Dubbo的将注册中心进行抽象,是得它可以外接不同的存储媒介给注册中心提供服务,有ZooKeeper,Memcached,Redis等。
引入了ZooKeeper作为存储媒介,也就把ZooKeeper的特性引进来。首先是负载均衡,单注册中心的承载能力是有限的,在流量达到一定程度的时 候就需要分流,负载均衡就是为了分流而存在的,一个ZooKeeper群配合相应的Web应用就可以很容易达到负载均衡;资源同步,单单有负载均衡还不 够,节点之间的数据和资源需要同步,ZooKeeper集群就天然具备有这样的功能;命名服务,将树状结构用于维护全局的服务地址列表,服务提供者在启动 的时候,向ZK上的指定节点/dubbo/${serviceName}/providers目录下写入自己的URL地址,这个操作就完成了服务的发布。 其他特性还有Mast选举,分布式锁等。
一、在maven项目中加入dubbo相关的配置文件
1、在项目(包含发布和引用dubbo的项目
)中pom.xml文件中加入duboo相关的jar包地址
<!-- dubbo相关 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
<exclusion>
<groupId>org.jboss.netty</groupId>
<artifactId>netty</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
</dependency>
2、后台服务:在service的spring配置文件中加入dubbo发布服务的内容
<!-- 使用dubbo发布服务 -->
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="e3-manager" /> //项目名称
<dubbo:registry protocol="zookeeper"
address="192.168.241.128:2181" /> //zookeeper注册中心服务器的地址和端口号
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="cn.e3mall.service.ItemService" ref="itemServiceImpl" timeout="600000"/>
友情提醒:所有的pojo类必须实现序列化接口"
Serializable
",因为通过网络传输必须经历以下步骤:
java对象—>序列化—>io流网路传输—>反序列化—>java对象
3、前台服务:在springmvc的配置文件中加入
<!-- 引用dubbo服务 -->
<dubbo:application name="e3-manager-web"/>
<dubbo:registry protocol="zookeeper" address="192.168.241.128:2181" /> //zookeeper服务器地址和端口号
<dubbo:reference interface="cn.e3mall.service.ItemService" id="itemService" /> //暴露的服务接口
二、zookeeper注册中心的安装
1、Zookeeper的运行环境是需要java的,建议安装oracle的java8.
可去官网下载一个稳定的版本,然后进行安装:http://zookeeper.apache.org/
2、解压后在zookeeper的conf目录下创建配置文件zoo.cfg,里面的配置信息可参考统计目录下的zoo_sample.cfg文件,我们这里配置为:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper-data/
clientPort=2181
tickTime:指定了ZooKeeper的基本时间单位(以毫秒为单位);
initLimit:指定了启动zookeeper时,zookeeper实例中的随从实例同步到领导实例的初始化连接时间限制,超出时间限制则连接失败(以tickTime为时间单位);
syncLimit:指定了zookeeper正常运行时,主从节点之间同步数据的时间限制,若超过这个时间限制,那么随从实例将会被丢弃;
dataDir:zookeeper存放数据的目录;
clientPort:用于连接客户端的端口。
启动一个本地的ZooKeeper实例
cd /usr/zookeeper/zookeeper-3.4.6/bin
./zkServer.sh start
检查ZooKeeper是否正在运行
echo ruok | nc localhost 2181
若是正常运行的话会打印“imok”。
常用的其他命令:
./zkServer.sh stop
//停止服务
./zkServer.sh status
//查看服务状态
三、dubbo监控中心的安装
1、启动监控中心
1、先下载dubbo-admin.war包
2、下载apache-tomcat容器,放到合适的位置
3、将dubbo-admin.war拷到容器的webapp的文件夹下
4、启动tomcat容器:./startup.sh
2、配置监控中心
如果dubbo监控中心和zookeeper注册中心在一个服务器上则不用配置,如果不在一台服务器上的话,就需要修改相关配置文件:
cd /usr/apache-tomcat-8.5.40/webapps/dubbo-admin/WEB-INF
vim dubbo.properties
//文件内容
dubbo.registry.address=zookeeper://127.0.0.1:2181 //将前面的ip地址改成zookeeper服务器的地址
dubbo.admin.root.password=root //设置监控中心的密码
dubbo.admin.guest.password=guest
四、启动项目测试
1、发现前台项目可以轻松的调用到暴露接口中的数据
2、访问 http://192.168.241.128:8080/dubbo-admin/ 地址可以进入监控中心的管理页面
用户名和密码默认为:root
image.png
可以查看各个项目之间的调用关系
网友评论