springboot+dubbo微服务的搭建

1.dubbo是什么?
  Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。
  Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

  主要核心部件
  1) Remoting: 网络通信框架,实现了 sync-over-async 和 request-response 消息机制.
  2) RPC: 远程过程调用,支持负载均衡、容灾和集群功能
  3) Registry: 服务目录框架用于服务的注册和服务事件发布和订阅

2.dubbo工作原理(服务治理)

  Provider            暴露服务的服务提供方
  Consumer            调用远程服务的服务消费方
  Registry            服务注册与发现的注册中心
  Monitor            统计服务的调用次数和调用时间的监控中心
  Container            服务运行容器

  调用关系说明:
  1)服务容器负责启动,加载,运行服务提供者。
  2)服务提供者在启动时,向注册中心注册自己提供的服务。
  3)服务消费者在启动时,向注册中心订阅自己所需的服务。
  4)注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
  5)服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
  6)服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

  SpringCloud 与 Dubbo区别?
  1.Spring 、                            阿里巴巴
  2.品牌机、                           组装机
  3.基于Http的REST方式、   RPC
  4.持续更新、                       停更5年,2017恢复
  5.涵盖服务治理的方方面面、服务治理

3.安装配置dubbo监控中心和注册中心

  注意安装顺序,先注册中心,再监控中心!!!
  注意安装顺序,先注册中心,再监控中心!!!
  注意安装顺序,先注册中心,再监控中心!!!

  3.1 注册中心Zookeeper(Linux安装)

     3.1.1 下载zookeeper(https://apache.org)

         zookeeper-3.4.12.tar.gz

     3.1.2 上传zookeeper-3.4.12.tar.ga到Linux服务器

     3.1.3 解压zookeeper-3.4.12.tar.gz

         tar -zxf zookeeper-3.4.12.tar.gz
  
     3.1.4 创建目录

         cd /zking/zookeeper-3.4.12/  #进入目录
         mkdir log                  #日志文件存放路径
         mkdir data                 #数据文件存放路径

     3.1.5 配置zookeeper的zoo.cfg文件
          
         cp /目录/conf/zoo_sample.cfg /目录/conf/zoo.cfg 


     3.1.6 修改zoo.cfg配置
         
         vim /lky/zookeeper-3.4.12/conf/zoo.cfg

         添加以下内容:

       #数据文件存放路径
       dataDir=/lky/zookeeper-3.4.12/data
       #日志文件存放路径
       dataLogDir=/lky/zookeeper-3.4.12/log

     3.1.7 将2181端口加入到防火墙中
 
         firewall-cmd --zone=public --add-port=2181/tcp --permanent
           firewall-cmd --reload

     3.1.8 zookeeper配置成系统服务

          cd /usr/lib/systemd/system(zookeeper.service上传路径地址)
        vi zookeeper.service
      systemctl enable zookeeper
          systemctl daemon-reload
          systemctl start zookeeper
       systemctl stop zookeeper
           systemctl status zookeeper

  3.2 监控中心(windows安装)

     3.2.1 下载Dubbo Admin监控中心

         https://github.com/apache/incubator-dubbo-ops/tree/master

     3.2.2 解压并打开执行命令窗口

         1)进入incubator-dubbo-ops-master\dubbo-admin目录执行: 
     
         按住shift键+右键,选择“在此处打开Powershell窗口”

         2)执行命令:mvn clean package(编译打包,注:必须先安装Maven)
     
         注:执行完成后在dubbo-admin目录下会多出target目录,进入目录后发现编译生成了dubbo-admin-0.0.1-SNAPSHOT.jar。

     3.2.3 修改zookeeper注册中心IP地址
     
         使用压缩包方式打开dubbo-admin-0.0.1-SNAPSHOT.jar,进入\BOOT-INF\classes中找到application.porperties文件即可修改相关配置信息。如下:

         server.port=7001
         spring.velocity.cache=false
     spring.velocity.charset=UTF-8
     spring.velocity.layout-url=/templates/default.vm
     spring.messages.fallback-to-system-locale=false
     spring.messages.basename=i18n/message
     spring.root.password=root
     spring.guest.password=guest

     dubbo.registry.address=zookeeper://注册中心IP地址:2181

     3.2.4 启动并访问Dubbo监控中心

         1)java -jar dubbo-admin-0.0.1-SNAPSHOT.jar

         2)打开浏览器输入:http://localhost:7001/,输入账号密码:

