Artikel ini terutama berbicara tentang komponen pelacakan layanan Zipkin, dan Spring Cloud Sleuth mengintegrasikan komponen zipkin.
1. Pendahuluan
Tambahkan detektif ke classpath aplikasi Spring Boot (lihat di bawah untuk contoh Maven dan Gradle), dan Anda akan melihat data korelasi yang dikumpulkan dalam log, selama Anda masuk permintaan.
- Dikutip dari situs web resmi
Fungsi utama Spring Cloud Sleuth adalah untuk memberikan solusi pelacakan dalam sistem terdistribusi, dan kompatibel dengan Zipkin. Anda hanya perlu memperkenalkan dependensi yang sesuai ke dalam file POM.
2. Pelacakan dan Analisis Layanan
Dalam arsitektur Microservice, layanan dibagi melalui layanan. Antarmuka yang terpapar ke dunia luar mungkin memerlukan banyak layanan untuk berkolaborasi untuk menyelesaikan fungsi antarmuka ini. Jika ada layanan di tautan yang memiliki masalah atau batas waktu jaringan, itu akan menyebabkan panggilan antarmuka gagal. Ketika bisnis terus berkembang, panggilan antara layanan akan menjadi semakin rumit.
Karena semakin banyak layanan yang tersedia, analisis rantai panggilan akan menjadi semakin rumit. Hubungan panggilan di antara mereka mungkin sebagai berikut:
AKU AKU AKU. Ketentuan
SPAN: Unit kerja dasar. Misalnya, mengirim RPC dalam rentang yang baru dibuat setara dengan mengirimkan permintaan respons ke RPC. Rentang ini secara unik diidentifikasi oleh ID 64-bit, dan jejak diwakili oleh ID 64-bit lainnya. Rentang ini memiliki informasi data lain, seperti pencernaan, acara waktu, anotasi nilai kunci (TAG), ID SPAN, dan ID Kemajuan (biasanya alamat IP).
Rentang itu terus -menerus dimulai dan berhenti, dan pada saat yang sama mencatat informasi waktu. Saat Anda membuat rentang, Anda harus menghentikannya di beberapa titik di masa depan.
Jejak: Struktur pohon yang terdiri dari serangkaian rentang. Misalnya, jika Anda menjalankan proyek Big Data terdistribusi, Anda mungkin perlu membuat jejak.
Anotasi: Digunakan untuk merekam keberadaan suatu peristiwa dalam waktu, dan beberapa anotasi inti digunakan untuk menentukan awal dan akhir permintaan.
Grafisisasi proses penggunaan anotasi zipkin dalam satu sistem:
4. Proyek Konstruksi
Setelah menjelaskan pengetahuan dasar, mari kita ambil pekerjaan yang sebenarnya. Kasus dalam artikel ini terutama terdiri dari tiga proyek: server-zipkin, yang terutama menggunakan fungsi ZipkInserver untuk mengumpulkan data panggilan dan menampilkannya; Layanan-Hi, yang memperlihatkan antarmuka HI ke luar; Layanan-miya, yang memperlihatkan antarmuka Miya ke luar; Kedua layanan ini dapat dipanggil satu sama lain; Dan hanya setelah mereka dipanggil, server-zipkin akan mengumpulkan data, itulah sebabnya disebut pelacakan layanan.
4.1 Bangun Server-Zipkin
Buat proyek boot-boot bernama server-zipkin, dan perkenalkan dependensi di pom:
<Dependencies> <dependency> <GroupId> org.springframework.boot </groupId> <ArtifactId> Spring-boot-starter </t Artifactid> </dependency> <dependency> <sroupid> org.springframework.boot </groupid> <ArtiFacTID> <TroGacTID> <TROP-BOT-BOB-BB </groupid <truptid> <ArtiFacTID> <TROP-BOT-STARPENTER.-BOB-CLEPRAMEW.MACTIF </GroupID> <TROPACTID> <TROP-BOK-BOB-BOB-CLEPRAMEW.--BACTIF </GroupID> <TROPACTID> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>io.zipkin.java</groupId> <artifactId>zipkin-server</artifactId> </dependency> <dependency> <groupid> io.zipkin.java </groupid> <ArtifactId> Zipkin-Autoconfigure-UI </stifactid> </gandendency> </dependency> </dependency> <ArtiFAcD> <Groupid> org.springframework.cloud </groupidD> <ArtifactId> Spring-cloudence. <version> camden.sr6 </version> <peeme> pom </ype> <scope> impor </ scope> </dependency> </dependencies> </dependencyManagement>
Di kelas entri programnya, tambahkan anotasi @EnablezipkInserver untuk mengaktifkan fungsi zipkinserver:
@SpringbootApplication@enablezipkinserverpublic kelas serverzipkinApplication {public static void main (string [] args) {springApplication.run (serverzipkinApplication.class, args); }}Di Application File Configuration.yml menentukan port layanan sebagai:
server.port = 9411
4.2 Buat Layanan-Hi
Dalam PEM-nya PENDAHULUAN, ketergantungan awal adalah Spring-Cloud-Starter-Zipkin, kodenya adalah sebagai berikut:
<Dependencies> <dependency> <GroupId> org.springframework.boot </groupId> <ArTifactId> Spring-boot-starter-web </t Artifactid> </dependency> <!-compile ('org.springframework.cloud:spring-doud-starter-zipkin') <dengening> <gendendency> <gendendency> <gendendency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependency> </Dependency> </Dependency> <dependencyManagement> <dependency> <dependency> <GroupId> org.springframework.cloud </proupid> <RtifactId> Dependensi awan-awan </arttifactid> <version> Dalston.rc1 </versi <pon> <tipe> POM </Type/COUPING/SCOPONGENSIONT.RC1 </Versi </Tipe> POM </Type/SCOPONGING </Versies> </COVEPONGING </Version> <pendensi> </tipe </type/scopon </versi </versi </type> </type> <cuppopon> <cendence- scopon.Dalam file konfigurasinya application.yml, tentukan alamat server zipkin, dan header ditentukan dengan mengonfigurasi "spring.zipkin.base-url":
server.port = 8988spring.zipkin.base-url = http: // localhost: 9411spring.application.name = service-hi
Tidak apa-apa untuk memperkenalkan ketergantungan Spring-Cloud-Starter-Zipkin dan mengatur spring.zipkin.base-url.
Antarmuka Eksposur Eksternal:
@SpringbootApplication@restcontrollerPublic class serviceHiapplication {public static void main (string [] args) {springApplication.run (serviceHiapPlication.class, args); } private static final Logger log = logger.getLogger (serviceHiapPlication.class.getName ()); @Autowired Private RestTemplate RestTemplate; @Bean Public RestTemplate getRestTemplate () {return baru restTemplate (); } @RequestMapping ("/hai") Public String callHome () {log.log (level.info, "Calling Trace Service-Hi"); return resttemplate.getForObject ("http: // localhost: 8989/miya", string.class); } @RequestMapping ("/info") Public String Info () {log.log (level.info, "Calling Trace Service-Hi"); Kembalikan "I'm Service-Hi"; } @Bean public SELALUSampler defaultSampler () {return new allaysampler (); }}4.3 Buat layanan-miya
Proses penciptaan melukai layanan-Hi, memperkenalkan dependensi yang sama, dan mengkonfigurasi spring.zipkin.base-url.
Antarmuka Eksposur Eksternal:
@SpringbootApplication@restcontrollerPublic kelas serviceMiyaApplication {public static void main (string [] args) {springapplication.run (serviceMiyaApplication.class, args); } private static final logger log = logger.getLogger (serviceMiyaApplication.class.getName ()); @RequestMapping ("/hai") home string public () {log.log (level.info, "hai dipanggil"); Kembalikan "Hai, aku Miya!"; } @RequestMapping ("/miya") info string publik () {log.log (level.info, "info sedang dipanggil"); return resttemplate.getForObject ("http: // localhost: 8988/info", string.class); } @Autowired Private RestTemplate RestTemplate; @Bean Public RestTemplate getRestTemplate () {return baru restTemplate (); }}4.4 Mulai proyek, tunjukkan dan lacak
Mulailah tiga proyek di atas, buka browser untuk mengakses: http: // localhost: 9411/, dan antarmuka berikut akan muncul:
Kunjungi: http: // localhost: 8989/miya, browser muncul: saya layanan-hi
Kemudian buka antarmuka http: // localhost: 9411/dan klik dependensi untuk menemukan dependensi layanan:
Klik Temukan jejak untuk melihat data layanan spesifik yang saling menelepon:
Unduh kode sumber artikel ini: https://github.com/forezp/springcloudlearning/tree/master/chapter9
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.