Dubbo+zookeeper 最简单的分布式搭建

朱雀 2022-04-14 02:37 314阅读 0赞

分布式架构:

1.当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,前端应用能更快速的响应多变的市场需求。
2.此时,用于提高业务复用及整合的 分布式服务框架(RPC) 是关键。

Dubbo 是什么

  • 一款分布式服务框架
  • 高性能和透明化的RPC远程服务调用方案
  • SOA服务治理方案

Dubbo 架构流程图

è¿éåå¾çæè¿°

provider就是服务提供方,consumer就是服务学校消费方,register就是注册中心,用于注册与发现服务。monitor就是统计服务调用次数和调用时间的监控中心

调用流程:

0.启动服务提供者。
1.服务提供者在启动时,向注册中心注册自己提供的服务。
2.服务消费者在启动时,向注册中心订阅自己所需的服务。
3.注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
4.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
5.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

注册中心
服务提供方:针对所提供的服务到注册中心发布。
服务消费方:到服务中心订阅所需的服务。
对于任何一方,不论服务提供方或者服务消费方都有可能同时兼具两种角色,即需要提供服务也需要消费服务。

上面是针对dubbo的原理的讲解。原文链接为:https://blog.csdn.net/hua1586981/article/details/79195111

接下来我们直接搭建:

(2)zookeeper的搭建:

(2.1)首先,我们肯定要先下载dubbo的服务注册中心,我们这里选择zookeeper,去官网下载 zookpeeper.

下载好解压后,打开conf文件夹,复制一份zoo_sample.cfg并重命名为zoo.cfg。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x3Z18xNTQwNjUyMzU4_size_16_color_FFFFFF_t_70

zookeeper会自动选择这个配置文件。这个文件里面的dataDir 和dataLogDir参数分别代表数据存储文件夹地址和日志存储地址,要修改可以在这里配置。

如果我们要启动这个zookeeper服务,进入bin文件夹,启动zkServer.cmd就行了。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x3Z18xNTQwNjUyMzU4_size_16_color_FFFFFF_t_70 1

(3)dubbo的搭建

如图,项目结构:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x3Z18xNTQwNjUyMzU4_size_16_color_FFFFFF_t_70 2

我这里总共有一个父级maven项目,三个子级别maven项目。

Dubbo_Consumer是服务消费者方

Dubbo_Provider是服务提供者方

Dubbo_Provider是服务提供方提供的服务接口项目。

(3.1)Dubbo_Provider的配置

Dubbo_Provider的pom.xml文件如下:主要依赖服务提供方提供的服务接口项目

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x3Z18xNTQwNjUyMzU4_size_16_color_FFFFFF_t_70 3

下面是它提供的服务:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x3Z18xNTQwNjUyMzU4_size_16_color_FFFFFF_t_70 4

Dubbo_Provider的用Spring配置声明服务 。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x3Z18xNTQwNjUyMzU4_size_16_color_FFFFFF_t_70 5

最后启动服务提供者(前提是启动了zookeeper注册中心,服务才能发布到这里):

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x3Z18xNTQwNjUyMzU4_size_16_color_FFFFFF_t_70 6

(3.2)Dubbo_Consumer的配置

dubbo_consumer服务消费方的pom.xml配置:

20181123131742339.png

dubbo_consumer服务消费方的spring配置

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x3Z18xNTQwNjUyMzU4_size_16_color_FFFFFF_t_70 7

然后启动服务消费方,并调用服务:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x3Z18xNTQwNjUyMzU4_size_16_color_FFFFFF_t_70 8

总结:他们的执行顺序:zookeeper –> dubbo_provider –> dubbo_consumer.

这些子项目都直接使用父项目的依赖,父项目的依赖为:

  1. <dependency>
  2. <groupId>org.springframework</groupId>
  3. <artifactId>xxxxx</artifactId>
  4. <version>xxx</version>
  5. </dependency>

。。。。。。。。(一些spring依赖,下面是dubbo+zookeeper开发的一些依赖)

  1. <!--在spring配置文件使用需要这个包-->
  2. <dependency>
  3. <groupId>com.alibaba</groupId>
  4. <artifactId>dubbo</artifactId>
  5. <version>2.5.3</version>
  6. </dependency>
  7. <!--zookeeper注册中心的导包-->
  8. <dependency>
  9. <groupId>com.github.sgroschupf</groupId>
  10. <artifactId>zkclient</artifactId>
  11. <version>0.1</version>
  12. </dependency>
  13. <dependency>
  14. <groupId>org.apache.zookeeper</groupId>
  15. <artifactId>zookeeper</artifactId>
  16. <version>3.4.7</version>
  17. </dependency>

(4)dubbo-admin的搭建

它是一个dubbo项目。用于提供可视化管理dubbo服务。

(4.1)首先得下载dubbo-admin.war。 链接:dubbo-admin.war下载地址 提取码:9a5i

(4.2)丢到tomcat下直接跑起来。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x3Z18xNTQwNjUyMzU4_size_16_color_FFFFFF_t_70 9

(4.3)我电脑tomcat端口为80,所以浏览器输入http://127.0.0.1:80/dubbo admin 2.5.4,然后出现下面:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x3Z18xNTQwNjUyMzU4_size_16_color_FFFFFF_t_70 10

记得,默认账号: root 密码:root

最终如下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x3Z18xNTQwNjUyMzU4_size_16_color_FFFFFF_t_70 11

赠言:为什么dubbo-admin可以查看到发布到zookeeper的服务呢?默认dubbi-admin配置如下:

20181123132603532.png

,所以dubbo-admin直接在这注册地址查看,你也可以修改为其他的。路径为dubbo-admin项目下的web-inf目录下的

dubbo.properties文件。

发表评论

表情:
评论列表 (有 0 条评论,314人围观)

还没有评论,来说两句吧...

相关阅读

    相关 java简单分布式架构

    一般来说,数据库的数据过多,查询效率就很慢,这时候我们如果把表分库到不同的数据库,这时候访问速度就会快很多,如果并且采用多线程去访问的话,查询速度也会提高的更快,我这里是运行内