我用的环境是三台虚拟机centos7
1.现在三台虚拟机上搭建zookeeper集群
2.在其中一台上 放置dubbo-admin
(1)下载
git clone https://github.com/apache/incubator-Dubbo-ops
(2)打开文件,主要是修改自己的zookeeper注册中心
D:\dubbos\incubator-Dubbo-ops\dubbo-admin-server\src\main\resources\application.properties
(3)mvn package 打包 在target目录下有 dubbo-admin-0.0.1-SNAPSHOT.jar
扔到虚拟机上 执行命令 java -jar dubbo-admin-0.0.1-SNAPSHOT.jar &
外网访问即可
2.用springboot搭建 helloworld
提供者 dubbo-provider.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- 应用配置,不要与提供方相同 -->
<dubbo:application name="spring-boot-provider"/>
<!-- 注册中心配置,使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://192.168.153.101:2181?backup=192.168.153.102:2181,192.168.153.103:2181" timeout="60000" />
<dubbo:protocol name="dubbo" port="20880" />
<!--关闭服务消费方所有服务的启动检查。dubbo缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止Spring初始化完成。-->
<dubbo:consumer check="false" />
<!-- 使用注解方式暴露接口,会自动扫描package下所有包中dubbo相关的注解,这样就不用在xml中再针对每个服务接口配置dubbo:service interface-->
<dubbo:annotation package="com.chuangxin.qizhi.dubbo.provider" />
<!--<dubbo:service interface="com.practice.springboot.dubbo.provider.SayHelloImpl" ref="SayHelloImpl"/>-->
SayHello.java
package com.chuangxin.qizhi.dubbo.provider;
public interface SayHello {
String sayHello(String name);
}
SayHelloImpl.java
package com.chuangxin.qizhi.dubbo.provider;
public interface SayHello {
String sayHello(String name);
}
MAIN方法上面加注解 加载 xml
@ImportResource(value={"classpath:dubbo-provider.xml"})
消费者 配置 dubbo-consumer.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:property-placeholder/>
<!-- 应用配置,不要与提供方相同 -->
<dubbo:application name="spring-boot-consumer"/>
<!-- 注册中心配置,使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://192.168.153.101:2181?backup=192.168.153.102:2181,192.168.153.103:2181" timeout="60000" />
<!-- 使用注解方式创建远程服务代理-->
<dubbo:annotation package="com.chuangxin.qizhi.dubbo.consumer" />
<!--声明服务引用,与服务声明接口类型一致-->
<!--<dubbo:reference interface="com.practice.springboot.dubbo.provider.SayHelloImpl" id="SayHelloImpl"/>-->
</beans>
SayService.xml
package com.chaungxin.qizhi.dubbo.consumer;
import com.chuangxin.qizhi.dubbo.provider.SayHello;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Component;
@Component
public class SayService {
@Reference(loadbalance="roundrobin")
SayHello sayHello;
public String say(String name) {
return sayHello.sayHello(name);
}
}
MAIN方法 就是springboot启动类上面加注释
@ImportResource("classpath:dubbo-consumer.xml")
先启动 tigongzhe 在启动消费者 然后看 dubbo-admin就会有数据
然后 用maven生成jar包 放到 两个服务器上去 启动
我遇到的问题是 他的protocol 自动加载的 host 是外放ip 不是内网的 因此 消费者 消费不了 ,
最后的解决办法是 修改 虚拟的 hostname
vim /etc/hostname
输入自己的名字: abc.com
保存就可以了
vim /etc/hosts
添加你的内网ip 对应着名字 在最下面添加就可以
例如 192.168.153.102 abc.com
保存 然后重启虚拟机 shutdown -r now
这样就正常了