当前位置: 首页 > 科技观察

一起来玩玩Dubbo,先开始吧

时间:2023-03-15 14:57:41 科技观察

本文转载自微信公众号《番话编程》,作者粥雪。转载本文请联系番摊编程公众号。先说说为什么玩dubbo的大前提。我们公司的游戏一直都是单服模式。随着游戏生命周期的延长,未来还会有多种跨服功能。以前跨服功能的开发,都得基于netty。通过跨服务器协议通知远程服务器触发相应逻辑,基本的跨服务器功能开发耗时是本地服务器功能开发的3倍左右,开发效率相对较低。为了解决跨服务器功能开发效率低的问题,最近受命搞RPC和面向服务,于是研究了dubbo,基本上dubbo里里外外,熟悉了。公司的项目RPC和面向服务的基础做的差不多了。如果我没猜错的话,后续就是和同事分享dubbo的外观和内部。无论如何,我想分享它。我会先写一个教程,然后我可以直接发给他们。因为dubbo框架比较大,所以打算写一个系列。想学习dubbo的可以关注我。以后再扩展讲讲我们公司基础框架的RPC和服务设计。如果有兴趣一起讨论,也可以联系我。让我告诉你一件有趣的事。刚接触dubbo的时候读音是dubbo。还和同事争吵过,最后查了一下,发现是大波。本文为dubbo的第一篇文章。首先,我会教你如何运行dubbo。不要认为这只是一个简单的启动。步骤还是很多的,包括启动注册中心,后台启动等步骤。有兴趣学习dubbo的,就跟着学吧。让我们玩!dubbo的结构是怎样的?Provider:暴露服务的服务提供者,其实就是提供服务的服务。Consumer:调用远程服务的服务消费者,即服务的调用者。Registry:服务注册和发现的注册中心,是服务的调用者和注册者之间的沟通通道,Monitor:统计服务调用频率和调用时间的监控中心。Container:服务容器,这个概念其实不用抽出来。简单来说就是调用关系:服务容器负责启动、加载、运行服务提供者。当服务提供者启动时,它向注册中心注册它提供的服务。当服务消费者启动时,它向注册中心订阅它需要的服务。注册中心将服务提供者地址列表返回给消费者。如果有变化,注册中心会基于长连接将变化数据推送给消费者。服务消费者根据负载均衡算法从提供者地址列表中选择一个提供者进行调用。服务消费者和提供者在内存中累积调用次数和调用时间,并定期向监控中心发送统计数据。运行注册中心什么是Zookeeper?注册中心有很多种。这里选择Zookeeper,大致介绍一下Zookeeper。它是一个分布式的、开源的分布式应用协调服务,是Google的Chubby的开源实现。它是Hadoop和Hbase的重要组成部分。作为一款为分布式应用提供一致服务的软件,提供的功能包括:配置维护、命名服务、分布式同步、群组服务等。Zookeeper注册中心可以自动删除提供者信息,当提供者重启时,可以自动恢复注册数据。部署Zookeeper第一步:官网可以下载:http://www.apache.org/dyn/closer.cgi/zookeeper/第二步:下载后解压。Zookeeper的配置文件在conf目录下,包括zoo_sample.cfg和log4j。properties,将zoo_sample.cfg重命名为zoo.cfg,因为Zookeeper启动时会发现这个文件是默认的配置文件。下面说一下zoo.cfg文件中几个重要的配置。tickTime:这个时间作为Zookeeper服务器之间或者客户端与服务器之间保持心跳的时间间隔,即每tickTime发送一个心跳。dataDir:顾名思义,就是Zookeeper保存数据的目录。默认情况下,Zookeeper也会将写入数据的日志文件保存在该目录下。clientPort:该端口是客户端连接Zookeeper服务器的端口。Zookeeper会监听这个端口,接受客户端的访问请求。第三步:运行Zookeeper,启动Zookeeper目录下bin下的zkServer.cmd,启动后保持打开状态,不要关闭这个cmd,记得在dubbo消费者和提供者运行之前启动Zookeeper。运行成功后,会像这样运行管理后台。什么是dubbo-admin?dubbo-admin是dubbo框架的管理后台。可以管理注册的服务(provider)和服务调用者(comsumer),包括路由、监听、Configuration等功能;dubbo一般使用Zookeeper注册管理服务,dubbo-admin检查注册了哪些服务,因为检查服务需要向Zookeeper查询,所以dubbo-admin需要依赖Zookeeper;安装dubbo-admin步骤一:下载dubbo-admin项目源码,地址为https://github.com/apache/dubbo-admin步骤二:使用idea打开项目,启动入口类步骤三:启动后,默认访问http://localhost:7001账号和密码都输入root进入,最后看到管理页面。运行dubbo服务第一步:从github上克隆项目源码https://github.com/apache/dubbo到本地使用Idea导入源码,并切换到3.0版本安装各种依赖步骤二:看dubbo-demo模块,直接看xml模块,提供consumer和provider的测试用例。在xml模块中,在consumer和provider模块的resources下有一个xml配置,描述了服务暴露和服务订阅的细节。服务注册者和服务订阅者直接启动对应的Application。启动成功后,应该可以看到RPC相关调用的日志。启动provider启动subscriber通过程序可以看到subscriber一直在调用provider的服务第三步:查看admin后台,可以看到admin后台有相关记录,这时候我们可以使用admin后台管理服务。综上所述,目前dubbo是这样运行的。相信看完之后你心里会有几个疑问,订阅者如何找到注册者,admin后台修改后如何通知订阅者和注册者,订阅者是怎样的。实现远程方法调用的小伙伴不要着急,跟我来。下一篇将从源码入手分析dubbo,一一解开你的疑惑。