4.springboot+dubbo整合

  4.1 服务提供方

     4.1.1 创建SpringBoot项目

        File-->New-->Project...
       Spring Initializr
       Maven Project
       Web
          Web
       Core
          Lombok
          Aspects
          DevTools
       SQL
          mybatis+jdbc+mysql

     4.1.2 引入依赖

        druid-spring-boot-starter(1.1.10)
        dubbo-spring-boot-starter(0.2.0)
        org.apache.zookeeper(3.4.12)
        pagehelper-spring-boot-starter(1.2.3)

     4.1.3 创建util/model/mapper/service

        1)导入PageBean.java、PageAspect.java到util目录;
        2)使用Mybatis-generator生成model/mapper层代码;
        3)配置service层的实现类,并定义dubbo暴露服务;

        关键代码:
        //Spring的Service层注解标识
        @Service 
        //通过dubbo的注解暴露该类提供服务
        @com.alibaba.dubbo.config.annotation.Service
        public class BookServiceImpl implements IBookService{
           ...
        }

     4.1.4 配置applicaiton.yml

        #dubbo 服务提供方配置
    dubbo:
           #dubbo服务端口,我们无需知道dubbo服务运行在哪个端口,故也将其设为随机端口
           protocol:
              port: -1
           #dubbo服务名称 Provider[服务提供方]  Consumer[服务消费方]
           application:
              name: dubbo-provider
           #dubbo服务所在包路径
           scan:
              basePackages: 暴露服务全路径名
           #注册中心地址
           registry:
              address: zookeeper://Zookeeper注册中心IP:2181

     4.1.5 配置启动类

        @MapperScan("com.sixstar.dubbo.mapper")
    @EnableAspectJAutoProxy
    @EnableTransactionManagement
     
     4.1.6 选中pom.xml,编译打包(jar)

        右键 -> Run Maven -> New Goal...  最后输入命令:clean package
     
     4.1.7 执行jar包

        执行命令:java -jar jar包包名

  4.2 服务消费方  

     4.2.1 创建SpringBoot项目

        File-->New-->Project...
       Spring Initializr
       Maven Project
       Web
          Web
       Core
          Lombok

     4.2.2 引入依赖

        dubbo-spring-boot-starter(0.2.0)
        org.apache.zookeeper(3.4.12)

     4.2.3 创建util/model/service/controller

        1)导入PageBean.java到util目录;
        2)导入Book.java实体类到model,用于接收dubbo服务方返回的数据类型;
        3)导入IBookService.java接口类,实际上就是服务提供方的暴露服务接口;
        4)新建Controller,访问dubbo服务提供方的暴露服务接口;

        关键代码:
        
    @Controller        
        public class BookController{
            
            //通过dubbo的Reference注解调用服务提供方的暴露接口服务
            @com.alibaba.dubbo.config.annotation.Reference
            private IBookService bookService;

            @RequestMapping("/bookLst")
            @ResponseBody
            public List queryBookLst(){
                Book book=new Book();
                PageBean pageBean=new PageBean();
                List lst=bookService.Xxxx(book,pageBean);
                return lst;
            }
        }

     4.2.4 配置application.yml

        #dubbo 服务消费方配置
    dubbo:
          #消费者名称
           application:
              name: dubbo-consumer
           #注册中心地址
           registry:
              address: zookeeper://Zookeeper注册中心IP:2181
           #需要使用到提供者服务的包路径
           scan:
              base-packages: com.zking.spbootdubbo.controller.XxxxController

     4.2.5 直接启动SpringBoot项目
  
        启动服务消费方的SpringBoot项目,通过浏览器访问具体的服务接口。

注:服务启动顺序分别是zookeeper注册中心、dubbo-admin、dubbo-provider、dubbo-consumer!重要!重要!!重要!!
注:服务启动顺序分别是zookeeper注册中心、dubbo-admin、dubbo-provider、dubbo-consumer!重要!重要!!重要!!
注:服务启动顺序分别是zookeeper注册中心、dubbo-admin、dubbo-provider、dubbo-consumer!重要!重要!!重要!!
 

你可能感兴趣的:(springboot+dubbo微服务的搭建)