Detektif--pelacakan tautan
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
1 Pengantar penelusuran tautan
Dalam konstruksi layanan mikro pada sistem besar, sistem dipecah menjadi banyak modul. Modul-modul ini bertanggung jawab atas berbagai fungsi dan digabungkan menjadi sebuah sistem yang pada akhirnya dapat menyediakan fungsionalitas yang kaya. Dalam arsitektur ini, permintaan sering kali melibatkan banyak layanan. Aplikasi Internet dibangun pada kumpulan modul perangkat lunak yang berbeda. Modul perangkat lunak ini dapat dikembangkan oleh tim yang berbeda, dapat diimplementasikan menggunakan bahasa pemrograman yang berbeda, dan dapat didistribusikan pada ribuan server di beberapa pusat data yang berbeda, yang berarti akan ada juga yang berbeda. beberapa masalah dengan bentuk arsitektur ini:
- Bagaimana cara menemukan masalah dengan cepat?
- Bagaimana cara menentukan cakupan dampak kesalahan?
- Bagaimana cara memilah ketergantungan layanan dan rasionalitas ketergantungan?
- Bagaimana cara menganalisis masalah kinerja link dan perencanaan kapasitas real-time?

Pelacakan tautan terdistribusi (Pelacakan Terdistribusi) adalah untuk memulihkan permintaan terdistribusi ke tautan panggilan, melakukan pencatatan, pemantauan kinerja, dan secara terpusat menampilkan status panggilan dari permintaan terdistribusi. Misalnya, waktu yang dihabiskan pada setiap node layanan, mesin mana yang dijangkau permintaan, status permintaan setiap node layanan, dll.
Teknologi penelusuran tautan yang umum mencakup hal-hal berikut:
- kucing Bersumber terbuka oleh Dianping dan berdasarkanJawa Platform pemantauan aplikasi real-time yang dikembangkan meliputi pemantauan aplikasi real-time dan pemantauan bisnis. terintegrasi Solusinya adalah dengan menerapkan pemantauan melalui penguburan kode, seperti interseptor, filter, dll. Sangat mengganggu kode, integrasi biaya lebih tinggi. Risikonya lebih besar.
- ritsleting Bergantung padaTwitterSistem pelacakan terdistribusi sumber terbuka dan sumber terbuka milik perusahaan digunakan untuk mengumpulkan data waktu layanan untuk memecahkan masalah mikro. Masalah latensi dalam arsitektur layanan meliputi: pengumpulan data, penyimpanan, pencarian, dan presentasi.Produk ini menggabungkandetektif awan musim semiIni relatif mudah digunakan dan mudah diintegrasikan, namun fungsinya relatif sederhana.
- tepat Tepat Ini adalah analisis rantai panggilan sumber terbuka Korea dan alat analisis pemantauan aplikasi berdasarkan injeksi bytecode.FiturIni mendukung berbagai plug-in.Antarmuka PenggunaFungsi yang kuat, tidak ada intrusi kode di ujung akses.
- berjalan di atas langit
Berjalan di Atas Langit Ini adalah analisis rantai panggilan sumber terbuka lokal dan alat analisis pemantauan aplikasi berdasarkan injeksi bytecode.Ciri khasnya adalah mendukung banyak orangjenis plugin,Antarmuka Pengguna Fungsinya kuat dan tidak ada intrusi kode di ujung akses.Sudah bergabungBahasa Inggris Apacheinkubator. - Detektif
Awan Musim Semi Memberikan solusi pelacakan tautan dalam sistem terdistribusi.
Melihat:
SpringCloud Alibaba
Tumpukan teknologi tidak menyediakan teknologi pelacakan tautannya sendiri, yang dapat kita gunakan
Detektif +
Zinkin
Untuk membuat solusi pelacakan tautan
2 Detektifmulai
2.1 Detektifmemperkenalkan
Fungsi utama SpringCloud Sleuth adalah menyediakan solusi pelacakan dalam sistem terdistribusi.ia meminjam banyak darinya
Google
Rapi
Mari kita pahami dulu desainnya
Detektif
istilah dan konsep terkait dalam .
- Jejak
oleh suatu kelompokID JejakidentikMenjangkau Digabung menjadi struktur pohon.Untuk menerapkan pelacakan permintaan, ketika permintaan tiba di sistem terdistribusititik akhir entri, kerangka pelacakan layanan hanya perlu membuat pengidentifikasi unik untuk permintaan tersebut (mis.ID Jejak), sedangkan dalam sistem terdistribusi Saat beredar di dalam sistem, kerangka kerja selalu meneruskan nilai unik ini hingga seluruh permintaan dikembalikan.Maka kita hanya bisa menggunakan iniSatu pengidentifikasi menghubungkan semua permintaan bersama untuk membentuk tautan permintaan yang lengkap. - Menjangkau Merupakan kumpulan dasar unit kerja.Untuk menghitung penundaan setiap unit pemrosesan, ketika permintaan mencapai setiap komponen layananwaktu, juga melalui pengidentifikasi unik (Bahasa Spanyol ) untuk menandai awal, proses spesifik, dan akhir.lulusBahasa Spanyolawal dan akhirStempel waktu akhir, Anda dapat menghitungnyamenjangkau Selain waktu pemanggilan, kita juga bisa mengetahui nama acaranya.Minta informasi, dll.metadata.
- Anotasi
Gunakan untuk merekam peristiwa selama periode waktu tertentu. Catatan penting untuk penggunaan internal:
Bahasa Inggris(Klien Kirim) Klien mengeluarkan permintaan dan memulai kehidupan permintaan
sr(Server Diterima) Server menerima permintaan dan mulai memprosesnya, sr-cs = Latensi jaringan (waktu untuk panggilan layanan)
bahasa inggris(Server Kirim) Server telah selesai diproses dan siap dikirim ke klien,ss - sr = Minta waktu pemrosesan di server
bahasa inggris(Klien Diterima) Klien menerima respons dari server dan permintaan berakhir. cr - sr =total waktu yang diminta

