All Products
Search
Document Center

Enterprise Distributed Application Service:Enterprise Distributed Application Service: Panduan developer

Last Updated:Mar 11, 2026

Enterprise Distributed Application Service (EDAS) mendukung Apache Dubbo untuk membangun aplikasi microservice. Panduan ini mencakup sistem ekstensi Service Provider Interface (SPI) Dubbo, internal framework, serta prinsip desainnya.

Cara kerja sistem ekstensi SPI

Dubbo menggunakan mekanisme SPI ringan untuk menjaga modularitas intinya. Setiap komponen utama—protokol, load balancer, router, dan registri—didefinisikan sebagai titik ekstensi yang dapat dipasang. Artinya, Anda dapat:

  • Mengganti implementasi bawaan hanya dengan mengubah satu properti konfigurasi, tanpa perlu memodifikasi kode framework.

  • Menambahkan implementasi kustom dengan mengimplementasikan antarmuka Java dan mendaftarkannya melalui file SPI.

  • Memperluas perilaku secara transparan—Dubbo memperlakukan ekstensi pihak ketiga dan implementasi bawaan secara setara.

Untuk memahami arsitektur dasarnya, mulailah dengan topik mengenai desain framework dan pemuatan SPI berikut ini.

Implementasi ekstensi SPI

Dubbo mendefinisikan lebih dari 20 titik ekstensi, dikelompokkan berdasarkan fungsinya di sini. Setiap titik ekstensi merupakan antarmuka Java yang mendukung implementasi kustom.

RPC dan manajemen traffic

Titik ekstensiApa yang Dikendalikan
ProtocolProtokol jaringan untuk panggilan remote
FilterRantai filter request dan response untuk kebutuhan lintas potong seperti logging atau autentikasi
ClusterStrategi toleransi kesalahan saat panggilan gagal (misalnya, failover, failfast, forking)
RouterAturan routing yang menentukan penyedia mana yang menerima traffic
LoadBalanceStrategi distribusi request di antara beberapa penyedia
MergerLogika penggabungan hasil untuk pemanggilan yang difork

Service discovery dan konfigurasi

Titik ekstensiFungsinya
RegistryIntegrasi registri layanan
MonitorPengumpulan metrik dan pelaporan data pemantauan

Transport dan serialisasi

Titik ekstensiApa yang Dikendalikan
TransporterLapisan transport jaringan
ExchangerPola pertukaran request-response di atas lapisan transport
NetworkerManajemen topologi jaringan untuk skenario multi-registri
SerializationFormat serialisasi data

Siklus hidup dan proxying

Titik ekstensiApa yang Dikendalikan
InvokerListenerCallback yang dipicu pada event pemanggilan layanan
ExporterListenerCallback yang dipicu pada event ekspor layanan
ExtensionFactoryFactory untuk membuat dan mengelola instans ekstensi
ProxyFactoryFactory untuk membuat proxy layanan
CompilerKompilasi dinamis kode sumber Java
DispatcherStrategi penugasan thread untuk pesan masuk
ThreadPoolStrategi pool thread untuk eksekusi layanan

Diagnostik dan utilitas

Titik ekstensiYang Dikendalikan
TelnetHandlerHandler untuk perintah manajemen runtime berbasis telnet
StatusCheckerLogika health check untuk pelaporan status layanan
PageHandlerRendering halaman status untuk server HTTP bawaan
ContainerManajemen siklus hidup container layanan
CacheStrategi caching hasil untuk pemanggilan berulang
ValidationValidasi parameter sebelum pemanggilan
LoggerAdapterAdapter untuk mengintegrasikan berbagai framework logging

Mekanisme Internal Framework

Topik-topik berikut menjelaskan cara Dubbo dibangun dan bagaimana mekanisme SPI bekerja di balik layar.

TopikCakupannya
Build kode sumberMembangun kode sumber Dubbo dari repositori
Desain frameworkArsitektur keseluruhan, desain berlapis, dan dependensi modul
Pemuatan SPICara Dubbo menemukan, memuat, dan menginisialisasi ekstensi SPI
Detail implementasiImplementasi internal komponen inti
Pusat konfigurasiManajemen konfigurasi terpusat untuk layanan terdistribusi
Perjanjian publikKonvensi dan kontrak protokol publik yang digunakan bersama oleh komponen-komponen Dubbo

Prinsip desain

Framework Dubbo mengikuti serangkaian prinsip desain yang didokumentasikan dalam topik-topik berikut. Gunakan sebagai referensi saat berkontribusi pada framework atau mengembangkan ekstensi kustom.

TopikCakupannya
Perhatian terhadap detailMengapa kasus pinggiran dan keputusan desain halus penting dalam kode framework
Pola desain dasarPola dan konvensi desain inti yang digunakan di seluruh basis kode
Ekstensibilitas dan ekstensi inkrementalCara merancang ekstensi yang kompatibel mundur dan dapat dikomposisi
Desain konfigurasiPanduan untuk merancang parameter konfigurasi dan nilai default
KetangguhanPenanganan error, pola ketahanan, dan coding defensif dalam framework
Desain anti-salahMencegah penyalahgunaan melalui API yang jelas, nilai default yang masuk akal, dan validasi input
Refaktorisasi titik ekstensiKapan dan bagaimana merefaktorisasi antarmuka titik ekstensi

Standar kualitas kode

TopikCakupannya
Pemberian VersiKonvensi penomoran versi dan jaminan kompatibilitas
Daftar periksaDaftar periksa verifikasi pra-rilis untuk perubahan framework
Code smellsAnti-pola umum yang harus dihindari dalam kode framework Dubbo
Konvensi codingGaya kode, penamaan, dan standar format
Pengujian kompatibilitasStrategi pengujian untuk kompatibilitas mundur dan maju