Dubbo从入门到精通

Dubbo资源下载

链接:https://pan.baidu.com/s/1IllSy9dOQDsswu38XNyA1w
提取码:8zrz

文章目录

  • Dubbo资源下载
  • Dubbo从入门到精通
    • dubbo环境搭建window
      • 1,下载并安装zookepper
        • 1.2、解压zookeeper
      • 1.3、修改zoo.cfg配置文件
      • 1.4、使用zkCli.cmd测试
    • dubbo环境搭建Window
        • 下载并安装dubbo-admin
        • 1、下载dubbo-admin
        • 2、进入目录,修改dubbo-admin配置
        • 3、打包dubbo-admin
        • 4、运行dubbo-admin
    • dubbo环境搭建Linux
      • 安装JDK+zookeeper
        • 1.1,安装JDK
        • 1.1.1,下载JDK
        • 1.1.2,使用XFTP工具导入linux
        • 1.1.3,解压到/root/software目录
        • 1.1.4,配置环境变量并测试
        • 让环境变量生效,执行下面的命令
      • 安装zookeeper
        • 1.2.1,下载
        • 1.2.2,解压并修改位置
        • 1.2.3,修改配置文件
        • 1.2.4, 开机启动zookeepr脚本
        • 1.2.5,启动zookeeper
      • 2,安装dubbo监控【常规安装】
        • 2.1、下载dubbo-admin (百度网盘)
        • 2.2,解压![在这里插入图片描述](https://img-blog.csdnimg.cn/20210303152020155.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzI0NzgwMw==,size_16,color_FFFFFF,t_70)
        • 2.3,修改配置文件并打包
      • 3,安装dubbo监控【使用docker安装】
        • 3.1,安装zookeeper
        • 3.2,拉取镜像
        • 3.3,启动容器
        • 3.4,环境参数
    • dubbo-helloworld
      • 1,提出需求
      • 2,工程架构
      • 3,创建模块
        • 3.0 创建maven项目(先用spring方式)
        • 3.1、ego-interface:公共接口层(model,service,exception…)
        • 2、ego-user-service-provider:用户服务模块(对用户接口的实现)
        • 3、ego-order-service-consumer:订单模块(调用用户模块)
        • 4,使用dubbo改造
          • 1、改造ego-user-service-provider作为服务提供者
          • 2、配置提供者provider.xml

Dubbo从入门到精通

dubbo环境搭建window

1,下载并安装zookepper

1.1、下载zookeeper

网址 https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/

1.2、解压zookeeper

解压运行zkServer.cmd ,初次运行会报错,没有zoo.cfg配置文件

1.3、修改zoo.cfg配置文件

将conf下的zoo_sample.cfg复制一份改名为zoo.cfg即可。

注意几个重要位置:

dataDir=./ 临时数据存储的目录(可写相对路径)

clientPort=2181 zookeeper的端口号

修改完成后再次启动zookeeper

1.4、使用zkCli.cmd测试

ls /:列出zookeeper根下保存的所有节点

create –e /sxt 123:创建一个sxt节点,值为123

get /sxt:获取/sxt节点的值


dubbo环境搭建Window

下载并安装dubbo-admin

dubbo本身并不是一个服务软件。它其实就是一个jar包能够帮你的java程序连接到zookeeper,并利用zookeeper消费、提供服务。所以你不用在Linux上启动什么dubbo服务。
但是为了让用户更好的管理监控众多的dubbo服务,官方提供了一个可视化的监控程序,不过这个监控即使不装也不影响使用。

1、下载dubbo-admin

网盘下载
链接:https://pan.baidu.com/s/1IllSy9dOQDsswu38XNyA1w
提取码:8zrz

2、进入目录,修改dubbo-admin配置

修改 src\main\resources\application.properties 指定zookeeper地址
Dubbo从入门到精通_第1张图片
rces\application.properties 指定zookeeper地址

3、打包dubbo-admin
mvn clean package -Dmaven.test.skip=true  
mvn installl 

或者

mvn package
4、运行dubbo-admin

/target下面
java -jar dubbo-admin-0.0.1-SNAPSHOT.jar
Dubbo从入门到精通_第2张图片

注意:【有可能控制台看着启动了,但是网页打不开,需要在控制台按下ctrl+c即可】

http://127.0.0.1:7001/
默认使用root/root 登陆
Dubbo从入门到精通_第3张图片

dubbo环境搭建Linux

安装JDK+zookeeper

1.1,安装JDK
1.1.1,下载JDK

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Dubbo从入门到精通_第4张图片
在这里插入图片描述


1.1.2,使用XFTP工具导入linux

Dubbo从入门到精通_第5张图片

1.1.3,解压到/root/software目录
mkdir /root/software   #在root下面创建software目录 
tar -zxvf  jdk-8u181-linux-x64.tar.gz -C /root/software #解压到指定目录

1.1.4,配置环境变量并测试

打开控制台,运行$ sudo vi /etc/profile,在最后插入下面要配置的内容 ,按Esc键 ,输入( :wq 保存并退出)

JAVA_HOME=/root/software/jdk1.8.0_181 
PATH=$JAVA_HOME/bin:$PATH 
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
export JAVA_HOME 
export PATH 
export CLASSPATH

让环境变量生效,执行下面的命令
source /etc/profile

验证

java -version 

Dubbo从入门到精通_第6张图片

安装zookeeper

1.2.1,下载

可以从 (百度网盘)

https://apache.org/dist/zookeeper/stable 
http://mirror.bit.edu.cn/apache/zookeeper/stable/

Dubbo从入门到精通_第7张图片
在linux上使用 wget

http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz 来下载

建议使用镜像

推荐下载好了再使用xftp传到linux如果使用wget会丢失jar包[亲测过]

1.2.2,解压并修改位置
#解压到/usr/local下面 
tar -zxvf zookeeper-3.4.14.tar.gz -C /usr/local 
#进入目录 
cd /usr/local/ 
#修改名字 
mv zookeeper-3.4.14/ zookeeper 

1.2.3,修改配置文件


1
#打开zk的配置文件目录 
cd /usr/local/zookeeper/conf 
#修改zoo_sample.cfg 为zoo.cfg [一定要改] 
mv zoo_sample.cfg  zoo.cfg 
#编辑zoo.cfg 
vi zoo.cfg  

Dubbo从入门到精通_第8张图片

1.2.4, 开机启动zookeepr脚本


1
#!/bin/bash 
#chkconfig:2345 20 90 
#description:zookeeper 
#processname:zookeeper 
ZK_PATH=/usr/local/zookeeper 
export JAVA_HOME=/root/software/jdk1.8.0_181 
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



打开/etc/init.d/
Dubbo从入门到精通_第9张图片
把脚本注册为Service
Dubbo从入门到精通_第10张图片
增加权限
Dubbo从入门到精通_第11张图片

1.2.5,启动zookeeper

Dubbo从入门到精通_第12张图片

如果出现连接不上在问题修改etc/hosts

删除第一行里面的127.0.0.1



2,安装dubbo监控【常规安装】

dubbo本身并不是一个服务软件。它其实就是一个jar包能够帮你的java程序连接到zookeeper,并利用zookeeper消费、提供服务。所以你不用在Linux上启动什么dubbo服务。

但是为了让用户更好的管理监控众多的dubbo服务,官方提供了一个可视化的监控程序,不过这个监控即使不装也不影响使用。

2.1、下载dubbo-admin (百度网盘)

https://github.com/apache/dubbo-admin/tree/master
Dubbo从入门到精通_第13张图片
Dubbo从入门到精通_第14张图片
配置参考文档
http://dubbo.apache.org/zh-cn/docs/admin/introduction.html

2.2,解压Dubbo从入门到精通_第15张图片

在window系统打爆成jar

dubbo-admin 管理项目

dubbo-monitor-simple监控统计项目

dubbo-registry-simple 简单的注册中心,开发中一般使用zk

2.3,修改配置文件并打包

Dubbo从入门到精通_第16张图片
Dubbo从入门到精通_第17张图片
配置密码和注册中心,在启动之前一定要启动注册中心,要不然无法访问哦

使用mvn install 打包(或者 mvn package)
Dubbo从入门到精通_第18张图片
把包好的jar包放到linux上去使用java -jar 运行

Dubbo从入门到精通_第19张图片
Dubbo从入门到精通_第20张图片
在Winows里面使用http://xxx.xxx.xxx:7001/去访问
用户名:root
密码:root

测试
Dubbo从入门到精通_第21张图片


3,安装dubbo监控【使用docker安装】

3.1,安装zookeeper
docker pull zookeeper:3.4.14#拉取镜像 
docker run --name zookeeper -p 2182:2181 -v /root/zookeeper/data:/data -d zookeeper:3.4.14#启动容器

3.2,拉取镜像

https://hub.docker.com/r/chenchuxin/dubbo-admin

docker pull webuilder/dubboadmin
3.3,启动容器
docker run -itd -p 8080:8080 -e ZOOKEEPER_SERVER=your_zookeeper_ip:2181 dubboadmin --name=dubbo-name 
or 
docker run -itd -p 8080:8080 --add-host zookeeper-server:your_zookeeper_ip dubboadmin --name=dubbo-name

3.4,环境参数
ZOOKEEPER_SERVER (必选) Zookeeper's IP and PORT, sparated by a colon. Default is 'zookeeper-server:2181' 
ROOT_PASSWORD (可选) Dubbo Admin's root user's password, default is 'root' 
GUEST_PASSWORD (可选) Dubbo Admin's guest user's password, default is 'root'



dubbo-helloworld

1,提出需求

某个电商系统,订单服务需要调用用户服务获取某个用户的所有地址;

我们现在 需要创建两个服务模块进行测试
Dubbo从入门到精通_第22张图片
测试预期结果:

订单服务web模块在A服务器,用户服务模块在B服务器,A可以远程调用B的功能。


2,工程架构

根据 dubbo《服务化最佳实践》

2.1,分包

建议将服务接口,服务模型,服务异常等均放在 API 包中,因为服务模型及异常也是 API 的一部分,同时,这样做也符合分包原则:重用发布等价原则(REP),共同重用原则(CRP)。

如果需要,也可以考虑在 API 包中放置一份 spring 的引用配置,这样使用方,只需在 spring 加载过程中引用此配置即可,配置建议放在模块的包目录下,以免冲突,如:com/alibaba/china/xxx/dubbo-reference.xml。

2.2,粒度

服务接口尽可能大粒度,每个服务方法应代表一个功能,而不是某功能的一个步骤,否则将面临分布式事务问题,Dubbo 暂未提供分布式事务支持。

服务接口建议以业务场景为单位划分,并对相近业务做抽象,防止接口数量爆炸。

不建议使用过于抽象的通用接口,如:Map query(Map),这样的接口没有明确语义,会给后期维护带来不便。
Dubbo从入门到精通_第23张图片Dubbo从入门到精通_第24张图片


3,创建模块

3.0 创建maven项目(先用spring方式)

Dubbo从入门到精通_第25张图片
Dubbo从入门到精通_第26张图片

3.1、ego-interface:公共接口层(model,service,exception…)

作用:定义公共接口,也可以导入公共依赖

①Bean模型

@Data
@AllArgsConstructor//生成全参数构造函数
@NoArgsConstructor // 生成无参构造函数
public class UserAddress implements Serializable{ 
    private Integer id; 
    private String userAddress; 
    private String userId; 
}

②Service接口UserService

public List<UserAddress> getUserAddressList(String userId) 

③Service接口OrderService

public interface OrderService { 
    /** 
     * 初始化订单 
     * @param userId 
     */ 
    public List<UserAddress> initOrder(String userId); 
}

2、ego-user-service-provider:用户服务模块(对用户接口的实现)

1、pom.xml

<dependencies> 
   <dependency> 
    <groupId>com.sxt</groupId> 
    <artifactId>ego-interface</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
   </dependency> 
  </dependencies>

2、Service

public class UserServiceImpl implements UserService{ 
    public static List<UserAddress> address=new ArrayList<>(); 
    static { 
        address.add(new UserAddress(1, "湖北省武汉市东湖高新区金融港B22栋11楼", "whsxt")); 
        address.add(new UserAddress(2, "北京市海淀区西三旗街道建材城西路中腾建华商务大厦东侧二层尚学堂", "bjsxt")); 
    } 
    @Override 
    public List<UserAddress> getUserAddressList(String userId) { 
        //讲道理要是去数据库里面去查询的 
        return address; 
    } 
} 
3、ego-order-service-consumer:订单模块(调用用户模块)

1、pom.xml

<dependencies> 
   <dependency> 
    <groupId>com.sxt</groupId> 
    <artifactId>ego-interface</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
   </dependency> 
   </dependencies>

2、测试

<dependencies> 
   <dependency> 
    <groupId>com.sxt</groupId> 
    <artifactId>ego-interface</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
   </dependency> 
   </dependencies>

现在这样是无法进行调用的。我们ego-order-web引入了ego-interface,但是interface的实现是ego-user,我们并没有引入,而且实际他可能还在别的服务器中

4,使用dubbo改造
1、改造ego-user-service-provider作为服务提供者

1、引入dubbo和其它的修改pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.sxt</groupId> 
    <artifactId>ego-user-service-provider</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <dependencies> 
        <dependency> 
            <groupId>com.sxt</groupId> 
            <artifactId>ego-interface</artifactId> 
            <version>0.0.1-SNAPSHOT</version> 
        </dependency> 
        <dependency> 
            <groupId>com.alibaba</groupId> 
            <artifactId>dubbo</artifactId> 
            <version>2.6.7</version> 
        </dependency> 
        <dependency> 
            <groupId>com.101tec</groupId> 
            <artifactId>zkclient</artifactId> 
            <version>0.11</version> 
        </dependency> 
        <!-- curator-framework --> 
        <dependency> 
            <groupId>org.apache.curator</groupId> 
            <artifactId>curator-framework</artifactId> 
            <version>4.1.0</version> 
        </dependency> 
        <dependency> 
            <groupId>io.netty</groupId> 
            <artifactId>netty-all</artifactId> 
            <version>4.1.32.Final</version> 
        </dependency> 
    </dependencies> 
</project>

由于我们使用zookeeper作为注册中心,所以需要操作zookeeper
dubbo 2.6以前的版本引入zkclient操作zookeeper
dubbo 2.6及以后的版本引入curator操作zookeeper
下面两个zk客户端根据dubbo版本2选1即可

2、配置提供者provider.xml

你可能感兴趣的:(linux,dubbo,java,mybatis,mysql)