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

Bagaimana SpringBoot2.0 melaksanakan invokasi jauh perkhidmatan RPC

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2023-05-11 20:22:04
ke hadapan
1356 orang telah melayarinya

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>
Salin selepas log masuk

3 Konfigurasi teras

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

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

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
Salin selepas log masuk

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
Salin selepas log masuk

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;
  }
}
Salin selepas log masuk
  • 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);
      }
    }
    Salin selepas log masuk

    2) Panggilan pengguna

    @Service(timeout = 2000)
    @Component
    public class DubboServiceImpl implements DubboService {
    }
    Salin selepas log masuk
  • 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);
 }
Salin selepas log masuk
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}";
  }
}
Salin selepas log masuk

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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan