为什么80%的码农都做不了架构师?>>>
编者注
做架构师需要学习微服务,个人认为thrift很好,但是还是需要像dubbo这样的服务治理,在结合zookeeper的服务注册中心。才能够详尽了解整体服务发生的问题所在。学习dubbo,看到N年没有更新。随即发现dubbox,已经各种把版本升级了。扫了下代码,鉴于被大家已经实施过,强壮型是OK的。但是教程总是语焉不详。在自己测试的时候进行详细描述。
Dubbo
Dubbo官网
DUBBO官网
Dubbo简介
DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。(编者注:由于和阿里的企业级服务治理项目冲突,虽然开源但无官方支持)
Dubbo文档
dubbo用户手册
Dubbox
Dubbox官网
Dubbox-Git
Dubbox简介
Dubbox是Dubbo的扩展。把旧的库进行了升级,并提供了一些新的特性。详细见dubbox-oschina
基础概念
详细画图见链接 http://note.youdao.com/noteshare?id=3acfb50049e6845622db7f1cac688464
graph TDA[Provider]B[Registry]C[Consumer]D[Monitor]A -->|1.register| BC -->|2.subscribe| BB -->|3.notify| CC -->|4.invoke| AC --> |5.count| DA --> |5.count| D
首先我们需要了解这些内容的概念
所有节点和角色
Provider:服务提供者,启动服务后,向注册中心进行注册。
Consumer:服务消费者,启动后向,向注册中心获取服务提供者的列表。
Registry:注册中心。
Monitor:监控中心。
Container:服务运行容器。可以是VM也可以是docker
关系描述
第一步,首先需要的是启动注册中心,dubbo支持zookeeper、redis等注册中心。
第二步,需要启动监控中心,监控中心会向注册中心进行注册,告诉注册中心自己存在的位置。
第三步,需要启动服务提供者,服务提供者首先向注册中心进行服务注册,告诉注册中心自己在哪里。并且通过服务提供者获取监控中心的,每分钟给监控中心返回服务使用次数。
第四步,启动服务消费者,服务消费者首先向注册中心或者服务提供者的列表,并且通过服务注册中心获取的监控中心,每分钟给监控中心返回调用服务的使用时长。
其他过程请看dubbo的文档。
实施
参考:http://doc.okbase.net/congcong68/archive/112508.html
启动注册中心
Dubbo默认推荐的就是ZooKeeper,而Dubbox也同样推荐ZooKeeper作为注册中心。ZooKeeper的安装配置详细见https://my.oschina.net/hava/blog/862955
编译Dubbox
下载Dubbox
前提:需要安装java、git和maven
git clone https://github.com/dangdangdotcom/dubbox
进入dubbox目录编译
mvn install -Dmaven.test.skip=true
或者使用idea,build该项目
dubbo-admin
进入目录获取war包dubbox/dubbo-admin/target/dubbo-admin-2.8.4.war
,部署到tomcat中就可以启动。注意在启动前,需要修改webapps/dubbo-admin-2.8.4/WEB-INF/dubbo.properties
[root@localhost WEB-INF]# cat dubbo.properties
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest
需要修改zookeeper的IP地址,如果不修改zookeeper地址,会导致无法启动应用。
还需要修改第二行的root账户的密码,防止无关用户进入修改
[root@localhost WEB-INF]# cat dubbo.properties
dubbo.registry.address=zookeeper://192.168.1.156:2181
dubbo.admin.root.password=xxx
dubbo.admin.guest.password=guest
访问时,会询问dubbo-admin的管理用户,默认用户名密码为root,注意修改。
但是当前的系统里是没有任何信息的,需要进行以下步骤。
运行
注意,在运行时发现dubbo-admin的log非常多,需要进行独立管理。建议使用yum安装的tomcat,直接具有根据日期所划分的日志。
dubbo-monitor
这里有两个监控中心,一个是dubbox自带的监控中心,一个是由韩都衣舍编写的dubbo-monitor。
dubbo-simple-monitor
该内容在dubbox源代码dubbox/dubbo-simple/dubbo-simple-monitor。由于两年没有更新,并且dubbo-monitor的UI更友善,编者选择dubbo-monitor
dubbo-monitor
dubbo-monitor
介绍
Dubbo Monitor是针对Dubbo开发的监控系统,基于dubbo-monitor-simple改进而成,可以理解为其演化版本。该系统用关系型数据库(MySQL)记录日志的方式替代了dubbo-monitor-simple写文件的方式。注:亦可改为其他Relational Database(关系型数据库)。
PS: 项目目前依赖的是dubbox的2.8.4版本,但是dubbox并没有修改过监控相关的代码,因此理论上也可以支持dubbo的最新版本。
编者注:由于dubbo-monitor数据是存放到数据库当中,并且打包成war,部署到tomcat等容器。可以对容器进行管理,大大提高了对monitor本身的管理便捷度。
下载dubbo-monitor
git clone https://git.oschina.net/handu/dubbo-monitor.git
编译
mvn install -Dmaven.test.skip=true
生成后,可以在dubbo-monitor/target/dubbo-monitor.war
查看到生成的war
修改配置并运行
详细配置见git,访问url,根据配置文件所配置的用户密码,输入
http://192.168.1.162:8080/dubbo-monitor
我们可以看到下图,dobbo-monitor已经把自己注册成了服务
可以在dubbo-admin看到monitor被注册