分布式服务治理框架dubbo
Dubbo最主要功能有两个
1 RPC调用
2 SOA服务治理方案
Dubbo的架构

Dubbo常见的注册中心有2中,zookeeper以及redis
这篇文章讲解的是采用的zookeeper,要求读者对zookeeper有一定的认识。
http://www.cnblogs.com/javabigdata/p/7491116.html zookeeper相关知识看这里
服务的提供者Provider将服务注册到Registry,
消费者Consumer需要从Registry中发现、监听到服务的变动
Provider需要运行在Container容器中
Monitor(监控中心) 主要是用来对服务的调用次数统计等。
以下主要是一个快速入门,怎么使用dubbo
我们需要创建多个项目
Provider (服务提供者) 包括实现类 一个项目,接口定义为一个项目
Consumer (服务消费者) 一个项目
这里我定义一个公用的pom项目来对maven依赖做一个统一的管理
整体项目采用maven构建,使用dubbox (2.8.4) ,并提供源码下载
======================================================================
test-parent (pom项目)主要定义jar版本信息

======================================================================
服务提供者接口定义(所谓的发布服务,就是将接口对外暴露,生产者和消费者都是需要引用接口的,所以在这里接口将在test-facade中提供)

这个项目主要是定义接口
主要代码如下
@Path("/userTestService")
@Consumes({ MediaType.APPLICATION_JSON, MediaType.TEXT_XML })
@Produces({ ContentType.APPLICATION_JSON_UTF_8, ContentType.TEXT_XML_UTF_8 })
public interface IUserTestService {
@GET
User getUserTest();
@GET
@Path("/testGet")
public void testget();
}
注解代码说明:
@Path:代表服务的访问路径,如“user”,则访问路径为domain:port/context/user,在方法上注解是相对类上面的。依次展开路径即可。
@POST:服务请求的方式,支持POST、GET等。
@Consumes:表示将接收到的数据自动转换为什么格式的,支持json和xml。
@Produces:表示将结果返回时候输出为什么格式的,支持json和xml。
======================================================================
服务接口实现(一般来说,服务提供者我们使用注解开发)

部分代码如下
@Service
@com.alibaba.dubbo.config.annotation.Service(interfaceClass = com.cc.facade.IUserTestService.class, protocol = { "rest",
"dubbo" })
public class UserServImpl implements IUserTestService {
@Override
public User getUserTest() {
User user = new User();
user.setId(1);
user.setName("cc");
return user;
} @Override
public void testGet() {
System.out.println("test=get");
}
}
解释:
@com.alibaba.dubbo.config.annotation.Service 表示将该服务注册到dubbo上
dubbo-provider.xml 文件内容如下 ,
<!-- 引入配置文件 -->
<context:property-placeholder location="classpath:config.properties" /> <dubbo:application name="${dubbox.application}"
owner="programmer" organization="dubbox" /> <!-- zookeeper注册中心 -->
<dubbo:registry address="${dubbox.registry.address}"
timeout="100000" />
<!- dubbo service自动扫描 -->
<dubbo:annotation package="com" /> <!-- kryo实现序列化 -->
<dubbo:protocol name="dubbo" host="192.168.1.7" port="20883"
serialization="kryo" optimizer="com.cc.serial.SerializationOptimizerImpl" /> <!-- 发布rest服务 -->
<dubbo:protocol name="rest" host="192.168.1.7" server="${dubbox.rest.server}"
port="${dubbox.rest.port}" contextpath="${dubbox.rest.contextpath}"
threads="${dubbox.rest.threads}" accepts="${dubbox.rest.accepts}" />
</beans>
======================================================================
服务消费者(一般使用xml配置)

dubbo-provider.xml配置文件如下
<!-- 引入配置文件 -->
<context:property-placeholder location="classpath:config.properties" /> <!-- 消费服务名称 -->
<dubbo:application name="${dubbox.application}"
owner="programmer" organization="dubbox" /> <!-- zookeeper注册中心 zookeeper://192.168.1.111:2181 -->
<dubbo:registry address="${dubbox.registry.address}"
timeout="30000" /> <!-- 扫描dubbox注解位置 -->
<dubbo:annotation package="com.cc" /> <!-- kryo实现序列化 -->
<dubbo:protocol name="dubbo" serialization="kryo"
optimizer="com.cc.serial.SerializationOptimizerImpl" /> <!-- 生成远程服务接口配置 -->
<dubbo:reference interface="com.cc.facade.IUserTestService"
id="testFacade" /> </beans>
最后,我们先运行
test-service/src/test/java/ProviderTest.java 的main方法,注册服务到zookeeper上
接着运行
test-consumer/src/test/java/ConsumerTest.java 的main方法
可以看到控制台打印

