• ~随笔A014~分布式服务架构Dubbo之registry


      Dubbo是阿里巴巴开发的一个基于SOA(面向服务的体系结构)结构基础的,实现RPC远程调用的概念。

      Dubbo框架是基于容器运行的,容器是spring。

      Dubbo服务架构,下图:

        

     一. 六个主体信息:

      1.registry (注册中心:用于发布和订阅服务的平台 )

      发布:开发服务端代码完毕后,将服务信息发布出来,实现一个服务的公开。

      发布的信息包括但不限于:服务端所在位置(URL),要调用的接口命名,接口中有什么方法,方法需要什么参数,方法有什么返回,调用过程超时时长是多少,调用过程自动重复多少次,参数数据和返回数据长度有多少等

      订阅:客户端程序,从注册中心下载服务内容,就是发布的服务信息,这个过程是订阅。订阅服务的时候,会将发布的所有信息一次性下载到客户端。客户端也可以自定义,修改部分服务信息。如:超时的时长,调用的重复次数等

      2.consumer 服务的消费者,就是服务的客户端

      消费者必须使用Dubbo技术开发部分代码,基本上都是配置文件订阅

      3.provider 服务端

      服务的提供者,就是服务端

      服务端必须使用Dubbo技术开发部分代码,以配置文件为主。

      4.protocol 协议 -通讯标准

      协议,在Dubbo技术中,客户端和服务器的通讯方式,都是建立在协议通讯基础之上。

    Dubbo技术支持若干协议,如:dubbo协议(阿里自主开发的协议)、http协议、tcp协议等。

      5.container 容器

      Dubbo技术的服务端(provider),在启动执行的时候,必须依赖容器才能正常启动;

      默认依赖spring容器,且Dubbo技术不能脱离spring框架;

      在2.5.3版本的dubbo中,默认依赖的是spring2.5版本技术,可选用spring4.5以下版本;

      在2.5.7版本的dubbo中,默认依赖的是spring4.3.10版本技术,可选择任意spring版本。

      

      6.monitor 监控中心

      dubbo提供的一个war工程

      主要功能是监控服务端(provider)和消费的(consumer)的使用数据,如服务端是什么,有多少接口,多少方法,调用次数,压力信息等,客户端有多少客户端有什么,调用多哪些服务端,调用了多少次等,也可以实现集群权重的分配

      二、dubbo的开发应用

      1.注册中心种类

      (1)zookeeper官方推荐使用的注册中心

      zookeeper是Apache开发的一个java工程,是Hadoop工程的子工程,主体功能是用于实现其他应用管理的一个管理平台。

      核心功能:管理多应用,统一管理配置信息,名称管理服务,分布式锁等

      管理多应用:Apache中有若干应用,如:Hadoop,bea,pig等,这些应用可能同时使用,需要一个统一的管理平台,实现管理。

      统一管理:在商业开发中,很可能同一个应用使用多份,如:多个Hadoop,那么多个hadoop配置应用统一。

      名称服务管理:商业开发中,应用数量若干,如:Hadoop10个,pig20个,bea30个,在记忆各个应用位置的时候,非常麻烦,应用位置:主机名(IP)+端口号。zookeeper可以为每个应用命名,类似域名,方便管理和查找

      分布锁:如果多个同应用同时使用的时候,不同客户端访问过程是否有数据错误的可能。如:若干Hadoop,客户端1访问Hadoop1新增数据;客户端2访问Hadoop2查询数据,查询的结果应该包括新增的数据,先运行哪个客户端请求?保证数据结果正确性。

      (2)multicast

      广播实现服务发布和订阅的注册方式,不需要启动任何的注册中心平台

      只适用于小型的项目,在大型工程中会有通讯阻塞问题(广播风暴)

      (3)redis

      kv服务器,高速缓存服务器,是一个内存结构的类似数据库的缓存服务器,也可以成为nosql数据库;

      实际就是通过键值对的形式,在redis中保存服务的发布数据,客户端通过科研查询value,订阅服务。

      效率高,且可搭建集群,使用部分大型商业开发,但稳定性不保证(稳定性由redis保证,dubbo不对其保证;zookeeper注册中心稳定性高于redis,因为zookeeper本身就是做集群多应用控制的,而redis做数据缓存,相当于数据库的存在;这里推荐使用zookeeper)

      2.注册中心的安装

      (1)先安装jdk

        a.解压缩

         tar -zvxf xxx.tar.gz  (z是zip格式,v显示解压过程,x解压缩 ,f是file,c是压缩)

        b.建议复制到/usr/local/目录中(local目录是公开目录,所有用户都可访问)

           cp -r xxx /usr/loacl/xxx

        c.配置环境变量

         

      (2)安装zookeeper

        a.下载位置:zookeeper.apache.org

        b.解压缩:tar -zxf zookeeper.tar.gz

        c.复制到/usr/local目录中 cp -r zookeepe /usr/local/zookeeper

        d.简介zookeepe资源:

         bin:可执行文件(启动、停止、状态检查、重启等功能都通过目录中的可执行文件操作);

         conf:配置目录保存所有的配置文件;

         lib:就是zookeeper内容,zookeeper是java开发的,实际上就是一组jar包,lib中的jar就是zookeeper提供的源信息;

            src:zookeeper提供的源代码java开发的应用,开源免费;

            data:临时数据文件目录,需自定义,可定义在任意位置,zookeeper使用的临时数据文件目录,是通过conf目录中的配置文件配置的,默认是/tmp/zookeeper目录下的临时目录

            目录中保证zookeeper运行过程的所有数据信息,包括临时数据和持久化数据

        

      1)启动zookeeper (执行bin目录中的zkServer.sh.start)

      启动后会有日志文件创建,其中保存启动日志zookeeper.out;

      如果启动失败,则在日志文件中有对应的异常堆栈信息。

      2)停止zookeeper(zkServer.sh.stop)

      3)状态查看(zkServer.sh.status)

      a.成功启动状态信息:

      

      b.启动失败错误信息:

      

      4)重启zookeeper(zkServer.sh.restart)

      (3)客户端访问

      使用zookeeper提供的默认客户的访问bin/zkCli.sh

      默认连接本地服务,端口为2181

      指定连接:bin/zkCli.sh -server ip:port

      客户端命令:提供了一系列提示信息

      

      ls查看服务中心是否更新服务

      

  • 相关阅读:
    【springboot】@Valid参数校验
    【springboot】事务处理
    【springboot】过滤器、监听器、拦截器,Aspect切片
    【java web】过滤器、拦截器、监听器的区别
    【java web】监听器listener
    【java web】拦截器inteceptor
    【java web】过滤器filter
    【权限管理】Apache Shiro和Spring Security的对比
    【面试题】挑战10个最难回答的Java面试题(附答案)
    【面试题】反向面试
  • 原文地址:https://www.cnblogs.com/gaojl/p/8505174.html
Copyright © 2020-2023  润新知