Heim >Java >javaLernprogramm >Wie SpringBoot2.0 den Remote-Aufruf von RPC-Diensten implementiert

Wie SpringBoot2.0 den Remote-Aufruf von RPC-Diensten implementiert

WBOY
WBOYnach vorne
2023-05-11 20:22:041329Durchsuche

1. Einführung in das Dubbo-Framework

1. Framework-Abhängigkeiten

Wie SpringBoot2.0 den Remote-Aufruf von RPC-Diensten implementiert

Legendenbeschreibung:

1) Die kleinen Quadrate in der Abbildung: Protokoll, Cluster, Proxy, Dienst, Container, Registrierung, Monitor, stellen Ebenen oder Module dar, blau gefärbte zeigen Interaktionen mit dem Unternehmen an, grüne interagieren nur innerhalb von Dubbo.

2) Die Hintergrundquadrate Consumer, Provider, Registry und Monitor in der Abbildung stellen die Knoten der logischen Topologie der Bereitstellung dar.

3) Die blaue gepunktete Linie in der Abbildung wird während der Initialisierung aufgerufen, die rot gepunktete Linie ist ein asynchroner Aufruf zur Laufzeit und die rote durchgezogene Linie wird zur Laufzeit synchron aufgerufen.

4) Die Abbildung enthält nur die RPC-Schicht und nicht die Remoting-Schicht als Ganzes, die im Protokoll enthalten ist. 2. Beschreibung der Kernrolle und Entdeckung (Überwachung, Herzschlag, Kick-out, Wiedereintritt)

4) Überwachen Sie Servicekonsumenten und -anbieter, sammeln Sie die Anzahl der Anrufe und Anrufzeiten im Speicher und senden Sie jede Minute aktiv statistische Daten an das Überwachungszentrum. 5) Containerdienst laufende Container: Remote -Aufruf, Serialisierung

2. . Kernkonfiguration

1) Anbieterkonfiguration

<!-- 这里包含了Zookeeper依赖和Dubbo依赖 -->
<dependency>
 <groupid>com.alibaba.boot</groupid>
 <artifactid>dubbo-spring-boot-starter</artifactid>
 <version>0.2.0</version>
</dependency>

3. Demonstrationsfall

1. Dienst-Remote-AufrufAchten Sie auf die Anmerkungen hier. alibaba.dubbo.config.annotation.Service

dubbo-consume:服务消费方
dubbo-provider:服务提供方
dubbo-common:公共代码块,Dubbo接口,实体类

2) Verbraucherschnittstelle

Achten Sie auf die Anmerkungen hierWie SpringBoot2.0 den Remote-Aufruf von RPC-Diensten implementiert

com.alibaba.dubbo.config.annotation.Referenceorg.springframework.stereotype.Service

server:
 tomcat:
 uri-encoding: UTF-8
 max-threads: 1000
 min-spare-threads: 30
 port: 7007
 connection-timeout: 5000ms
spring:
 application:
 name: block-dubbo-provider
# Dubbo 配置文件
dubbo:
 application:
 name: block-dubbo-provider
 registry:
 address: 127.0.0.1:2181
 protocol: zookeeper
 protocol:
 name: dubbo
 port: 20880
 scan:
 base-packages: com.boot.consume

2. Schnittstellen-Timeout-Konfiguration

Diese Konfiguration kann auf dem Dienstanbieter oder dem Dienstkonsumenten konfiguriert werden. Hier ist eine Demonstration der Konfiguration auf dem Anbieter. Hinweis: Timeout 1) Anmerkung zur Serviceschnittstelle

server:
 tomcat:
 uri-encoding: UTF-8
 max-threads: 1000
 min-spare-threads: 30
 port: 7008
 connection-timeout: 5000ms

spring:
 application:
 name: block-dubbo-consume
# Dubbo 配置文件
dubbo:
 application:
 name: block-dubbo-consume
 registry:
 address: 127.0.0.1:2181
 protocol: zookeeper
2) Verbraucheraufruf
@Service
@Component
public class DubboServiceImpl implements DubboService {
  private static Logger LOGGER = LoggerFactory.getLogger(DubboServiceImpl.class) ;
  @Override
  public String getInfo(String param) {
    LOGGER.info("字符参数:{}",param);
    return "[Hello,Cicada]";
  }
  @Override
  public UserEntity getUserInfo(UserEntity userEntity) {
    LOGGER.info("实体类参数:{}",userEntity);
    return userEntity;
  }
}
3) Testschnittstelle

Service-Timeout löst Ausnahme aus

3. Konfiguration der Schnittstelle mit mehreren Versionen

    1) Dienstanbieter
  • Zwei Versionen der gleichen Schnittstelle implementiert sind. Hinweis: Version.

  • Version eins:
  • @Service
    public class ConsumeService implements DubboService {
      @Reference
      private DubboService dubboService ;
      @Override
      public String getInfo(String param) {
        return dubboService.getInfo(param);
      }
      @Override
      public UserEntity getUserInfo(UserEntity userEntity) {
        return dubboService.getUserInfo(userEntity);
      }
    }

    Version zwei:

    @Service(timeout = 2000)
    @Component
    public class DubboServiceImpl implements DubboService {
    }
  • 2) Der Verbraucher ruft

über die Annotation @Reference(version) auf, die auf verschiedene Versionen der Schnittstellenimplementierung verweist.

 @Override
 public String timeOut(Integer time) {
   return dubboService.timeOut(time);
 }

Das obige ist der detaillierte Inhalt vonWie SpringBoot2.0 den Remote-Aufruf von RPC-Diensten implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen