了解dubbo

Posted nbzbc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了了解dubbo相关的知识,希望对你有一定的参考价值。

一、什么是dubbo

Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,服务自动注册和发现。

1、远程方法调用

  实现不同程序之间的方法调用

2、负载均衡

  任务分摊、感觉很吊,目前不懂。

3、服务器注册与发现

  配置文件注册服务,注册表(类似数据库),客户端向注册表发送一个请求,负载均衡负责分配服务来响应请求。

基本概念

服务提供者(provide)

  类似于程序的Service层 

服务消费者(Consumer)

  类似于程序的Controller层

注册中心(Registry)

  类似于一个数据库,可以看成Dao层

监控中心(Monitor)

  应该可以看成日志

二、Zookeeper

什么是Zookeeper

  对分布式应用程序的服务进行协调,类似工具人。 

安装Zookeeper

1、 linux安装zookeeper-x.x.x.tar.gz
      tar -zxvf zookeeper-x.x.x.tar.gz 解压
      mv zookeeper-x.x.x.tar.gz zookeeper 改名字
2、设置开机启动脚本(需要配置jdk)
#!/bin/bash
#chkconfig:2345 20 90
#description:zookeeper
#processname:zookeeper
ZK_PATH=/opt/zookeeper
export JAVA_HOME=/opt/jdk1.8.0_152
case $1 in
   start) sh  $ZK_PATH/bin/zkServer.sh start;;
   stop)  sh  $ZK_PATH/bin/zkServer.sh stop;;
   status) sh  $ZK_PATH/bin/zkServer.sh status;;
   restart) sh $ZK_PATH/bin/zkServer.sh restart;;
 *)  
echo "require start|stop|status|restart"  ;;
esac
将脚本注册成服务:chkconfig --add zookeeper
增加权限 chomd +x /etc/init.d/zookeeper
初始化配置文件:cp zoo_sample.cfg zoo.cfg
启动服务service zookeeper start
3、安装监控软件
   安装tomcat
   将dubbo-admin-x.x.x.war包拷贝到tomcat的webapps目录下
   浏览器访问tomcat地址+war包名
4、设置tomcat开机启动脚本
#!/bin/bash
#chkconfig:2345 20 90
#description:dubbo-admin
#processname:dubbo-admin
CATALANA_HOME=/opt/tomcat4dubbo
export JAVA_HOME=/opt/jdk1.8.0_152
case $1 in
start)  
    echo "Starting Tomcat..."  
    $CATALANA_HOME/bin/startup.sh  
    ;;  
  
stop)  
    echo "Stopping Tomcat..."  
    $CATALANA_HOME/bin/shutdown.sh  
    ;;  
  
restart)  
    echo "Stopping Tomcat..."  
    $CATALANA_HOME/bin/shutdown.sh  
    sleep 2  
    echo  
    echo "Starting Tomcat..."  
    $CATALANA_HOME/bin/startup.sh  
    ;;  
*)  
    echo "Usage: tomcat {start|stop|restart}"  
    ;; esac
将tomcat注册到服务:chkconfig --add dubbo-admin
加入权限:chmod +x dubbo-admin
启动服务:service dubbo-admin start

三、Springboot整合dubbo

1、添加依赖
 <dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>dubbo</artifactId>
  <version>${dubbo.version}</version>
</dependency>
<dependency>
  <groupId>com.101tec</groupId>
  <artifactId>zkclient</artifactId>
  <version>${zkclient.version}</version>
</dependency>
<dependency>
  <groupId>com.gitee.reger</groupId>
  <artifactId>spring-boot-starter-dubbo</artifactId>
  <version>${dubbo-starter.version}</version>
</dependency>
Service层注册服务者
spring.dubbo.application.name=服务名
spring.dubbo.registry.protocol=zookeeper
spring.dubbo.registry.address=192.168.xxx.xxx:2181
spring.dubbo.base-package=程序包
spring.dubbo.protocol.name=dubbo
Controller层注册消费者
spring.dubbo.application.name=消费名
spring.dubbo.registry.protocol=zookeeper
spring.dubbo.registry.address=192.168.xxx.xxx:2181
spring.dubbo.base-package=程序包
spring.dubbo.protocol.name=dubbo
spring.dubbo.consumer.timeout=10000
spring.dubbo.consumer.check=false
@Service注册服务(Service层)
@Reference使用服务(Controller层)
都为aibaba的包

四、一些基本的错误

版本问题为主要问题

mysql8.0对密码的认证于之前的有所不同需要定义相对应的版本,或者改变8.0的密码认证方式caching_sha2_password改为mysql_native_password

程序报错问题以百度解决未做记录

每天检查写点东西,增加记忆。

以上是关于了解dubbo的主要内容,如果未能解决你的问题,请参考以下文章

dubbo系列dubbo启动过程源码解析

一文了解 Dubbo 3 配置工作原理

Dubbo之服务导出源码分析

dubbo service启动流程源码分析

Dubbo加权轮询负载均衡的源码和Bug,了解一下?

了解分布式架构 Maven Springmvc mybatis shiro Druid Restful,Dubbo ZooKeeper,Redis,FastDFS ,ActiveMQ