2.2 Detektifmulai
Nama layanan mikro
, jejakId, spanid,
Apakah akan menampilkan hasil pelacakan tautan ke platform pihak ketiga
[gerbang-api,3977125f73391553,3977125f73391553,salah]
[pesanan-layanan,3977125f73391553,57547b5bf71f8242,salah]
[layanan-produk,3977125f73391553,449f5b3f3ef8d5c5,salah]
Selanjutnya, integrasikan melalui kasus proyek sebelumnya
Detektif
, selesaikan penulisan kasus pengantar.
Ubah pengenalan proyek induk
Detektif
mengandalkan
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
Setelah memulai layanan mikro dan memanggil antarmuka, kita dapat mengamati di konsol
detektif
Keluaran log dari
dimana c61d4a753370cbeb berada
ID Jejak
, 0e06445e055ed94f adalah
SpanId, ada TraceId global yang dipanggil secara berurutan untuk merangkai tautan panggilan. Dengan menganalisis log setiap layanan mikro secara cermat, tidak sulit untuk melihat proses spesifik permintaan tersebut.
Melihat file log bukanlah metode yang baik. Ketika layanan mikro semakin banyak, file log akan semakin banyak. Zipkin dapat mengumpulkan log dan melakukan tampilan visual dan pengambilan teks lengkap.
3 ritsletingIntegrasi
3.1 ZipKinmemperkenalkan
Zipkin adalah
Twitter
Sebuah proyek sumber terbuka berdasarkan
Diimplementasikan oleh Google Dapper, ini didedikasikan untuk mengumpulkan data waktu layanan untuk memecahkan masalah latensi dalam arsitektur layanan mikro, termasuk data
Kumpulkan, simpan, cari, dan tampilkan
。
Kami dapat menggunakannya untuk mengumpulkan data pelacakan tautan permintaan di setiap server, dan menggunakan antarmuka REST API yang disediakannya untuk membantu kami menanyakan data pelacakan guna menerapkan program pemantauan sistem terdistribusi, sehingga dapat segera menemukan peningkatan penundaan dalam masalah tingkat tinggi dan mengidentifikasi sumber hambatan kinerja sistem.
Selain API yang berorientasi pada pengembangan
Selain antarmuka, juga menyediakan kenyamanan
Komponen UI membantu kami mencari informasi pelacakan secara intuitif dan menganalisis detail tautan permintaan. Misalnya, kami dapat menanyakan waktu pemrosesan setiap permintaan pengguna dalam jangka waktu tertentu.
Zipkin menyediakan penyimpanan data yang dapat dicolokkan:
Dalam kenangan
、
Bahasa Inggris MySql
、
Kasandra
sebaik
Pencarian Elastis
。

Gambar di atas menunjukkan
ritsleting
infrastruktur, yang sebagian besar terdiri dari
4
Terdiri dari komponen inti:
- Pengumpul: Komponen kolektor, yang terutama digunakan untuk memproses informasi pelacakan yang dikirim dari sistem eksternal dan mengubah informasi ini menjadi ritsletingdiproses secara internal Menjangkauformat untuk mendukung penyimpanan selanjutnya, analisis, tampilan, dan fungsi lainnya.
- Penyimpanan: Komponen penyimpanan, yang terutama memproses informasi pelacakan yang diterima oleh kolektor. Secara default, informasi ini akan disimpan dalam memori.Kami juga dapat memodifikasi strategi penyimpanan ini untuk menyimpan informasi pelacakan dalam database dengan menggunakan komponen penyimpanan lainnya.
- API RESTful:API Komponen, yang terutama digunakan untuk menyediakan antarmuka akses eksternal.Misalnya, menampilkan informasi pelacakan ke klien, atau eksternalAkses sistem untuk pemantauan, dll.
- Antarmuka Pengguna Web:Antarmuka Pengguna komponen, berdasarkanAPI Aplikasi lapisan atas diimplementasikan oleh komponen.lulusAntarmuka PenggunaPengguna komponen dapat melakukan kueri dan analisis dengan mudah dan intuitifAnalisis informasi pelacakan.
Zipkin terbagi menjadi dua ujung, satu adalah
ritsleting
Di sisi server, ada satu
Klien Zipkin, klien adalah penerapan layanan mikro. Klien akan mengkonfigurasi server
Alamat URL-nya
Alamat tersebut akan dikonfigurasi di layanan mikro setelah panggilan antar layanan terjadi.
Pendengar Sleuth mendengarkan dan menghasilkan yang sesuai
Jejak
Dan
Menjangkau
Informasi dikirim ke server.
3.2 ZipKinInstalasi server
TIDAK.
1
melangkah
:
unduh
Bahasa Indonesia: Bahasa Indonesia: ZipKin
dari
stoples
Tas
https://search.maven.org/remote_content?g=io.zipkin.java&a=zipkin-server&v=LATEST&c=exec
Kunjungi URL di atas untuk mendapatkanstoplesTas, ini diaBahasa Indonesia: Bahasa Indonesia: ZipKinsisi serverstoplesTas
TIDAK.
2
melangkah
:
Melalui baris perintah, masukkan perintah berikut untuk memulai
Server ZipKin
java -jar zipkin-server-2.12.9-exec.jar
TIDAK.
3
Langkah: Akses melalui browser
http://host lokal:9411
mengakses

3.3 ZipkinIntegrasi klien
Klien ZipKin dan
Detektif
Integrasinya sangat sederhana, cukup tambahkan dependensi dan konfigurasinya di layanan mikro.
TIDAK.
1
Langkah: Tambahkan dependensi pada setiap layanan mikro
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
TIDAK.
2
Langkah: Tambahkan konfigurasi
base-url: http://127.0.0.1:9411/ #zipkin server的请求地址
discoveryClientEnabled: false #让nacos把它当成一个URL,而不要当做服务名
TIDAK.
3
melangkah
:
Akses antarmuka layanan mikro
http://localhost:7000/pesanan-serv/pesanan/prod/1
TIDAK.
4
melangkah
:
mengakses
ritsleting
dari
Antarmuka Pengguna
antarmuka, efek observasi

TIDAK.
5
Langkah: Klik salah satu catatan untuk mengamati detail rute kunjungan.

