Heim > Java > javaLernprogramm > Hauptteil

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

WBOY
Freigeben: 2023-05-11 20:22:04
nach vorne
1288 Leute haben es durchsucht

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>
Nach dem Login kopieren

3. Demonstrationsfall

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

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

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
Nach dem Login kopieren

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
Nach dem Login kopieren
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;
  }
}
Nach dem Login kopieren
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);
      }
    }
    Nach dem Login kopieren

    Version zwei:

    @Service(timeout = 2000)
    @Component
    public class DubboServiceImpl implements DubboService {
    }
    Nach dem Login kopieren
  • 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);
 }
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage