一起玩Dubbo,先入个门

开发 架构
因为dubbo框架比较大,所以打算写成一个系列,想学dubbo的可以关注我,后续应该会拓展讲讲我们公司基础框架的RPC和服务化的设计,有兴趣讨论的也可以找我。

 [[399195]]

本文转载自微信公众号「饭谈编程」,作者稀饭下雪。转载本文请联系饭谈编程公众号。

为啥玩dubbo

先说个大前提,我们公司的游戏一直是单服模式,随着游戏生命周期的延伸,后续都会出现多种跨服功能,在以前,跨服功能的开发都得基于netty,通过跨服协议通知到远程服触发相应逻辑,基本跨服功能开发所占用的时长是本服功能开发的三倍左右,开发效率是比较低的。

为了解决跨服功能开发效率低的问题,我最近奉命搞RPC和服务化,所以研究了下dubbo,基本上是将dubbo里里外外艹了一遍,比较熟悉了,公司项目RPC和服务化的基础也搭的差不多了,没猜错的话,后续就是给同事们分享下dubbo的表和里,反正也是要分享的, 先写个教程先好了,到时候可以直接发给他们看。

因为dubbo框架比较大,所以打算写成一个系列,想学dubbo的可以关注我,后续应该会拓展讲讲我们公司基础框架的RPC和服务化的设计,有兴趣讨论的也可以找我。

说个好笑的事情,刚开始接触dubbo的时候,发音都是嘟波,还和同事们争执了下,最终查了下,发现是达波。

该篇文章是dubbo文章的第一篇,先教大家将dubbo跑起来,别以为只是启动那么简单,还是挺多步骤的,包括启动注册中心、后台启动等多个步骤,有兴趣学dubbo的跟着玩起来吧!

dubbo结构如何

 

Provider: 暴露服务的服务提供方,其实就是一个提供了服务的服。

Consumer: 调用远程服务的服务消费方,也就是服务的调用方。

Registry: 服务注册与发现的注册中心,服务的调用方和注册方沟通的渠道、

Monitor: 统计服务的调用次调和调用时间的监控中心。

Container: 服务容器,其实没必要抽出的概念。

简单说下调用关系:

  • 服务容器负责启动,加载,运行服务提供者。
  • 服务提供者在启动时,向注册中心注册自己提供的服务。
  • 服务消费者在启动时,向注册中心订阅自己所需的服务。
  • 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
  • 服务消费者,从提供者地址列表中,基于负载均衡算法,选一台提供者进行调用。
  • 服务消费者和提供者,在内存中累计调用次数和调用时间,定时发送统计数据到监控中心。

将注册中心跑起来

Zookeeper是啥

注册中心有多种,这里选择了Zookeeper,大概描述下Zookeeper,它是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。

作为一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。

Zookeeper注册中心能自动删除提供者信息,当提供者重启时,能自动恢复注册数据。

部署Zookeeper

步骤1:

官网可下载:http://www.apache.org/dyn/closer.cgi/zookeeper/

步骤2:

下载后解压,Zookeeper 的配置文件在 conf 目录下,有 zoo_sample.cfg 和 log4j.properties,将zoo_sample.cfg 重命名成zoo.cfg,因为 Zookeeper 在启动时会找这个文件作为默认配置文件。

说说zoo.cfg文件里面几个重要的配置

  • tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
  • dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
  • clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。

步骤3:

运行Zookeeper ,启动Zookeeper目录下bin下的zkServer.cmd

启动之后一直开着,不要关掉这个cmd,记得要在dubbo消费者和提供者运行之前就开启Zookeeper。

运行成功后是这样的

将管理后台跑起来

dubbo-admin是啥

dubbo-admin是dubbo框架的管理后台,可以对注册的服务(provider)和服务调用方(comsumer)进行服务治理,包括路由、监控、配置等功能;

dubbo一般都是使用Zookeeper来进行管理服务注册,而dubbo-admin查看注册了哪些服务,因为查看服务需要从Zookeeper上查询的,所以dubbo-admin需要依赖于Zookeeper;

安装dubbo-admin

步骤1:

下载dubbo-admin工程源码,地址 https://github.com/apache/dubbo-admin

步骤2:

使用idea打开该工程,启动入口类

步骤3:

启动后,默认访问 http://localhost:7001/

账号和密码都输入root即可进入

最终可以看到该管理页面。

将dubbo服务跑起来

步骤1:

从github上clone工程源码 https://github.com/apache/dubbo 到本地

使用Idea导入源码,并切换到3.0版本

安装下各种依赖

步骤2:

看dubbo-demo模块,直接看xml模块,内部提供了consumer和provider的测试用例

xml模块中,consumer和provider模块中resources底下都有个xml配置,描述了服务暴露和服务订阅的相关详情。

服务注册方

服务订阅方

直接启动对应的Application,启动成功后应该可以看到RPC相关调用的日志了。

启动提供方

启动订阅方

通过程序可以看出,在订阅方一直不断的去调用提供方的服务

步骤3:

查看admin后台,可以看到

admin后台已经有了相关记录,这个时候我们便可以通过admin后台进行服务的治理了。

总结

dubbo目前就这样跑起来了,相信看完应该都会心里留了几个疑问,比如订阅方是怎么找到注册方的,admin后台修改后怎么通知到订阅方和注册方的,订阅方又是如何实现远程方法调用的,别急,关注我,下篇文章将从源码分析dubbo,为你解开一个个疑惑。

责任编辑:武晓燕 来源: 饭谈编程
相关推荐

2021-07-19 07:31:08

服务调用Dubbo

2021-06-01 08:29:08

dubbo线程池服务暴露

2021-08-27 07:06:09

DubboDocker技术

2023-06-28 07:49:02

2012-11-08 17:33:53

智慧云

2013-11-21 10:52:34

NVIDIAIBM超级计算机

2021-10-20 16:13:05

鸿蒙HarmonyOS应用

2011-09-07 22:59:07

联想一体机

2012-06-01 10:39:06

天翼空间Windows Pho

2023-04-11 07:48:32

WebGLCanvas

2015-11-12 10:23:35

5G物联网

2022-11-29 16:35:02

Tetris鸿蒙

2022-12-02 14:20:09

Tetris鸿蒙

2012-05-14 09:04:05

诺基亚Lumia

2022-09-27 16:03:51

羊了个羊鸿蒙

2023-03-30 09:32:27

2014-10-21 15:07:04

2022-11-14 17:01:34

游戏开发画布功能

2016-06-16 16:34:05

VR

2021-10-27 06:49:34

线程池Core函数
点赞
收藏

51CTO技术栈公众号