4 ZipKinPersistensi data
Zipkin Server akan menyimpan informasi data pelacakan ke memori secara default, namun metode ini tidak cocok untuk lingkungan produksi.
Zipkin mendukung data pelacakan yang ada
mysql
basis data atau
Pencarian elastis
tengah.
4.1 menggunakanmysqlMenerapkan persistensi data
TIDAK.
1
melangkah
:
membuat
mysql
lingkungan data
NOT EXISTS zipkin_spans (
`trace_id_high` BIGINT NOT NULL DEFAULT 0 COMMENT 'If non zero, this
means the trace uses 128 bit traceIds instead of 64 bit',
`trace_id` BIGINT NOT NULL,
`name` VARCHAR ( 255 ) NOT NULL,
`start_ts` BIGINT COMMENT 'Span.timestamp(): epoch micros used for endTs
query and to implement TTL',
`duration` BIGINT COMMENT 'Span.duration(): micros used for minDuration
) ENGINE = INNODB ROW_FORMAT = COMPRESSED CHARACTER
SET = utf8 COLLATE utf8_general_ci;
ALTER TABLE zipkin_spans ADD UNIQUE KEY ( `trace_id_high`, `trace_id`, `id` ) COMMENT 'ignore insert on duplicate';
ALTER TABLE zipkin_spans ADD INDEX ( `trace_id_high`, `trace_id`, `id` ) COMMENT 'for joining with zipkin_annotations';
ALTER TABLE zipkin_spans ADD INDEX ( `trace_id_high`, `trace_id` ) COMMENT 'for
ALTER TABLE zipkin_spans ADD INDEX ( `name` ) COMMENT 'for getTraces and
ALTER TABLE zipkin_spans ADD INDEX ( `start_ts` ) COMMENT 'for getTraces
NOT EXISTS zipkin_annotations (
`trace_id_high` BIGINT NOT NULL DEFAULT 0 COMMENT 'If non zero, this
means the trace uses 128 bit traceIds instead of 64 bit',
`trace_id` BIGINT NOT NULL COMMENT 'coincides with
`span_id` BIGINT NOT NULL COMMENT 'coincides with zipkin_spans.id',
`a_key` VARCHAR ( 255 ) NOT NULL COMMENT 'BinaryAnnotation.key or
Annotation.value if type == -1',
`a_value` BLOB COMMENT 'BinaryAnnotation.value(), which must be smaller
`a_type` INT NOT NULL COMMENT 'BinaryAnnotation.type() or -1 if
`a_timestamp` BIGINT COMMENT 'Used to implement TTL;
Annotation.timestamp or zipkin_spans.timestamp',
`endpoint_ipv4` INT COMMENT 'Null when Binary/Annotation.endpoint is
`endpoint_ipv6` BINARY ( 16 ) COMMENT 'Null when Binary/Annotation.endpoint
is null, or no IPv6 address',
`endpoint_port` SMALLINT COMMENT 'Null when Binary/Annotation.endpoint
`endpoint_service_name` VARCHAR ( 255 ) COMMENT 'Null when
Binary/Annotation.endpoint is null'
) ENGINE = INNODB ROW_FORMAT = COMPRESSED CHARACTER
SET = utf8 COLLATE utf8_general_ci;
ALTER TABLE zipkin_annotations ADD UNIQUE KEY ( `trace_id_high`, `trace_id`, `span_id`, `a_key`, `a_timestamp` ) COMMENT 'Ignore insert on duplicate';
ALTER TABLE zipkin_annotations ADD INDEX ( `trace_id_high`, `trace_id`, `span_id` ) COMMENT 'for joining with zipkin_spans';
ALTER TABLE zipkin_annotations ADD INDEX ( `trace_id_high`, `trace_id` ) COMMENT 'for getTraces/ByIds';
ALTER TABLE zipkin_annotations ADD INDEX ( `endpoint_service_name` ) COMMENT 'for getTraces and getServiceNames';
ALTER TABLE zipkin_annotations ADD INDEX ( `a_type` ) COMMENT 'for getTraces';
ALTER TABLE zipkin_annotations ADD INDEX ( `a_key` ) COMMENT 'for getTraces';
ALTER TABLE zipkin_annotations ADD INDEX ( `trace_id`, `span_id`, `a_key` ) COMMENT 'for dependencies job';
NOT EXISTS zipkin_dependencies ( `day` DATE NOT NULL, `parent` VARCHAR ( 255 ) NOT NULL, `child` VARCHAR ( 255 ) NOT NULL, `call_count` BIGINT ) ENGINE = INNODB ROW_FORMAT = COMPRESSED CHARACTER
SET = utf8 COLLATE utf8_general_ci;
ALTER TABLE zipkin_dependencies ADD UNIQUE KEY ( `day`, `parent`, `child` );

TIDAK.
2
melangkah
:
saat permulaan
Server ZipKin
Kapan
,
Tentukan data yang akan disimpan
mysql
Informasi
java -jar zipkin-server-2.12.9-exec.jar --STORAGE_TYPE=mysql --
MYSQL_HOST=127.0.0.1 --MYSQL_TCP_PORT=3306 --MYSQL_DB=zipkin --MYSQL_USER=root -
4.2 menggunakanPencarian elastisMenerapkan persistensi data
TIDAK.
1
melangkah
:
unduh
Pencarian elastis
tautan unduhan:
https://www.elastic.co/cn/unduh/rilis-terdahulu/elasticsearch-6-8-4
TIDAK.
2
melangkah
:
rintisan
Pencarian elastis
Kunjungi: localhost:9200
Jika Anda memerlukan visualisasi, Anda dapat menginstal Kibana
TIDAK.
3
melangkah
:
saat permulaan
Server ZipKin
Saat menentukan data yang akan disimpan
Pencarian elastis
Informasi
java -jar zipkin-server-2.12.9-exec.jar --STORAGE_TYPE=elasticsearch --ESHOST=localhost:9200
Adapun penggunaan visual dari elasticsearch, Anda dapat merujuk ke:Instalasi dan penggunaan Elasticsearch di bawah windows, dan instalasi blog kibana_windowskibanna-CSDN