dubbo 学习初体验

最近由于工作需要学习了下dubbo,其实很早就想学习下这个RPC框架了,正好借这次机会搭了套环境玩了下。

主要按照下面几点来说说我的理解吧。

1.dubbo整体框架和原理

2.dubbo没有注册中心的demo

3.dubbo使用简单注册中心(即一个简单的dubbo服务作为注册中心)的demo

4.dubbo使用zookeeper作为注册中心的demo

5.dubbo admin管理dubbo服务的一个war服务

6.dubbo monitor 展示监控dubbo服务数据的war服务

1.dubbo整体环境和原理

这块主要参照官网的说法来理解。


 

节点角色说明:

  • Provider: 暴露服务的服务提供方。
  • Consumer: 调用远程服务的服务消费方。
  • Registry: 服务注册与发现的注册中心。
  • Monitor: 统计服务的调用次调和调用时间的监控中心。
  • Container: 服务运行容器。

调用关系说明:

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

下面是我基于注册中心角度来理解的整体架构



 

2.dubbo没有注册中心的demo

这块主要是参照官网的demo,直接贴下代码好了。

3.dubbo使用简单注册中心(即一个简单的dubbo服务作为注册中心)的demo

这块主要也是参照官网的demo,直接贴下代码好了。

4.dubbo使用zookeeper作为注册中心的demo

   这块涉及到zookeeper的搭建,我搭建的是单个节点,比较简单。后面会单独写篇文章介绍下zookeeper的单节点搭建和集群搭建,后面这里再补充个链接吧。过程中遇到个一个问题zookeeper搭建起来了,但是在dubbo-admin的war服务里面一直找不到注册的服务。后面经过排查发现,原来是服务没有注册上,根本的原因是我本地telnet虚拟机的zookeeper服务telnet不通,别的端口如21是通的,后来确定是防火墙的问题。使用下面的命令关闭防火墙即可 /etc/init.d/iptables stop。

5.dubbo admin管理dubbo服务的一个war服务

   官网上这个包下载不了我是在别的网站上下载的,搭建也很简单,只需要修改conf/dubbo.properties配置文件里面的注册中心地址,启动个tomcat服务即可。启动过程中遇到了set什么方法的问题,谷歌了下说是jdk版本的问题,我从1.8切换到1.7果然问题解决,尼玛这是不兼容嘛。界面还是比较简单了,点点就知道是咋回事了。

6.dubbo monitor 展示监控dubbo服务数据的war服务

   这块我只是搭建了个官网提供了的简易版的监控服务,不过官网也下载不了,别的网站上搜搜吧,肯定有。同样只需要修改conf/dubbo.properties配置文件里面的注册中心地址。这块我还是比较感兴趣的,就大体的了解了下流程。

   a) 配置filter <dubbo:provider> --> fiter服务提供方远程调用过程拦截器名称,多个名称用逗号分隔

   b) provider和consumer服务调用时候会到我们注册filter里面,调用服务结束后的时候,会将调用的结果、状态等数据发送给监控服务。

   c) 监控服务会起定时任务针对这些数据绘制图表,同时订阅注册中心的服务拿到服务列表信息

   d) 监控服务的web容器界面展示服务列表信息和服务的调用数据。

总结:自己动手搭建个环境还是挺有意思的,能够对整理有个大概的把握,同时能够激起自己的兴趣,光看别人说说感觉好像自己懂了,其实很快就忘记了,同时这中间也少了很多乐趣,加油2016!

 

猜你喜欢

转载自labreeze.iteye.com/blog/2273536