dubbox 学习
目录
编译源码
dubbox是没有安装包的,所以我们只能先下载源码
直接从最新源码下载的话 可能会有各种问题,所以一定要选择一个发行版来下载 地址:https://github.com/dangdangdotcom/dubbox/releases
下载后就开始编译吧
mvn install maven.test.skip=true
发布dubbo的jar包到私库
dubbo的jar包在 dubbo/target/dubbo-2.x.x.jar (应该是2.8以上的版本)
然后将该jar包发布到私库(关于私库搭建相关参照 如何上传jar包到第三方仓库 )
mvn deploy:deploy-file \
-DgroupId=com.alibaba \
-DartifactId=dubbo \
-Dversion=.x.x \
-Dpackaging=jar \
-Dfile=dubbo/target/dubbo-.x.x.jar \
-Durl=http://192.168.0.170:8081/repository/3rd-part/ \
-DrepositoryId=nexus
然后将项目的maven源改为私库,这样就可以使用dubbox的jar包了
安装dubbo-admin
在dubbo-admin/target下会找到一个war包,这个是dubbox的管理网页,放到tomcat下,启动tomcat会自动解压并运行。
刚安装的tomcat需要设置用户信息才能访问
编辑文件 tomcat/conf/tomcat-users.xml (给tomcat用户添加角色manager-gui)
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat" roles="tomcat,manager-gui"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
</tomcat-users>
我们还需要修改解压后的配置文件:进入解压后的目录,编辑WEB-INF/dubbo.properties
dubbo.registry.address=zookeeper://192.168.0.216,192.168.0.217,192.168.0.218
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest
主要是设置dubbo的注册zookeeper地址和访问网站的登录信息(root:root,guest:guest)
安装monitor
这里可以使用一个开源的修改版 git clone https://git.oschina.net/handu/dubbo-monitor.git
下载之后进入目录,有一个sql文件夹,根据sql内容创建数据库和表
然后编辑文件 src/main/resources/application.properties (设置数据库连接及zookeeper注册地址)
dubbo.application.name=dubbo-monitor
dubbo.application.owner=Ray
dubbo.registry.address=zookeeper://192.168.0.216,192.168.0.217,192.168.0.218
dubbo.protocol.port= # Database Settings
db.url=jdbc:mysql://192.168.0.250:3306/monitor?prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8
db.username=root
db.password=
db.maxActive= # System Manager
manager.username=admin
manager.password=admin
Springboot + dubbox + spring-boot-starter-dubbo(provider和customer都是dubbox)
这种方式是最简单粗暴的,本身通过springboot就已经简化了很多配置和操作,再加上某伙计写的starter,更是6的飞起。
这里简单说说主要的代码,后面附上代码(代码来自参考中的文章,稍有改动)
1.api 这个是服务提供者的接口,消费者也需要依赖这个接口。这里就是普通的接口,没有特别的。
2.provider 提供者,需要实现api并指定注册地址及协议、端口等信息
ServiceImpl.java
@Service(version = "1.0.0")
public class BusinessServiceImpl implements BusinessService {
@Override
public BusinessDomain findBusiness(int id, String name) {
return null;
}
}
注意这里的注解 @Service,不是Spring的,而是 com.alibaba.dubbo.config.annotation.Service
通过这个注解可以设定服务的版本、重试次数、甚至是负载均衡策略等。此外,消费端要匹配这个Service中的version
application.yml
server:
port:
spring:
dubbo:
application:
name: business-provider
registry:
protocol: zookeeper
address: node1:,node2:,node3:
protocol:
name: dubbo
port:
host: server1.demo.cn
scan: cn.veryjava.business.provider
protocol.name是提供服务的协议,这里给的是dubbo,当然也可以用其他的如rest
protocol.host是指定部署服务的IP,当然也可以用hostname代替,如localhost;
registry.address是注册地址,即zookeeper集群的节点信息;
3.consumer 消费者
ConsumerController.java
@Controller
public class BusinessConsumerController { @Reference(version = "1.0.0")
public BusinessService businessService; @RequestMapping("/business")
@ResponseBody
public BusinessDomain getBusiness() {
return businessService.findBusiness(1, "businessaaa");
}
}
application.yml
server:
port:
spring:
dubbo:
application:
name: business-consumer
registry:
protocol: zookeeper
address: node1:,node2:,node3:
scan: cn.veryjava.business.consumer.controller
其他
1.Dubbo消费者启动报错 Failed to check the status of the service
出现这个错误的时候,在dubbo admin中查看消费者,显示没有提供者(但提供者运行正常且可访问)
我的原因是消费者没有指定服务版本,在消费者配置文件引用服务的时候加上服务版本即可(提供者的@Service注解)
<dubbo:reference id="testService" version="1.0.0" interface="com.product.service.ITestService" />
参考:
dubbox 学习的更多相关文章
- dubbo学习 三 dubbox概述
当当网根据自身的需求,对dubbo进行了扩展就叫成了dubbox.具体的使用方法可以参照官网各种例子:http://dangdangdotcom.github.io/dubbox/ 支持rest风 ...
- 分布式服务框架 dubbo/dubbox 入门示例
dubbo是一个分布式的服务架构,可直接用于生产环境作为SOA服务框架. 官网首页:http://dubbo.io/ ,官方用户指南 http://dubbo.io/User+Guide-zh.htm ...
- dubbox
github源码: https://github.com/dangdangdotcom/dubbox maven中央仓: 无 获取分支 git clone -b dubbox-2.8.4 https: ...
- dubbox开发rest+json指南【转】
http://dangdangdotcom.github.io/dubbox/rest.html 目录 概述 REST的优点 应用场景 快速入门 标准Java REST API:JAX-RS简介 RE ...
- 分布式服务框架 dubbo/dubbox 入门示例(转)
dubbo是一个分布式的服务架构,可直接用于生产环境作为SOA服务框架. 官网首页:http://dubbo.io/ ,官方用户指南 http://dubbo.io/User+Guide-zh.htm ...
- dubbo和dubboX与微服务架构(dubbo一)
一.传统三层架构模式的缺陷 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer)web.业务逻辑层(Bu ...
- 一个入门rpc框架的学习
一个入门rpc框架的学习 参考 huangyong-rpc 轻量级分布式RPC框架 该程序是一个短连接的rpc实现 简介 RPC,即 Remote Procedure Call(远程过程调用),说得通 ...
- 服务化实战之 dubbo、dubbox、motan、thrift、grpc等RPC框架比较及选型
转自: http://blog.csdn.net/liubenlong007/article/details/54692241 概述 前段时间项目要做服务化,所以我比较了现在流行的几大RPC框架的优缺 ...
- javaWeb后端学习记录
java后端学习重点: 1.java语言特性: 基础知识,集合,多线程,并发,JVM,NIO,网络编程,设计模式. (★★★★★) jdk源码中有大量的数据结构与java语言细节.jdk源码着重看c ...
随机推荐
- rest规范 ; restful 风格; gradel介绍 ; idea安装 ;
[说明]上午整理了一下心情:下午继续开始任务,了解了restful,知道了那个牛人的博士论文,下载了管理工具gradle,并且部署了环境:晚上安装了idea继承环境并且建了一个简单的gradle项目( ...
- 使用RestTemplate post方式提交表单数据
HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODE ...
- (七)solr7之Terms组件的使用
(七)solr7之Terms组件的使用 Terms组件提供访问索引项的字段和每个词相匹配的文档数量. 这可以用于建立一个自动建议特性或任何其他的特性,而这个terms不是搜索或文档级别的水平.快速检索 ...
- 借助EasyNTS云组网,无需拉专线,也能解决设备现场无公网固定IP的问题
一.产品背景 为了帮助企业和个人用户解决网络访问和设备控制的问题,我们研发了一款创新型产品:EasyNTS云组网系统.什么是EasyNTS,什么是云组网呢? 在解释之前,我们先来了解几个在凡是涉及网络 ...
- UESTC 485 Game(康托,BFS)
Today I want to introduce an interesting game to you. Like eight puzzle, it is a square board with 9 ...
- Java基础 - 获取随机数
使用方法 package com.demo5; import java.util.Random; /* * 使用步骤: * A:导包 * import java.util.Random; * B:创建 ...
- Spring学习笔记3—声明式事务
1 理解事务 事务:在软件开发领域,全有或全无的操作被称为事务.事务允许我们将几个操作组合成一个要么全部发生要么全部不发生的工作单元. 事务的特性: 原子性:事务是由一个或多个活动所组成的一个工作单元 ...
- Python2 socket 多线程并发 ThreadingTCPServer Demo
# -*- coding:utf-8 -*- from SocketServer import TCPServer, StreamRequestHandler import traceback cla ...
- 面向对象编程——super进阶(十)
一.入门使用 在python中,使用super最常见的让子类继承父类.在这种情况下,当前类和对象可以作为super函数的参数使用,调用函数返回的任何方法都是调用超类的方法,而不是当前类的方法. cla ...
- Serv-u 外网访问内网的FTP服务器
1. 背景简介 最近研究如何在内网搭架FTP服务器,同时要保证外网(公网)能访问的到.终成正果,但走了一些弯路,在此记下,以飨后人. 2. 基础知识 FTP 使用 2 个端口,一个数据端口和一个命令端 ...