源码下载:https://pan.baidu.com/s/1KdUDjJZdmftsdXW4iQoGZA
注意:
1导入源码的时候注意修改zookeeper地址
2 dubbox并没有发布到maven中央仓库的包,目前代码在github上,需要自己down下来编译,基于maven开发的。
项目GitHub地址:https://github.com/dangdangdotcom/dubbox
好了,快速入门到这里就结束了,更多细节请看 dubbo官方用户手册。
http://dubbo.io/books/dubbo-user-book/
分布式服务治理框架dubbo的更多相关文章
- 分布式服务治理框架Dubbo的前世今生及应用实战
Dubbo的出现背景 Dubbo从开源到现在,已经出现了接近10年时间,在国内各大企业被广泛应用. 它到底有什么魔力值得大家去追捧呢?本篇文章给大家做一个详细的说明. 大规模服务化对于服务治理的要求 ...
- 服务治理框架dubbo中zookeeper的使用
Zookeeper提供了一套很好的分布式集群管理的机制,就是它这猴子那个几月层次型的目录树的数据结构,并对书中的节点进行有效的管理,从而可以设计出多种多样的分布式的数据管理模型:下面简要介绍下zook ...
- Java框架Spring Boot & 服务治理框架Dubbo & 应用容器引擎Docker 实现微服务发布
微服务系统架构实践 开发语言Java 8 框架使用Spring boot 服务治理框架Dubbo 容器部署Docker 持续集成Gitlab CI 持续部署Piplin 注册中心Zookeeper 服 ...
- 个人学习分布式专题(二)分布式服务治理之Dubbo框架
目录 Dubbo框架 1.1 Dubbo是什么 1.2 Dubbo企业级应用示例(略) 1.3 Dubbo实现原理及架构剖析 1.4 Dubbo+Spring集成 Dubbo框架 1.1 Dubbo是 ...
- 美团分布式服务通信框架及服务治理系统OCTO
一.什么是OCTO 定义: OCTO是美团的分布式服务通信框架及服务治理系统,属于公司级基础设施,目前尚未开源. 目标: 为公司所有业务提供统一的服务通信框架,使业务具备良好的服务运营能力,轻松实现 ...
- java使用netty模拟实现一个类dubbo的分布式服务调用框架
本文较长,如果想直接看代码可以查看项目源码地址: https://github.com/hetutu5238/rpc-demo.git 要想实现分布式服务调用框架,我们需要了解分布式服务一般需要的功能 ...
- 美团 OCTO 分布式服务治理系统
OCTO 是美团千亿调用量的分布式服务通信框架及服务治理的系统,可实现服务注册.服务自动发现.服务管理.容错处理.数据可视化.服务监控报警.服务分组等.本文总结了 OCTO 架构原理.Java 应用的 ...
- 服务治理框架:Spring Cloud Eureka
最近在学习Spring Cloud的知识,现将服务治理框架 Spring Cloud Eureka 的相关知识笔记整理如下.[采用 oneNote格式排版]
- 京东云入选2019年度TOP100全球软件案例 新一代服务治理框架加速行业落地
11月14日-17日, 2019TOP100全球软件案例研究峰会(TOP100summit)在北京国家会议中心举办.Top100summit是科技界一年一度的案例研究峰会,每年会秉承"从用户 ...
随机推荐
- stm32 HAL库笔记(零)
最近在设计四旋翼飞行器,用stm32f407,有三种开发方式可以选择:一.寄存器开发.二:库函数开发.三:HAL库开发,考虑了一下,选择了HAL库,原因如下: 1. 寄存器开发相对较慢,寄存器很多,配 ...
- 模块(modue)和包(package)的概念-import导入模块
模块 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较 ...
- mysql for循环存储过程
DROP PROCEDURE IF EXISTS test_insert; DELIMITER ;; CREATE PROCEDURE test_insert () BEGIN DECLARE i i ...
- ubuntu16下安装openssh
由于SecureCRT.xshell远程连接ubuntu是通过ssh协议的,所以,需要给ubuntu安装ssh服务器. 1. ssh协议科普 Secure Shell(缩写为SSH),由IETF的网络 ...
- 编译安装redis4.0
下载redis4.0的安装包:http://download.redis.io/releases/redis-4.0.11.tar.gz 这里用的是已经下载到电脑上,只需上传即可 解压缩 [root@ ...
- 转码器ffmpeg安装
网络上很多帖子 但是基本上都是没有验证过复制粘贴的 以下是我自己装时流程和网络上的差不多但是中间不通的地方已经改正 centos7 1. 安装autoconf cd /App/srcwget http ...
- Arcmap 空间连接,在通过面包含面的空间关系做属性关联的时候,发生关联冗余的问题。
处理过程: (1)用 空间关联 工具实现 面与面的 空间和属性关联. (2) 问题描述: 一个子面要素对应多个父面要素,出现数据冗余. 问题根源: 解决办法: 取子面要素的 中心点,在用中心点和 ...
- CSS 布局术语
这一节的知识非常重要,它关系到能否做出漂亮的网站.下面的概念.术语需要好好理解. 构建块:CSS采用盒子模型来处理每个HTML元素.盒子可以是一个“块级”盒子,也可以是一个“内联”盒子. 包含元素:包 ...
- 【原创】qlogic网卡软中断不均衡问题分析
引子 使用qlogic QL45000网卡测试业务性能,发现cpu软中断分布不均衡,而且很有规律,导致cpu空闲也不是很均衡, 会影响业务稳定性. 设备使用3张网卡Qlogic网卡,配置为4*25G模 ...
- 树的遍历——c#实现
树作为一种重要的非线性数据结构,以分支关系定义其层次结构,在客观世界中应用广泛.通过对树遍历,将树进行线性化处理,即遍历的结果是将非线性结构的树种节点排列成一个线性序列.其中,最常见的遍历方式包括先序 ...