Eureka adalah produk open source Netflix yang menyediakan pendaftaran dan penemuan layanan, dan menyediakan implementasi lengkap dari registri layanan dan penemuan layanan. Ini juga merupakan salah satu komponen paling penting dan inti dalam sistem Springcloud.
PENDAHULUAN LATAR BELAKANG
Pusat pelayanan
Pusat Layanan juga disebut Pusat Pendaftaran, yang mengelola berbagai fungsi layanan termasuk pendaftaran layanan, penemuan, pemutus sirkuit, beban, penurunan peringkat, dll., Seperti berbagai fungsi dari latar belakang admin Dubbo.
Perubahan apa yang akan terjadi dengan hubungan panggilan pusat layanan? Gambarlah beberapa diagram sederhana untuk membantu Anda memahami
Proyek A Proyek Panggilan B
Biasanya hubungi Proyek A untuk meminta proyek B
Setelah memiliki pusat layanan, tidak ada layanan yang dapat dihapus dan digunakan secara langsung, dan perlu dipanggil melalui pusat layanan.
Project A Call Project B, Project B Calling Project C
Pada saat ini, langkah -langkah yang akan dihubungi akan menjadi dua langkah: langkah pertama adalah bahwa Proyek A meminta server Proyek B Project B dari Pusat Layanan, dan kemudian Project B meminta layanan Proyek C Project dari Pusat Layanan.
Proyek -proyek di atas hanyalah panggilan sederhana antara dua atau tiga, tetapi jika ada lebih dari 20 proyek dan 30 proyek, proyek terdistribusi perusahaan kami telah mencapai lebih dari 20 pada akhir 2015. Buatlah gambar untuk menggambarkan hubungan antara lusinan proyek dan semua adalah lini. Setiap perubahan pada salah satu proyek akan melibatkan beberapa proyek restart, yang sangat merepotkan dan rentan terhadap kesalahan. Untuk mendapatkan layanan melalui Pusat Layanan, Anda tidak perlu memperhatikan alamat IP proyek yang Anda hubungi. Ini terdiri dari beberapa server. Setiap kali Anda pergi ke pusat layanan untuk mendapatkan layanan yang tersedia untuk dihubungi.
Karena semua jenis layanan telah terdaftar di pusat layanan, ada banyak fungsi lanjutan yang harus dilakukan. Misalnya, beberapa layanan menyediakan layanan yang sama untuk menyeimbangkan beban; Pantau tingkat keberhasilan panggilan server untuk melakukan pemecahan sirkuit, lepaskan titik kesalahan dalam daftar layanan; Pantau waktu panggilan layanan untuk menetapkan bobot yang berbeda untuk server yang berbeda, dll.
Sebelum berbicara tentang Eureka, saya akan bergosip tentang Netflix
Netflix
Pendahuluan berikut berasal dari Baidu Encyclopedia:
Netflix adalah perusahaan Amerika yang menyediakan media streaming online di tempat di Amerika Serikat dan Kanada, dan layanan penyewaan DVD dan Blu-ray Disc Online. Didirikan pada tahun 1997, perusahaan ini berkantor pusat di Los Gaitu, California, dan telah memulai layanan berlangganan pada tahun 1999. Pada tahun 2009, perusahaan dapat menyediakan hingga 100.000 film DVD dan memiliki 10 juta pelanggan. Pada 25 Februari 2007, Netflix mengumumkan bahwa mereka telah menjual DVD ke -1 miliar. Sebuah laporannya mengatakan bahwa pada tahun 2011, penjualan film online Netflix menyumbang 45% dari total penjualan film online pengguna AS.
Pertama kali saya melihat kata ini, itu adalah di awal berbagai drama atau film Amerika. Perwakilan drama Amerika yang difilmkan oleh Netflix termasuk "House of Cards", "Narkoba Lords", dan "Stranger Things". Kemudian, ketika saya sedang belajar Springcloud, saya menemukan perusahaan Netflix dan bertanya -tanya apakah mereka adalah perusahaan yang sama. Setelah memeriksa akhiran email di GitHub, saya memutuskan bahwa itu memang perusahaan yang sama. Faktanya, layanan mikro Springcloud didasarkan pada produk open source Netflix.
Komponen kerangka kerja open source Netflix telah terbukti dalam lingkungan layanan mikro terdistribusi skala besar Netflix selama bertahun-tahun dan secara bertahap diterima oleh masyarakat sebagai komponen standar untuk membangun kerangka kerja layanan mikro. Produk Open Source Spring Cloud terutama didasarkan pada pengemasan lebih lanjut dari komponen open source Netflix, yang memfasilitasi pengembang Spring untuk membangun kerangka kerja Microservice dasar. Untuk beberapa perusahaan yang berniat membangun sistem kerangka kerja Microservice, memanfaatkan atau merujuk sepenuhnya pada komponen layanan microser netflix (atau Spring Cloud) dan melakukan kustomisasi perusahaan yang diperlukan atas dasar ini tidak diragukan lagi merupakan jalan pintas ke arsitektur layanan mikro.
Eureka
Menurut pengantar resmi:
Eureka adalah layanan berbasis REST (Representational Transfer) yang terutama digunakan di AWS Cloud untuk menemukan layanan untuk tujuan penyeimbangan beban dan failover server tingkat menengah.
Eureka adalah layanan berbasis istirahat, terutama digunakan di AWS Cloud, dan menempatkan layanan untuk memuat penyeimbangan dan failover server tingkat menengah.
Spring Cloud merangkum modul Eureka yang dikembangkan oleh Netflix untuk mengaktifkan pendaftaran dan penemuan layanan. Eureka mengadopsi arsitektur desain CS. Eureka Server adalah server dengan fungsi pendaftaran layanan, itu adalah pusat pendaftaran layanan. Layanan mikro lainnya dalam sistem menggunakan klien Eureka untuk terhubung ke Eureka Server dan mempertahankan koneksi detak jantung. Dengan cara ini, personel pemeliharaan sistem dapat memantau apakah setiap layanan mikro dalam sistem berjalan secara normal melalui server Eureka. Beberapa modul lain dari Spring Cloud (seperti Zuul) dapat menggunakan Eureka Server untuk menemukan layanan mikro lainnya dalam sistem dan menjalankan logika yang relevan.
Eureka terdiri dari dua komponen: server Eureka dan klien Eureka. Server Eureka digunakan sebagai server pendaftaran layanan. Klien Eureka adalah klien Java yang digunakan untuk menyederhanakan interaksi dengan server, bertindak sebagai penyeimbang beban pemungutan suara, dan memberikan dukungan failover layanan. Netflix menggunakan klien lain di lingkungan produksinya, yang menyediakan penyeimbangan beban tertimbang berdasarkan lalu lintas, pemanfaatan sumber daya, dan status kesalahan.
Gunakan gambar untuk memahami yang berikut:
Angka di atas secara singkat menjelaskan arsitektur dasar Eureka, yang terdiri dari 3 peran:
1. Server Eureka
2. Penyedia Layanan
3. Konsumen Layanan
Praktik kasus
Eureka Server
Spring Cloud telah membantu saya menerapkan pusat pendaftaran layanan, dan kami hanya perlu beberapa langkah sederhana untuk menyelesaikannya.
1. Tambahkan dependensi di pom
<Dependencies> <dependency> <GroupId> org.springframework.cloud </proupid> <t ArtifactId> Spring-cloud-starter </stifactid> </dependency> <sependency> <rouptid> org.spramework.cloud </groupid> <ArtifactId> <cendrand-cloud-starter-eurence.cloud </grup <GroupId> org.springframework.boot </groupid> <ArTifactId> spring-boot-starter-test </stifactid> <scope> test </seupope> </dependency> </dependencies>
2. Tambahkan anotasi @EnableEurekaServer ke kode startup
@SpringbootApplication@enableeureKaserverpublic kelas springcloudeureKaApplication {public static void main (string [] args) {springApplication.run (springcloudeureAkeAkaplication.class, args); }}3. File Konfigurasi
Secara default, Registri Layanan juga akan mencoba mendaftarkan dirinya sebagai klien, jadi kita perlu menonaktifkan perilaku pendaftaran kliennya dan menambahkan konfigurasi berikut dalam application.properties :
spring.application.name=spring-cloud-eurekaserver.port=8000eureka.client.register-with-eureka=falseeureka.client.fetch-registry=falseeureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/eureka.client.register-with-eureka : Menunjukkan apakah akan mendaftarkan diri Anda dengan Eureka Server, default benar.eureka.client.fetch-registry : Menunjukkan apakah akan mendapatkan informasi pendaftaran dari Eureka Server, default benar.eureka.client.serviceUrl.defaultZone : Mengatur alamat untuk berinteraksi dengan server eureka. Layanan kueri dan layanan pendaftaran perlu mengandalkan alamat ini. Standarnya adalah http: // localhost: 8761/eureka; Beberapa alamat dapat digunakan dan dipisahkan.Setelah memulai proyek, kunjungi: http: // localhost: 8000/dan Anda dapat melihat halaman di bawah ini, di mana tidak ada layanan yang ditemukan
Gugus
Layanan kritis seperti pusat pendaftaran, jika itu adalah satu titik, akan sangat menghancurkan untuk mengalami kegagalan. Dalam sistem terdistribusi, pusat pendaftaran layanan adalah bagian dasar yang paling penting dan harus dalam keadaan di mana layanan dapat disediakan kapan saja. Untuk mempertahankan ketersediaannya, menggunakan cluster adalah solusi yang baik. Eureka mengimplementasikan penyebaran yang sangat tersedia dengan mendaftarkan satu sama lain, jadi kita hanya perlu mengonfigurasi server eureke untuk mengonfigurasi layanan yang tersedia lainnya untuk mencapai penyebaran yang sangat tersedia.
Pusat Pendaftaran Node Ganda
Untuk pertama kalinya, kami mencoba membangun pusat pendaftaran dual-node.
1. Buat Application-peer1.properties sebagai konfigurasi Pusat Layanan PEER1, dan Point ServiceUrl ke Peer2
spring.application.name = spring-cloud-eurekaserver.port = 8000eureka.instance.hostname = peer1eureka.client.serviceurl.defaultzone = http: // peer2: 8001/eureka/
2. Buat aplikasi-peer2.properties sebagai konfigurasi Pusat Layanan PEER2, dan Point ServiceUrl ke Peer1
spring.application.name = spring-cloud-eurekaserver.port = 8001eureka.instance.hostname = peer2eureka.client.serviceurl.defaultzone = http: // peer1: 8000/eureka/
3. Konversi Host
Tambahkan konfigurasi berikut ke file host
127.0.0.1 Peer1 127.0.0.1 Peer2
4. Paket Mulai
Jalankan perintah berikut secara bergantian
#Package MVN Paket Bersih# MULAI EUREKAJAVA Dengan PEER1 DAN INFORMASI KONFIGURASI PEEER2 masing-masing -jar Spring-cloud-eureka-0.0.1-snapshot.jar --spring.profiles.active = peer1java -jar spring-cloud-eureka-0.0.1-snapshot.japshot.jars.jar.jar.jar.jar.japs.japs.japs.japs.japs.japs.japs.japs.japs.japs.japs.japs.japs.japs.japs.japs.japs.japs.japs.japs.japs.japs.japs.japs.japs.japs.japs.japs.japs.japs.japs.japs. yang SNAPSHO yang ”
Setelah memulai satu per satu, browser masuk: http://localhost:8000/ rendering adalah sebagai berikut:
Menurut gambar tersebut, dapat dilihat bahwa replika DS dari Pusat Pendaftaran PEER1 memiliki informasi konfigurasi yang relevan dari PEER2 dan muncul dalam replika yang tersedia. Kami secara manual menghentikan Peer2 untuk mengamati, dan menemukan bahwa Peer2 akan pindah ke kolom re-replicas yang tidak tersedia, menunjukkan bahwa PEER2 tidak tersedia.
Konfigurasi simpul ganda ini telah selesai.
Penggunaan Cluster Eureka
Dalam produksi, kita mungkin memerlukan tiga atau lebih pusat pendaftaran untuk memastikan stabilitas layanan. Prinsip -prinsip konfigurasi sebenarnya sama, dan kami mengarahkan pusat pendaftaran ke pusat pendaftaran lainnya masing -masing. Di sini kami hanya akan memperkenalkan konfigurasi tiga kelompok. Faktanya, ini mirip dengan pusat pendaftaran simpul-ganda. Setiap pusat pendaftaran masing -masing dapat menunjuk ke dua node lainnya, dan menggunakan Application.yml untuk mengonfigurasinya.
Detail konfigurasi application.yml adalah sebagai berikut:
--spring: application: name: spring-cloud-eureka profiles: peer1server: port: 8000eureka: instance: hostname: peer1 client: serviceUrl: defaultZone: http://peer2:8001/eureka/,http://peer3:8002/eureka/---spring: application: name: spring-cloud-eureka profiles: peer2server: port: 8001eureka: instance: hostname: peer2 client: serviceUrl: defaultZone: http://peer1:8000/eureka/,http://peer3:8002/eureka/---spring: application: name: spring-cloud-eureka profiles: peer3server: port: 8002eureka: instance: hostname: peer3 client: serviceUrl: DefaultZone: http: // peer1: 8000/eureka/, http: // peer2: 8001/eureka/
Mulailah Pusat Registrasi Eureka dengan parameter konfigurasi masing -masing PEER1, PEER2, dan PEER3.
java -jar Spring-cloud-eureka-0.0.1-snapshot.jar --spring.profiles.active = peer1java -jar Spring-cloud-eureka-0.0.1-snapshot.jar --pring.profiles.active = peer2Java -jar-cloud-Eure-Eure-eure.profiles ---spring.profiles.active = peer3
Setelah memulai satu per satu, browser masuk: http://localhost:8000/ rendering adalah sebagai berikut:
Anda dapat melihat informasi yang relevan tentang Peer2 dan Peer3 di Peer1. Sejauh ini, cluster eureka telah selesai
Kode sampel
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.