Dubbo与Zookeeper

1 分布式系统

  • 建立在网络上的若干独立计算机软件系统的集合

  • RPC:远程过程调用;服务器之间通信,参数传递通过对象的序列化与反序列化;序列化机制效率和通信机制是RPC的重要参考


 

2 Dubbo

  • 意义:面向接口代理的高性能RPC调用

    • 智能的负载均衡:每个服务器有均衡的负载/工作量

    • 服务自动注入与注册:注册中心保存正常的服务,分发合适的服务

    • 运行期流量调度:主要为灰度发布,即一部分使用新服务,部分使用老服务,然后慢慢全部过度到新服务

    • 可视化的服务治理与运维

  • 角色划分:

    • Registry:注册中心;注册服务和推送服务;常用Zookeeper

    • Provider:服务提供者,去注册中心注册服务

    • Consumer:服务消费者,向注册中心订阅服务,以及接收注册中心的推送即通知服务的变化或更新;获取服务后调用服务

    • Monitor:服务监控

    • Container:容器,启动服务

  • 流程:

    • 编写服务Service接口,比如几个简单的方法

    • 注册服务,即将服务暴露出去:

      • 导入dubbo的maven依赖,使用Zookeeper作为注册中心

      • 创建dubbo的xml配置文件,这类似于Spring的配置,dubbo底层也是基于Spring,配置服务;

      • 在main()中加载xml配置文件即发布服务

      • 其他详情:https://segmentfault.com/a/1190000019896723

    • 搭建注册中心:下载ZoopKeeper并安装,打开zkServer可执行脚本,在bin目录下cmd,输入zkServer.cmd;如果报错找不到zoo.cfg文件,则需要在conf目录下备份zoo_sample.cfg并改名为zoo.cfg,修改其中的数据临时存储路径(新建data目录,dataDir=../data);运行bin下的ckClin可执行脚本,命令get /或者根路径,ls /列举所有的节点,默认存在一个zookeeper节点,get /节点名获取节点,create -e /节点名 内容-自定义一个节点并写入内容

    • 搭建监控中心dubbo-admin:
      • 页面输入localhost:7001进入控制台,默认用户名和密码为root

      • 在pom.xml目录中进入cmd,以mvn clean package打包;在生成的target目录下找到jar包,以java -jar xxx.jar启动项目;端口号7001

      • 修改配置文件中配置的dubbo.registry.address=zookeeper://127.0.0.1:2181

      • 下载安装Dubbo,可看到它实质就是一个jar包

      • 编写各个微服务,注册服务

        • 导入dubbo依赖和Zookeeper客户端

        • 配置provider.xml

           <!-- 服务名称,唯一 -->
           <dubbo:application name="serviceProviderName" />
           <!-- 注册中心位置,两种方式 -->
           <dubbo:registry address="zookeeper://ip:port" />
           <dubbo:registry protocol="zookeeper" address="ip:port" />
           <!-- 通信规则,协议,端口 -->
           <dubbo:protocol name="dubbo" port="20880" />
           <!-- 暴露服务供使用,ref指向服务真正的实现 -->
           <dubbo:service interface="UserService" ref="UserServiceImle" />
           <bean id = "UserServiceImle" class="UserServiceImle" />

           

        • 启动服务,即可注册

      • 服务消费者去订阅服务:

        • 配置consumer.xml

           <!-- xml配置方法注意需要扫描包,使注解有效 -->
           <context:component-scan bace-package="使用服务的包" />
           ​
           <dubbo:application name="serviceConsumerName" />
           <dubbo:registry address="zookeeper://ip:port" />
           ​
           <!-- 需要调用的远程服务几口:生成服务代理 -->
           <dubbo:reference interface="UserService" id="UserService" loadbanlence="负载均衡机制" />

           

        • @Autowired或@Reference 注入服务,使用即可;参数可指定负载均衡机制

      • 简单的监控中心dubbo-montor-simple

    • 整合SpringBoot:

      • 导入dubbo-start依赖

      • 配置:

         dubbo:
             application:
                 name: serviceProviderName
             registry:
                 address: 127.0.0.1:2181
                 protpcol: zookeeper
             protpocol:
                 name: dubbo
                 port: 20880
             monitor:

         

      • 声明和暴露服务:在服务service上使用dubbo的注解@Service

      • 开启:启动类上@EnableDubbo

    • 中文官网:https://dubbo.apache.org/zh/


 

3 Zookeeper

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值