Docker下dubbo开发,三部曲之一:极速体验

DUBBO是一个分布式服务框架,从本章开始,我们由浅入深,先体验再实战,逐步入门dubbo服务的开发、部署和调用,本章的目标是以最快的速度体验dubbo服务;

启动容器

创建一个docker-compose.yml文件,内容如下:

version: '2'
services:
  zk_server: 
    image: daocloud.io/library/zookeeper:3.3.6
    restart: always
  dubbo_admin: 
    image: bolingcavalry/dubbo_admin_tomcat:0.0.1
    links: 
      - zk_server:zkhost
    depends_on:
          - "zk_server"
    ports: 
      - "8080:8080"
    restart: always
  dubbo_provider: 
    image: bolingcavalry/dubbo_provider_tomcat:0.0.1
    links: 
      - zk_server:zkhost
    depends_on:
          - "dubbo_admin"
    environment:
      TOMCAT_SERVER_ID: dubbo_provider_tomcat
    restart: always
  dubbo_consumer: 
    image: bolingcavalry/online_deploy_tomcat:0.0.1
    ports: 
      - "8082:8080"
    environment:
      TOMCAT_SERVER_ID: dubbo_consumer_tomcat
    restart: always

然后用命令行在docker-compose.yml所在的目录下执行命令docker-compose up -d,启动yml文件中定义的四个容器,如下图:

容器启动成功,开始体验吧,在本机浏览器输入地址”http://localhost:8080“,会弹出登录页面,如下图,输入用户名root,密码也是root:

登录成功后,在“服务治理“菜单下点击“应用“,如下图:

可以看到如下图的列表,有一个应用被dubbo发现:dubbo_service_provider,是服务提供者:

点击上图中的dubbo_service_provider,可以看到这个应用提供了两个服务,如下图:

部署服务消费者demo

接下来我们部署一个web应用来调用dubbo_provider提供的服务,部署分三步: 1. 确定zookeeper的ip; 2. 把zookeeeper的ip填入web应用的配置信息中; 3. 把web应用部署到docker容器16_dubbo_consumer_1中(执行docker-compose up -d命令时创建的容器);

先确定zookeeper的ip,前面执行docker-compose up -d的时候,控制台提示zookeeper容器的名称是16_zk_server_1,因此执行以下命令可看zookeeper容器ip:

docker exec -it 16_zk_server_1 ip a

如下图,ip是172.28.0.4

接下来下载web应用的源码,地址是git@github.com:zq2599/blog_demos.git,执行git clone git@github.com:zq2599/blog_demos.git即可,这个地址下载的是多个工程,本次实战用到的是dubbo_service_consumer工程,如下图红框所示:

不想用github的读者也可以点击这里直接下载压缩包;

下载源码后,在dubbo_service_consumer/src/main/resources目录下,打开spring-extends.xml文件,修改下图红框中的ip,改成172.28.0.4:

打开控制台,在dubbo_service_consumer目录下执行以下命令开始 编译、打包、部署:

mvn clean package -U -Dmaven.test.skip=true tomcat7:redeploy

从控制台上可以看到在线部署的情况,如下图:

验证远程调用

部署完成,可以测试了,测试的逻辑是在dubbo_consumer容器上的jsp页面发请求,对应的后台会远程调用dubbo_provider容器里的应用提供的RPC服务,也就是之前截图中看到的com.bolingcavalry.service.CalculateService和com.bolingcavalry.service.PlatformService这两个服务;

在浏览器输入http://localhost:8082/dubboserviceconsumer/add,可以看到一个简单的页面如下图:

在两个输入框随便填数字,提交后页面展示如下图:

这里的计算结果,就是调用dubbo_provider容器提供的CalculateService服务执行的结果,“来自[dubbo_provider_tomcat]“这句话中的”dubbo_provider_tomcat”则是PlatformService服务提供的(“dubbo_provider_tomcat“是dubbo_provider容器的环境变量,docker-compose.yml中设置的),都是dubbo_consumer容器中的应用远程调用服务的结果;

留下疑问

以上就是dubbo服务的体验过程,看完本文,您是否会有这样的疑惑:dubbo_provider的部署很简单,把war包和tomcat做成一个镜像就能通过docker-compose直接创建容器了,但dubbo_consumer为何要如此麻烦,自己下载源码、改参数、编译、部署,为什么不能像dubbo_provider那样直接做成镜像,那样的话体验起来不是更简单快捷么?

这的确是个问题,后面我会继续写文章和大家一起讨论,就不在本文展开了,本文的目的很简单,就是和大家一起体验一下dubbo环境和远程调用服务;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏破晓之歌

前端页面可视化开发-livestyle,livereload,browser-sync

本质是监控文件修改,实时刷新浏览器,需要安装livereload插件和node.js插件,全局刷新

662
来自专栏左瞅瞅,右瞅瞅

ELK的上线之路(*):—— Logstash不断实践中...

1493
来自专栏用户2442861的专栏

win10MySQL数据库安装与配置详解

  下载地址:http://rj.baidu.com/soft/detail/12585.html?ald

721
来自专栏杂烩

hadoop集群配置之hadoop安装部署 原

需要先对linux系统做一些优化,编辑/etc/security/limits.conf 

685
来自专栏云计算教程系列

如何在CentOS 7上设置Apache虚拟主机

Apache Web服务器是在Internet上提供Web内容的最常用方式,将其功能和组件分解为可单独定制和配置的单个单元。描述单个站点或域的基本单元称为虚拟主...

1804
来自专栏Java后端生活

Linux(二十四)使用ssh远程登录Ubuntu

1839
来自专栏小二的折腾日记

简单脚本git一键提交代码

对于这种简单的步骤,我们每天都会重复无数次,所以巨懒如我就干脆搞个小脚本,直接点一下就提交了。。

531
来自专栏Java成神之路

Git_学习_07_ 推送修改到远端

543
来自专栏云计算教程系列

如何在Ubuntu系统上安装Git

版本控制系统在现代软件开发中越来越不可或缺,因为版本控制系统允许您在源代码级别跟踪代码状态。您可以跟踪更改,甚至还原到以前的状态,然后创建分支及相关文件和目录的...

3199
来自专栏逸鹏说道

安装和搭建基于netcore的demo

系统CentOS安装:   网上很多教程,很详细,我就不再赘述了。在安装过程中,需要注意的是设置时区、个人账户密码、root密码(一定要注意,否则后续很麻烦)、...

3479

扫码关注云+社区