Rumah >Java >javaTutorial >Bagaimana SpringBoot2.0 melaksanakan invokasi jauh perkhidmatan RPC

Bagaimana SpringBoot2.0 melaksanakan invokasi jauh perkhidmatan RPC

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBke hadapan
2023-05-11 20:22:041402semak imbas

1. Pengenalan kepada rangka kerja Dubbo

1. šŸŽœ >1) Petak kecil dalam rajah, Protokol, Kluster, Proksi, Perkhidmatan, Bekas, Pendaftaran dan Monitor, mewakili lapisan atau modul yang menunjukkan interaksi dengan perniagaan, dan yang hijau hanya berinteraksi di dalam Dubbo.

2) Petak latar belakang Pengguna, Pembekal, Pendaftaran dan Monitor dalam rajah mewakili nod topologi logik penggunaan. Bagaimana SpringBoot2.0 melaksanakan invokasi jauh perkhidmatan RPC

3) Garis putus-putus biru dalam rajah dipanggil semasa pemulaan, garis putus-putus merah ialah panggilan tak segerak semasa masa jalan dan garis pepejal merah dipanggil serentak semasa masa jalan.

4) Angka tersebut hanya mengandungi lapisan RPC dan tidak termasuk lapisan Remoting secara keseluruhannya adalah tersirat dalam Protokol.

2. Penerangan peranan teras

1) Pembekal mendedahkan penyedia perkhidmatan

2) Pengguna memanggil pengguna perkhidmatan (beban) perkhidmatan jauh Seimbang)

3) Pendaftaran perkhidmatan pendaftaran dan pusat pendaftaran penemuan (pemantauan, degupan jantung, tendang keluar, masuk semula)

4) Pantau masa panggilan kumulatif pengguna perkhidmatan dan pembekal dalam ingatan dan masa panggilan , secara proaktif menghantar data statistik ke pusat pemantauan setiap minit.

5) Bekas perkhidmatan bekas: panggilan jauh, bersiri

2 Integrasi dengan SpringBoot2.0

1

2. Penerangan struktur projek

Penerangan struktur

<!-- čæ™é‡ŒåŒ…含äŗ†Zookeeperä¾čµ–å’ŒDubboä¾čµ– -->
<dependency>
Ā <groupid>com.alibaba.boot</groupid>
Ā <artifactid>dubbo-spring-boot-starter</artifactid>
Ā <version>0.2.0</version>
</dependency>

3 Konfigurasi teras

Bagaimana SpringBoot2.0 melaksanakan invokasi jauh perkhidmatan RPC1 ) Konfigurasi pembekal

dubbo-consumeļ¼šęœåŠ”ę¶ˆč“¹ę–¹
dubbo-providerļ¼šęœåŠ”ęä¾›ę–¹
dubbo-commonļ¼šå…¬å…±ä»£ē å—ļ¼ŒDubboęŽ„å£ļ¼Œå®žä½“ē±»

2) Konfigurasi pengguna

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

3. Kes demonstrasi

1 antara muka perkhidmatan

Perhatikan anotasi com.alibaba.dubbo.config.annotation.Service

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) Antara muka pengguna

Perhatikan anotasi di sini

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

@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;
Ā Ā }
}
  • 2 , Konfigurasi tamat masa antara muka

  • Konfigurasi ini boleh dikonfigurasikan pada pembekal perkhidmatan atau pengguna perkhidmatan Berikut ialah demonstrasi konfigurasi pada pembekal. Nota: tamat masa 1) Anotasi antara muka perkhidmatan
  • @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);
    Ā Ā }
    }

    2) Panggilan pengguna

    @Service(timeoutĀ =Ā 2000)
    @Component
    publicĀ classĀ DubboServiceImplĀ implementsĀ DubboServiceĀ {
    }
  • 3) Antara muka ujian

Tamat masa perkhidmatan membuang pengecualian

3. Konfigurasi berbilang versi antara muka

1) Pembekal perkhidmatan

menyediakan dua versi antara muka yang sama. Nota: versi.

Versi satu:

Ā @Override
Ā publicĀ StringĀ timeOut(IntegerĀ time)Ā {
Ā Ā Ā returnĀ dubboService.timeOut(time);
Ā }
com.alibaba.dubbo.remoting.TimeoutExceptionVersi dua:
@Service(versionĀ =Ā "1.0.0")
@Component
publicĀ classĀ VersionOneImplĀ implementsĀ VersionServiceĀ {
Ā Ā @Override
Ā Ā publicĀ StringĀ getVersion()Ā {
Ā Ā Ā Ā returnĀ "{当前ē‰ˆęœ¬ļ¼š1.0.0}";
Ā Ā }
}

2) Pengguna memanggil

melalui anotasi @Reference(version), yang akan menunjuk ke versi yang berbeza pelaksanaan.

rreeee

Atas ialah kandungan terperinci Bagaimana SpringBoot2.0 melaksanakan invokasi jauh perkhidmatan RPC. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataanļ¼š
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam