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

Bagaimana SpringBoot2.0 melaksanakan invokasi jauh perkhidmatan RPC

WBOY
WBOYke hadapan
2023-05-11 20:22:041342semak 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