一、dubbo服务框架的介绍:
Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案。简单的说,Dubbo 就是个服务框架,说白了就是个远程服务调用的分布式框架
soa面向服务(以dubbo为基础)
1、dubbo服务框架的soa的工作原理,和spring cloud类似
2、dubbo和spring cloud的区别在于,dubbo有自己的dubbo协议通信(dubbo、tcp、rmi、hessian、http、webservice、rest等),而spring cloud是通过http协议通信的(rest风格)
3、dubbo有一个注册中心的客户端在每时每刻同步注册中心的服务信息
4、dubbo有一个java web的监控中心,负责监控服务的注册信息,甚至可以配置负载均衡。
二、设置使用Tomcat服务器运行Dubbo服务框架
1、首先要运行Tomcat,解压Tomcat的压缩包,并且编辑server.xml文件
链接: https://pan.baidu.com/s/1bIdr2rJ63WhgXfij2XPokA 提取码: 7trw
Vi ../conf/server.xml
文件
这个文件下的标签:
<server></server>
tomcat
<service></service>
提供http服务协议
<Engine></Engine>
servlet引擎
<Host></Host>
虚拟机的进程
2、在host标签里面加入以下代码(运行Tomcat默认启动dubbo服务框架):
<Context path="/dubbo" docBase="/opt/dubbo" debug="0" privileged="true"/>
Path表示在网页访问的名字,docbase表示运行文件目录下的进程文件
3、
unzip 压缩包 -d 文件夹
解压war压缩包,把压缩包就解压到-d 文件夹中。
为什么要把他解压到某个文件夹里呢?
链接: https://pan.baidu.com/s/1uS5PRNORfbdzF8-aNfa20g 提取码: mq55
因为这个压缩包直接解压是一堆零散文件,姑且解压dubbo-admin-2.6.0.war文件时,把解压文件放到dubbo文件夹中,方面后续使用该框架。
4、cd到Tomcat的bin下面
5、sh命令 sh startup.sh运行Tomcat就可以了,
运行之前,确保已经安装jdk
编辑文件 …/tomcat/bin/catalina.sh (根据你自己的jdk路径进行修改) 在文件的正文开头
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=/usr/local/jdk/jre
6、sh命令sh shutdown.sh可以关闭Tomcat
之后可以在浏览器访问192.168.1.109:8080/dubbo/就能进入dubbo监控中心了
注意前面不能加https,不然不可以访问。
并且输入账号密码root和root就可以了。
这里的192.168.1.109是自己Linux系统的IP地址
注意:如果主机无法访问虚拟机里的Tomcat,先查明白,主机ping一下虚拟机的ip地址,如果互通的话,很可能就是端口8080被禁了,
要执行下面代码把8080端口在防火墙中放行
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
三、启动注册中心zookeeper
链接: https://pan.baidu.com/s/18GO_dPC4uJnSL4GI-0aA_A 提取码: 2wew
1、tar -zxvf zookeeper-3.4.11.tar.gz
解压这个文件
2、cd
到conf
文件夹里,看到zoo_sample.cfg
文件,这是一个例子配置文件,不是真正的配置文件
3、把这个文件copy
一份,利用命令cp zoo_sample.cfg zoo.cfg
,变成zoo.cfg
文件
4、vi zoo.cfg
修改datadir的路径,保存的数据目录到这个路径,数据目录设置为dataDir=/opt/zookeeper-3.4.11/data
,并查看该路径下是否有这个文件夹?
5、如果没有这个文件夹,就在zookeeper-3.4.11文件夹下mkdir
一个文件夹data
,用来接收数据目录的
7、启动zookeeper ,cd到bin下面
9、启动两条进程:
./zkServer.sh start
启动主进程
./zkServer.sh status
启动状态进程
是启动两个进程!!!记住了!!!
启动的是zookeeper程序的两条进程!!!
10、可以ps -ef|grep zookeeper
,查看这个进程的运行情况
11、因为是先运行的dubbo监控中心,所以在Tomcat打印的日志文件logs会有报错找不到zookeeper,之后sh shutdown.sh关闭Tomcat,rm -rf *删除上一次的日志文件logs,
再sh satartup.sh运行一下就可以了,就不会报错找不到zookeeper了。
四、dubbo服务框架和zookeeper注册中心的使用与关系
调用关系:
服务提供者(Provider):暴露服务的服务提供方,服务提供者在启动时,向注册中心注册自己提供的服务。
服务消费者(Consumer): 调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
注册中心(Registry):注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
监控中心(Monitor):服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心
——调用关系说明:
——服务容器负责启动,加载,运行服务提供者。
——服务提供者在启动时,向注册中心注册自己提供的服务。
——服务消费者在启动时,向注册中心订阅自己所需的服务。
——注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
——服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
——服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
五、dubbo的端口号问题
1、当我们的spring boot项目启动时,机器的网卡会自动的分配dubbo之间的通讯协议的端口号,但有可能有些机器的网卡设置出问题,会导致无法分配dubbo端口号,最终导致第二个服务无法启动!!!
解决方式1(手动分配):
解决方式2:解决网卡的问题。
2、微服务的端口号,是接收http协议请求,负责传输web的请求,和dubbo端口不一样的!!!