目录

编译源码

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" />

参考:

最新文章

  1. Java文件中出现这样的提示错误与解决方法:Cannot return from outside a function or method?
  2. 移动端Web适配的两种做法思路总结
  3. 初学Objective-C语言需要了解的星星点点
  4. Xamarin Android自学和实践步骤
  5. JAVA SE 803 考试前突击
  6. SQL字符串分组聚合(分组后的数据查询后用逗号隔开)
  7. CoreSeek中文检索引擎
  8. UML--建模
  9. 【转】 如何提高自己的acm个人能力
  10. Spider_Man_4 の BeautifulSoup
  11. css scale放大缩小
  12. Docker ElK安装部署使用教程
  13. ArcGIS Server服务器监控
  14. luogu3188/bzoj1190 梦幻岛宝珠 (分层背包dp)
  15. 057、macvlan 网络隔离和连通(2019-03-26 周二)
  16. Android Java中的一些使用例子
  17. VisualStudio:添加现有项时使用添加为链接
  18. 使用pssh进行并行批量操作
  19. html02
  20. MongoDB整库备份+整库导入

热门文章

  1. n++ ++n
  2. JS实现当鼠标移动到图片上时,时图片旋转
  3. nodejs获取服务器数据到页面
  4. python 报错——Python TypeError: &#39;module&#39; object is not callable 原因分析
  5. 我的第三个Python小程序
  6. java上机
  7. python并发编程之多线程2---(死锁与递归锁,信号量等)
  8. node.js应用生成windows service的plugin——winser
  9. [笔记] Access Control Lists (ACL) 学习笔记汇总
  10. 推荐一款轻量级PHP数据库框架–Medoo