zookepper + dubbo2.7.0实现服务发现

)

demo 代码主要是参考网友的dubbo入门dubbo入门来的,也谢谢这位网友的分享。

在这篇入门中dubbo使用使用的2.6.5。

1.安装zookeepr

先下载zookeeper,目前最新版是3.5.4-beta,也可以点击以下链接下载想要的版本:链接

https://archive.apache.org/dist/zookeeper/

安装比较简单,直接解压启动即可。

解压后修改配置文件:

zookeeper-3.5.4-beta\conf\zoo_sample.cfg 重名成 zoo.cfg

启动:

windows环境:直接双击zkServer.cmd

linux环境:./zkServer.sh start 

成功启动后占用端口: 8080, 2181

由于8080端口比较特殊。可能会被其他应用占用,也会导致其他应用使用此端口时使用不了。所以可以在启动前修改端口。

配置文件:zookeeper-3.5.4-beta\conf\zoo.cfg

在文件最后增加一行:

admin.serverPort=7777

我这里是7777端口,对我来说不会被占用。也可以改成别的。只要不给占用即可。

2.启动服务提供者

打开dubbo-parent/dubbo-service,检查配置文件:application.properties

端口:

server.port=9999

dubbo.protocol.port = 20880

由于我的zk直接是在本机上,所以地址都是127.0.0.1:2181

这是一个标准的spring-boot项目,所以直接启动DubboServiceApplication即可。出现以下表示启动成功

image

3.启动消费者

打开dubbo-parent/dubbo-consumer, 检查配置文件:application.properties

这是一个标准的spring-boot项目,所以直接启动DubboServiceApplication即可。出现以下表示启动成功

image

此时访问 http://localhost:9990/hello 结果如下:

image

4.实现负载均衡

如果想实现负载均衡,可以再启动一个service,

修改端口:不修改则无法启动,提示端口被占用。

server.port=9988

dubbo.protocol.port = 20881

此时访问 http://localhost:9990/hello 效果是快速刷新会发现2个端口交替使用。结果如下:

image

5.使用dubbo-admin查看

官方github地址:链接 (https://github.com/apache/incubator-dubbo-admin.git)

启动后端:

使用idea下载后,修改注册中心地址。

incubator-dubbo-admin\dubbo-admin-server\src\main\resources\application.properties

默认端口:8080

我这里由于是本地,所以直接127.0.0.1:2181,即默认配置,dubbo-admin是一个标准spring-boot项目,所以直接启动DubboAdminApplication即可

也可以通过命令行git clone下载,

mvn clean package -Dmaven.test.skip=true // 跳过测试,否则会很长时间

cd target

java -jar dubbo-admin-server-0.1.jar // 启动

启动前端:也可参考:链接

需要npm支持,也就是需要安装node.js。现在都是通过nvm管理,下载node,还需要安装git。具体方法可以参考官方文档 也可以参考网友提供的链接

我这里是通过git clone方式安装,因为直接使用官方提示方式,安装失败,提示git -c参数错误。

默认端口:8081,我这里修改为8083

cd dubbo-admin-ui // 进到dubbo-admin-ui目录

npm install // 安装依赖

npm run dev // dev模式启动

出现以下字样表示启动成功:

image

直接访问 http://192.168.88.11:8083 点击“服务查询”显示你的服务

image

至此,demo搭建完成。

查看元数据:

1. 使用dubbo2.7.0

2.配置dubbo.configcenter

现在最新dubbo-admin使用的都是dubbo2.7.0,只需要在application.properties中加

dubbo.configcenter=zookeeper://127.0.0.1:2181

3.在服务提供者配置

pom里也需要使用dubbo2.7.0配置,注意从2.7.0开始,包名都是org.apache.dubbo了,不再是com.alibaba.dubbo

image

在application.properties中加。我在demo里已经加了,所以可能可以直接看到元数据

dubbo.configcenter=zookeeper://127.0.0.1:2181

4.配置注册中心地址

dubbo.registry.address=zookeeper://127.0.0.1:2181

dubbo.metadata-report.address=zookeeper://127.0.0.1:2181

我知道有2种方法:

4.1. 在dubbo-admin

org.apache.dubbo.admin.config.ConfigCenter中增加init方法,主要是判断有没有配置,没有则新增:

    @PostConstruct
    public void init() throws Exception {
        CuratorFramework zkClient = CuratorFrameworkFactory.builder().
                connectString("127.0.0.1:2181").
                retryPolicy(new ExponentialBackoffRetry(1000, 3)).build();
        zkClient.start();

        if (zkClient.checkExists().forPath("/dubbo/config/dubbo/dubbo.properties") == null) {
            zkClient.create().creatingParentsIfNeeded().forPath("/dubbo/config/dubbo/dubbo.properties");
        }
        zkClient.setData().forPath("/dubbo/config/dubbo/dubbo.properties", ("dubbo.registry.address=zookeeper://127.0.0.1:2181\n" +
                "dubbo.metadata-report.address=zookeeper://127.0.0.1:2181").getBytes());
    }

4.2. 在dubbo-admin页面中配置
点击配置管理-创建,
名称输入global
内容:

dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.metadata-report.address=zookeeper://127.0.0.1:2181

加了之后正常的话就可以看到元数据了。
看到方法名,参数,返回值类型。我这里没有参数所以是空的


image.png

注意:
有时需要注意mvn依赖,虽然没有报错,但是启动时始终提示xxx没有找到
此时就需要先进到mvn本地仓库找到相应的包,全部删除。重新依赖
依赖是否成功,可以在idea中打开pom.xml,按住ctrl+鼠标移动到包名称上(artifactId)看是否可以点击。如果可以点击表示依赖成功,否则依赖失败,需要删除重新依赖。

参考:[dubbo-parent](https://github.com/skyjilygao/dubbo-parent

你可能感兴趣的:(zookepper + dubbo2.7.0实现服务发现)