七. 利用动物管理员+dubbo监测和分发服务。

      最后更新:2021-10-29 23:55:59 手机定位技术交流文章

      前言

      先行概念

      什么是rpc

      许多人认为rpc是一个网络协议,这是错误的。 我认为,rpc协议应该被描述为通信协议风格,这类似于“网络协议 ” ( http ), 而不是“网络协议 ” ( http ) 。
      Rpc 协议要求查询时要求的样式与查询时相同,而结果则是加插和修改,删除是删除,搜索是取出,如下图所示。
      在这里插入图片描述

      RPC和Dubbo框架

      阿里巴巴的开放源码高性能服务框架使应用程序能够实现高性能RPC产出和服务投入功能,这些功能可能不遗余力地与 " 春季框架 " 相结合。

      在这个项目中使用二重身协议的目的是什么?

      随着项目业务变得更加复杂,职能不可避免地被拖入模块,随着规模的扩大,服务之间的相互作用将增加,而一项请求可能需要若干服务之间的互动,届时,dubbo协议的好处将变得显而易见。
      我们都知道,标准的 http 协议仍然是1.1, 也就是说,如果服务之间的每通电话 需要3次tcp握手来互相呼唤, 用户面前的情景是相当“慢”。
      另一方面,dubbo协议是一项长链协议,减少了与之相关的握手数量,并且是NIO无症状转移,正如NIO的概念读者所说:

      NIO和常规 IO之间的第一个主要区别是, IO 以流动为导向,而 NIO 则以缓冲为导向。 Java IO 流意味着,每次从流中读取一个或一个以上的字节,直到读取所有字节,它们都不存在。 此外,它不能将数据从流到流。如果有必要将数据从流到流,它需要从流到流到流,它需要缓冲地带缓冲。 NIO 有一种略微不同的缓冲导向方法。 数据被读入缓冲地带, 缓冲地带以后会处理, 必要时可以移动到缓冲区周围和周围。 这增加了处理过程的灵活性。 但是, 还需要检查缓冲地带是否包含您需要处理的所有数据。 此外, 还需要确保, 当更多的数据被读进缓冲带时, 它不包括缓冲区内尚未处理过的数据 。

      更多信息可在以下条款中找到:
      添加链接描述

      根据Zk+dubbo 实现黄豆项目,这里是代码的例子。

      工作原理

      Bubbo服务的 " 春靴 " 整合保证消费者可以在zk发现服务,并根据dubbo协议完成呼叫。
      但是,在下面的例子中,服务提供者对城市信息进行搜索,客户通过服务获得城市信息。

      启动zk

      以春季启动为基地的杜博公司服务登记

      代码示例

      城市类

      package org.spring.springboot.domain;
      
      import java.io.Serializable;
      
      * 城市实体分类 * * 城市实体分类 * * * 城市实体分类 * *
      public class City implements Serializable {
      
          private static final longserialVersionUID= -1L;
      
          * 邮政编码 */
          private Long id;
      
          ** 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 *
          private Long provinceId;
      
          * 城市名称 *
          private String cityName;
      
          * 详细说明 *
          private String description;
      
          public City() {
          }
      
          public City(Long id, Long provinceId, String cityName, String description) {
              this.id = id;
              this.provinceId = provinceId;
              this.cityName = cityName;
              this.description = description;
          }
      
          public Long getId() {
              return id;
          }
      
          public void setId(Long id) {
              this.id = id;
          }
      
          public Long getProvinceId() {
              return provinceId;
          }
      
          public void setProvinceId(Long provinceId) {
              this.provinceId = provinceId;
          }
      
          public String getCityName() {
              return cityName;
          }
      
          public void setCityName(String cityName) {
              this.cityName = cityName;
          }
      
          public String getDescription() {
              return description;
          }
      
          public void setDescription(String description) {
              this.description = description;
          }
      }
      
      

      城市查询接口

      package org.spring.springboot.dubbo;
      
      import org.spring.springboot.domain.City;
      
      * Dubbo城市业务服务水平* * * /
      public interface CityDubboService {
      
          * 使用城市名称查询城市信息 * @param cityName */
          City findCityByName(String cityName);
      }
      
      

      城市查询实现

      package org.spring.springboot.dubbo.impl;
      
      import com.alibaba.dubbo.config.annotation.Service;
      import org.spring.springboot.domain.City;
      import org.spring.springboot.dubbo.CityDubboService;
      import org.springframework.beans.factory.annotation.Autowired;
      
      * Dubbo城市业务服务一级实现层 * * /
      以Dubbo服务公司的名义签名
      @Service(version = "1.0.0")
      public class CityDubboServiceImpl implements CityDubboService {
      
          @Override
          public City findCityByName(String cityName) {
              return new City(1L,2L,"福建福州","有福之州");
          }
      }
      
      

      启动代码

      package org.spring.springboot;
      
      import org.springframework.boot.SpringApplication;
      import org.springframework.boot.autoconfigure.SpringBootApplication;
      
      * 春季启动应用程序初始化类别 * * * /
      春季启动应用程序识别
      @SpringBootApplication
      public class ServerApplication {
      
          public static void main(String[] args) {
              // 程序启动入口
              发射嵌入式托姆卡特和启动春季环境及其组成部分。
              SpringApplication.run(ServerApplication.class,args);
          }
      }
      
      

      配置

      ## Dubbo 服务提供商配置 # # 使用名称 Spring.dubbo.application.name=# 春季登记中心地址.dubbo.registry.address=zookeeper://127.0.0.1:2181
      春天是协议名称。.dubbo.protocol.name=《春天杜博港议定书》.dubbo.protocol.port=20880
      # 春季成套服务目录.dubbo.scan=org.spring.springboot.dubbo
      

      启动并查看zk节点

      [zk: localhost:2181(CONNECTED) 2]ls/dubbo/org.spring.springboot.dubbo.CityDubboService/providers
      [dubbo%3A%2F%2F192.168.2.1%3A20880%2Forg.spring.springboot.dubbo.CityDubboService%3Fanyhost%3Dtrue%26application%3Dprovider%26dubbo%3D2.5.3%26interface%3Dorg.spring.springboot.dubbo.CityDubboService%26methods%3DfindCityByName%26pid%3D17044%26revision%3D1.0.0%26side%3Dprovider%26timestamp%3D1635264068561%26version%3D1.0.0]
      

      基于 " 春靴 " 的 " dubbo " 服务请求

      复制提供商的城市类别和城市查询界面。

      包括城市查询服务公司 Dubbo。

      package org.spring.springboot.dubbo;
      
      import com.alibaba.dubbo.config.annotation.Reference;
      import org.spring.springboot.domain.City;
      import org.springframework.stereotype.Component;
      
      * 城市的消费者服务* * 城市的消费者服务* *
      @Component
      public class CityDubboConsumerService {
      
          @Reference(version = "1.0.0")
          CityDubboService cityDubboService;
      
          public void printCity() {
              String cityName="温岭";
              Citycity= cityDubboService.findCityByName(cityName);
              System.out.println(city.toString());
          }
      }
      
      

      测试结果

      如下图所示,消费者将使用zk找到服务,然后打电话给提供商完成请求。
      在这里插入图片描述

      总结

      从上述情况中,我们可以看到zk+dubbo的强度:通过zk监测后续行动也可以通过集群确保zk的强度,以及提供者和客户之间脱钩,从而推动后续服务的扩散,只需将服务登记到zk即可。

      参考项目源代码地址

      https://github.com/JeffLi1993/springboot-learning-example
      

      请记住,你只应专注于下列两个春季靴子项目:

       springboot-dubbo-client
      springboot-dubbo-server 
      

      在执行专门课程时,可参考该课程。
      Dubbo/动物园维护者春季运动整合

      参考文献

      Dubbo/动物园维护者春季运动整合

      Dubbo协议介绍

      熟知杜博和动物园守护者

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/12405.html

          热门文章

          文章分类