基于Dubbo框架构建分布式服务(三)
我们将上面开发的服务提供方服务,部署到2个独立的节点上(192.168.14.1和10.10.4.125),然后可以通过Dubbo管理中心查看对应服务的状况,如图所示:
上图中可以看出,该服务有两个独立的节点可以提供,因为配置的集群模式为failover,如果某个节点的服务发生故障无法使用,则会自动透明地重试另一个节点上的服务,这样就不至于出现拒绝服务的情况。如果想要查看提供方某个节点上的服务详情,可以点击对应的IP:Port链接,示例如图所示:
上图可以看到服务地址
dubbo://10.10.4.125:20880/org.shirdrn.dubbo.api.ChatRoomOnlineUserCounterService?actives=100&anyhost=true&application=chatroom-cluster-provider&cluster=failover&dubbo=0.0.1-SNAPSHOT&executes=200&interface=org.shirdrn.dubbo.api.ChatRoomOnlineUserCounterService&loadbalance=random&methods=getMaxOnlineUserCount,queryRoomUserCount&pid=30942&queryRoomUserCount.actives=50&queryRoomUserCount.loadbalance=leastactive&queryRoomUserCount.retries=2&queryRoomUserCount.timeout=500&retries=2&revision=0.0.1-SNAPSHOT&side=provider&timeout=1000×tamp=1427793652814&version=1.0.0
如果我们直接暴露该地址也是可以的,不过这种直连的方式对服务消费方不是透明的,如果以后IP地址更换,也会影响调用方,所以最好是通过注册中心来隐蔽服务地址。同一个服务所部署在的多个节点上,也就对应对应着多个服务地址。另外,也可以对已经发布的服务进行控制,如修改访问控制、负载均衡相关配置内容等,可以通过上图中“消费者”查看服务消费方调用服务的情况,如图所示:
也在管理控制台可以对消费方进行管理控制。
●Dubbo监控中心
Dubbo监控中心是以Dubbo服务的形式发布到注册中心,和普通的服务时一样的。例如,我这里下载了Dubbo自带的简易监控中心文件dubbo-monitor-simple-2.5.3-assembly.tar.gz,可以解压缩以后,修改配置文件~/dubbo-monitor-simple-2.5.3/conf/dubbo.properties的内容,如下所示:
dubbo.container=log4j,spring,registry,jetty dubbo.application.name=simple-monitor dubbo.application.owner= dubbo.registry.address=zookeeper://zk1:2181?backup=zk2:2181,zk3:2181 dubbo.protocol.port=7070 dubbo.jetty.port=8087 dubbo.jetty.directory=${user.home}/monitor dubbo.charts.directory=${dubbo.jetty.directory}/charts dubbo.statistics.directory=${user.home}/monitor/statistics dubbo.log4j.file=logs/dubbo-monitor-simple.log dubbo.log4j.level=WARN
然后启动简易监控中心,执行如下命令:
cd ~/dubbo-monitor-simple-2.5.3 bin/start.sh
这里使用了Jetty Web容器,访问地址 http://10.10.4.130:8087/ 就可以查看监控中心,Applications选项卡页面包含了服务提供方和消费方的基本信息,如图所示:
上图主要列出了所有提供方发布的服务、消费方调用、服务依赖关系等内容。
接着,查看Services选项卡页面,包含了服务提供方提供的服务列表,如图所示:
点击上图中Providers链接就能看到服务提供方的基本信息,包括服务地址等,如图所示:
点击上图中Consumers链接就能看到服务消费方的基本信息,包括服务地址等,如图所示:
由于上面是Dubbo自带的一个简易监控中心,可能所展现的内容并不能满足我们的需要,所以可以根据需要开发自己的监控中心。Dubbo也提供了监控中心的扩展接口,如果想要实现自己的监控中心,可以实现接口com.alibaba.dubbo.monitor.MonitorFactory和com.alibaba.dubbo.monitor.Monitor,其中MonitorFactory接口定义如下所示:
/** * MonitorFactory. (SPI, Singleton, ThreadSafe) * * @author william.liangf */ @SPI("dubbo") public interface MonitorFactory {/*** Create monitor.* @param url* @return monitor*/@Adaptive("protocol")Monitor getMonitor(URL url);}
Monitor接口定义如下所示:
Monitor接口定义如下所示:
/** * Monitor. (SPI, Prototype, ThreadSafe) * * @see com.alibaba.dubbo.monitor.MonitorFactory#getMonitor(com.alibaba.dubbo.common.URL) * @author william.liangf */ public interface Monitor extends Node, MonitorService {}
具体定义内容可以查看MonitorService接口,不再累述。
总结
Dubbo还提供了其他很多高级特性,如路由规则、参数回调、服务分组、服务降级等等,而且很多特性在给出内置实现的基础上,还给出了扩展的接口,我们可以给出自定义的实现,非常方便而且强大。更多可以参考Dubbo官网用户手册和开发人员手册。
附录:Dubbo使用Maven构建依赖配置
<properties><spring.version>3.2.8.RELEASE</spring.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.5.3</version><exclusions><exclusion><groupId>org.springframework</groupId><artifactId>spring</artifactId></exclusion><exclusion><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId></exclusion><exclusion><groupId>org.jboss.netty</groupId><artifactId>netty</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.6.2</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.16</version></dependency><dependency><groupId>org.javassist</groupId><artifactId>javassist</artifactId><version>3.15.0-GA</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>hessian-lite</artifactId><version>3.2.1-fixed-2</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.1.8</version></dependency><dependency><groupId>org.jvnet.sorcerer</groupId><artifactId>sorcerer-javac</artifactId><version>0.8</version></dependency><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.5</version></dependency><dependency><groupId>com.github.sgroschupf</groupId><artifactId>zkclient</artifactId><version>0.1</version></dependency><dependency><groupId>org.jboss.netty</groupId><artifactId>netty</artifactId><version>3.2.7.Final</version></dependency></dependencies>
View Code
基于Dubbo框架构建分布式服务(三)相关推荐
- dubbo调用超时回滚_微服务痛点基于Dubbo + Seata的分布式事务(AT模式)
前言 Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务.Seata 将为用户提供了 AT.TCC.SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案. ...
- 从零开始实现基于go-zero框架的微服务电商项目(三)——gorm、redis、腾讯云SMS、validate、md5加密、日志输入到kafka的添加
从零开始实现基于go-zero框架的微服务电商项目(三)--gorm.redis.腾讯云SMS.validate.md5加密.日志输入到kafka的添加 项目地址:liuxianloveqiqi/Xi ...
- [译] 基于事件流构建的服务
[译] 基于事件流构建的服务 摘要:本文属于原创,欢迎转载,转载请保留出处:https://github.com/jasonGeng88/blog 原文:https://www.confluent.i ...
- React SSR: 基于 express 自构建 SSR 服务端渲染
React SSR: 基于 express 自构建 SSR 服务端渲染 文章目录 React SSR: 基于 express 自构建 SSR 服务端渲染 完整代码示例 前情提要 构建 CSR 项目 项 ...
- crow-han(基于go-micro框架的微服务脚手架)-01-快速启动(简介、快速启动、接口测试)
文章目录 1. 简介 1.1 包含内容 1.2 swagger展示 2. 快速启动 2.1 下载 2.2 环境变量配置 2.3 goland配置 2.5 启动 2.6 查看结果 3. swagger ...
- 5分钟实现SpringBoot整合Dubbo构建分布式服务
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:jaycekon cnblogs.com/jaycekon/ ...
- Micronaut教程:如何使用基于JVM的框架构建微服务
\ 本文要点 \\ Micronaut是一种基于jvm的现代化全栈框架,用于构建模块化且易于测试的微服务应用程序.\\t Micronaut提供完全的编译时.反射无关的依赖注入和AOP.\\t 该框架 ...
- java rpc框架 hsf_分布式服务框架HSF学习
转载:http://googi.iteye.com/blog/1884754 HSF提供的是分布式服务开发框架,taobao内部使用较多,总体来说其提供的功能及一些实现基础: 1.标准Service方 ...
- SpringBoot2.0 整合 Dubbo框架 ,实现RPC服务远程调用
一.Dubbo框架简介 1.框架依赖 图例说明: 1)图中小方块 Protocol, Cluster, Proxy, Service, Container, Registry, Monitor 代表层 ...
最新文章
- 一篇文章告诉你标准化和归一化的区别?
- leetcode前缀树java_LeetCode 实现 Trie (前缀树)
- VS 2008 中内存泄露检查
- Leetcode周赛5193. 删除字符使字符串变好
- 黑马day14 过滤器概述amp;生命周期amp;运行过程
- java基础-注解Annotation原理和用法
- sqlmap的使用----进阶
- POJ 3581 Sequence ——后缀数组 最小表示法
- C#中存储过程的调用
- Spring定时器-Cron表达式
- 1998-2018 TOM邮箱20年发展
- erp是企业内部最重要的使用程序,它对日常运作至关重要
- Geogebra拓扑学家的正弦曲线
- npm包发布正式和测试版
- 基于Pytorch实现猫狗分类
- 机器学习读书笔记之6 - 贝叶斯系列
- 如何在程序里写死一张图片(base64编码,OpenCV)
- 微信小程序解决跳转时携带参数乱码的问题 ?
- 两个数的最大公约数和最小公倍数的求法
- 车牌字符识别OCR算法评估
热门文章
- 搭建服务器Apache+PHP+MySql需要注意的问题
- PHP常用的正则表达式(有些需要调整)
- Oracle错误集!
- LeetCode—207. 课程表
- mysql内置的变量,MySQL服务器模式及相关内置变量
- 解决github无法访问的问题
- 安卓APP_ 布局(1)—— LinearLayout
- 全国计算机等级考试题库二级C操作题100套(第94套)
- 全国计算机等级考试题库二级C操作题100套(第12套)
- html5 txt文件上传,JavaScript html5利用FileReader实现上传功能