Kata pengantar
Dengan pengembangan Internet, skala aplikasi situs web telah diperluas secara terus -menerus, dan arsitektur aplikasi vertikal konvensional tidak dapat lagi mengatasinya. Arsitektur layanan terdistribusi dan arsitektur komputasi seluler sangat penting. Dubbo adalah kerangka kerja layanan terdistribusi, yang lahir dalam kasus ini. Sekarang bisnis inti diekstraksi sebagai layanan independen, sehingga aplikasi front-end dapat merespons lebih cepat dan stabil.
Apa itu dubbo
Dubbo adalah kerangka kerja layanan open source yang didistribusikan Alibaba. Fitur terbesarnya adalah disusun dengan cara berlapis. Metode ini dapat memisahkan (atau memaksimalkan kopling longgar) di antara lapisan. Dari perspektif model layanan, Dubbo mengadopsi model yang sangat sederhana, baik penyedia menyediakan layanan atau konsumen mengkonsumsi layanan. Oleh karena itu, berdasarkan poin ini, kami dapat mengabstraksi dua peran penyedia layanan dan konsumen layanan. Tentang Pusat Pendaftaran, Dukungan Perjanjian, Pemantauan Layanan dan Konten Lainnya
Apa yang bisa dilakukan Dubbo
Ketika situs web menjadi lebih besar, tidak dapat dihindari bahwa aplikasi akan dibagi dan dilayani (layanan microservices) akan diperlukan untuk meningkatkan efisiensi pengembangan, mengoptimalkan kinerja, menyimpan sumber daya kompetitif utama, dll.
Karena semakin banyak layanan, informasi alamat URL dari layanan ini akan meledak, manajemen konfigurasi menjadi sangat sulit, dan tekanan titik tunggal dari penyeimbang beban perangkat keras F5 semakin besar dan lebih besar.
Ketika pengembangan lebih lanjut, dependensi antar-layanan menjadi rumit dan bahkan tidak dapat mengetahui aplikasi mana yang dimulai sebelum aplikasi mana, arsitek tidak dapat sepenuhnya menggambarkan hubungan arsitektur aplikasi.
Kemudian, jumlah panggilan layanan menjadi lebih besar dan lebih besar, dan masalah kapasitas layanan diekspos. Berapa banyak dukungan mesin yang dibutuhkan layanan ini? Kapan saya harus menambahkan mesin? dll……
Saat menghadapi masalah ini, Anda dapat menggunakan Dubbo untuk menyelesaikannya.
Apa yang saya bagikan dengan Anda kali ini adalah konfigurasi awal aplikasi Dubbo Framework dan penggunaan Pusat Registrasi Zookeeper; Ketika datang ke pusat pendaftaran, hanya ada dua jenis hal yang saya gunakan: Zookeeper dan Eureka. Saya menggunakan ZK dengan Dubbo, dan Eureka dengan Springcloud. Oleh karena itu, saya akan berbagi dengan Anda beberapa bab tentang layanan microser nanti, berharap ini akan membantu Anda.
Pasang Zookeeper Pusat Pendaftaran
Penyedia dan konsumen kerangka kerja dubbo
Penyebaran Dubbo-Admin
Pasang Zookeeper Pusat Pendaftaran
Pertama -tama, kita perlu mencari alamat unduhan ZooKeeper secara online. Saya berada di sistem Linux, jadi kami mengunduh paket Zookeeper-3.3.6.tar.gz dan membuka ritsletingnya melalui Tar -ZXVF ZooKeeper-3.3.6.tar.gz. Perlu dicatat bahwa file konfigurasi dalam paket umum adalah versi sampel default, dan nama file konfigurasi default dari ZooKeeper hanya zoo.cfg. Agar tidak menentukan nama file setiap saat, kita perlu membuat file konfigurasi bernama Zoo.cfg di direktori conf. Konten file dapat disalin dari zoo_sample.cfg atau ganti nama file. Kontennya adalah sebagai berikut vim zoo.cfg:
# Jumlah juta detik dari setiap tickTickTime = 2000 #heartbeat frekuensi # jumlah kutu bahwa fase sinkronisasi awal dapat mengambilinitlimit = 10 #Restrict Connection # Jumlah kutu yang dapat lewat antara # mengirim permintaan #PingererpireP/TaPer/5 # Direktori ke mana snapshot sticks. Port di mana klien akan ConnectClientport = 2081 #ZOeeKeeper Port Eksternal
Saya tidak akan memodifikasi informasi parameter di sini, dan menggunakan default; Perkenalkan secara singkat beberapa perintah yang umum digunakan tentang cara mengedit konten file di Linux:
vim zoo.cfg: lihat konten file
Masukkan: Jalankan perintah masukkan
ESC: Batalkan perintah, lalu tekan: Q: Keluar ,: WQ: Simpan dan Keluar
Ketika kami memiliki zoo.cfg, kami hanya perlu memasukkan direktori binnya untuk menemukan file zkserver.sh, dan memulai Pusat Pendaftaran Zookeeper dengan melaksanakan perintah start ./zkserver.sh. Prompt startup normal adalah sebagai berikut:
Biasanya, Zookeeper ada di server terpisah sebagai pusat pendaftaran, dan program (di sini mengacu pada lokal saya) perlu menghubungi pusat pendaftaran lain. Selain itu, pusat pendaftaran perlu memeriksa apakah port terbuka Zookeeper dapat terhubung. Lokal saya adalah Windows 10, jadi Anda tidak perlu memverifikasi port melalui klien Zookeeper. Anda hanya perlu menggunakan Telnet IP 2081 untuk mendeteksi apakah port terbuka;
Penyedia dan konsumen kerangka kerja dubbo
Pertama -tama, untuk kenyamanan, kita perlu mendefinisikan antarmuka terpadu, yang merupakan antarmuka publik yang diekstraksi oleh bisnis. Kami mengemas antarmuka ini secara terpisah ke dalam modul. Ini adalah dubbo_api. Kami mendefinisikan antarmuka berikut dalam modul ini:
Public Interface UserserService {list <mouser> getUsers (); }Kemudian, buat modul penyedia, yang tergantung pada modul dubbo_api dan mengimplementasikan antarmuka Userservice, kode ini sebagai berikut:
Public Class UserserViceImpl mengimplementasikan UserserService {@Value ("$ {server.port}") private int port; / ** * @return */ @Override Daftar publik <mouser> getUsers () {list <mouser> Daftar = ArrayList baru <> (); untuk (int i = 0; i <5; i ++) {mouser user = mouser baru (); user.setusername ("shenniu" + i); user.setUserpwd ("port:" + port); list.add (pengguna); } daftar pengembalian; }}Sebagai penyedia layanan, untuk menggunakan kerangka kerja Dubbo, Anda harus terlebih dahulu memperkenalkan Dubbo dan kemudian melakukan beberapa konfigurasi. Pertama, kita perlu memperkenalkan dependensi Dubbo melalui Maven di modul dubbo_provider. Zookeeper digunakan di pusat pendaftaran, jadi kita juga perlu memperkenalkan dependensi yang sesuai melalui Maven:
<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.8</version> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.3</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.3</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.example</groupId> <ArTifactId> dubbo_api </stifactid> <version> 0.0.1-snapshot </version> </gandendency>
Setelah menyelesaikan ketergantungan, sisanya adalah untuk mengonfigurasi penyedia Dubbo, buat file konfigurasi sumber daya/dubbo-conf/server.xml, dan konten file:
<? XML Versi = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmls xmlns: dubbo = "http://code.alibabatech.com/schema/dubbo" xsi: schemalocation = "http://www.springframework.org http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <!-nama penyedia-> <dubbo: name aplikasi =" dempu-provider "/<!-Alamat layanan Zookeeper: Zookeeper: Demo-provider"/<! Alamat = "192.168.168.168:2081" /> <!-Gunakan protokol dubbo untuk mengekspos layanan pada port 20880, protokol port komunikasi-> <dubbo: name protocol = "dubbo" port = "20880" /> <!-antarmuka layanan pengguna-> <Dubbo: Layanan /Layanan Uservace = ". Implementasi Antarmuka-> <bean ID = "UserserService"/> </tagel>
Tambahkan sumber daya impor @importresource ("classpath: dubbo-conf/*. Xml") di portal dubboproviderapplication, dan penyedia layanan kami selesai di sini. Periksa log startup:
Tidak ada pengecualian ketika penyedia layanan dimulai. Mari kita lihat penelepon untuk membuat modul dubbo_consumer, dan juga memperkenalkan dependensi modul antarmuka publik Dubbo_API, kemudian buat UserController, dan ekspos antarmuka pengguna GET:
@RestControllerPublic kelas UserController {@Autowired Private UserService UserserService; @GetMapping ("/Users") Daftar Publik <Chouser> getUsers () {return userservice.getUsers (); }}Layanan pengguna di sini adalah suntikan antarmuka publik; Setelah pengkodean selesai, sisi konsumen memperkenalkan dependensi Dubbo dan Zookeeper:
<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.8</version> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.3</version> </dependency> <dependency> <GroupId> com.alibaba </groupId> <ArTifactId> dubbo </artifactid> <version> 2.5.3 </version> <celuctions> <scuxcusion> <groupid> org.springframework </groupid> <ArTifactId> Spring </arttifactid> </Exclusions> </Exclusions> </Exclusions>
Kami juga membuat file konfigurasi dengan Name Resources/dubbo-conf/client.xml dan memperkenalkan sumber daya ini di entri aplikasi:
@Importresource ("ClassPath: dubbo-conf/*. Xml")@springbootApplicationPublic kelas dubboconsumerapplication {public static void Main (string [] args) {springapplication.run (dubboconsumerapplication.class, args); }}Konten konfigurasi klien.xml adalah sebagai berikut:
<? XML Versi = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmls xmlns: dubbo = "http://code.alibabatech.com/schema/dubbo" xsi: schemalocation = "http://www.springframework.org http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <!-nama layanan-> <dubbo: name aplikasi =" Demo-Consumer "/<! Protocol = "ZooKeeper" Alamat = "192.168.168.168:2081" /> <!-Antarmuka Layanan Pengguna-> <Dubbo: Referensi ID = "Userservice" Interface = "Service.UsersERVICE" /> < /beans>
Pada saat ini, penyedia layanan sederhana, konfigurasi dan pengkodean penelepon layanan selesai, dan 3 modul adalah sebagai berikut:
Kemudian mulai masing -masing penyedia dan konsumen; Kemudian minta antarmuka melalui antarmuka pengontrol yang diekspos oleh konsumen. Alamat saya di sini adalah http: // localhost: 8082/pengguna:
Efeknya adalah bahwa konsumen mendapatkan hasil yang dikembalikan oleh penyedia melalui panggilan antarmuka pengguna yang disuntikkan getUsers (), yang juga berarti bahwa penggunaan sederhana dari kerangka kerja Dubbo telah dianggap berhasil.
Penyebaran Dubbo-Admin
Sebagai kerangka kerja RPC yang populer, Dubbo memiliki alat pemantauan sumber terbuka ini Dubbo-Admin. Saya harus mengatakan bahwa paket dubbo-admin.war yang siap pakai di internet tidak dapat digunakan sekarang atau membutuhkan poin CSSDN untuk diunduh. Ada banyak versi dan itu agak rumit. Dengan tegas pergi ke git untuk menarik kode sumber dan mengemasnya sendiri. Alamat GIT adalah: https://github.com/apache/incubator-dubbo-ops. Setelah menariknya ke bawah, kita hanya perlu memperhatikan proyek Dubbo-Admin, dan hal-hal lain dapat diabaikan untuk saat ini; Setelah membuka proyek, kami hanya perlu memodifikasi konfigurasi tangkapan layar berikut (Anda juga dapat memodifikasi file konfigurasi yang dikemas):
Alamat Konfigurasi dan Port Dubbo.Registry.Address = ZooKeeper: //127.0.0.1: 2081#Backend Login Kata Sandi Dubbo.admin.root.password = rootdubbo.admin.guest.password = Guest
Setelah mengeksekusi paket, Anda bisa mendapatkan nama: paket dubbo-admin-2.0.0.war, lalu letakkan di tomcat, dan telusuri melalui browser. Akun dan kata sandi keduanya root; Setelah masuk, Anda dapat melihat penyedia dan konsumen yang kami mulai sebelumnya. Ini adalah antarmuka Layanan Pusat Registrasi Pemantauan Dubbo-Admin. Anda dapat langsung mengklik layanan ini. Jika Anda tidak banyak bicara, cobalah sendiri.
Alamat GIT: https://github.com/shenniuboxing3 Paket penerbitan Nuget: https://www.nuget.org/profiles/shenniuboxing3
Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini memiliki nilai referensi tertentu untuk studi atau pekerjaan semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi. Terima kasih atas dukungan Anda ke wulin.com.