Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 14467|Jawab: 1

Sistem Kafka Windows akan menutup telepon setelah berjalan untuk jangka waktu tertentu

[Salin tautan]
Diposting pada 12/07/2021 10.57.01 | | | |
1: Latar belakang

Saya menggunakan kafka di lingkungan Linux sebelumnya, dan tidak ada masalah dengan kafka itu sendiri. Namun, proyek yang sedang saya kerjakan harus kompatibel dengan Windows dan Linux, dan ketika saya menggunakan Kafka di lingkungan Window, saya menemukan bahwa Kafka sendiri tidak kompatibel dengan Windows seperti Linux.

2: Masalah

Saat menguji Kafka di bawah Window, saya menemukan bahwa Kafka mengalami kesalahan setelah diluncurkan untuk jangka waktu tertentu:

Program lain menggunakan file dan prosesnya tidak dapat mengaksesnya.
Solusi berikut tidak sepenuhnya menyelesaikan masalah dan tidak direkomendasikan

KESALAHAN Windows Kafka Gagal membersihkan log untuk __consumer_offsets
https://www.itsvse.com/thread-9980-1-1.html




[2021-07-06 09:06:10,800] ERROR Gagal membersihkan log untuk __consumer_offsets-42 di dir C:\tmp\kafka-logs karena IOException (kafka.server.LogDirFailureChannel)
java.nio.file.FileSystemException: C:\tmp\kafka-logs\__consumer_offsets-42\00000000000000000000.timeindex.cleaned ->
C:\tmp\kafka-logs\__consumer_offsets-42\00000000000000000000.timeindex.swap: 另一个程序正在使用此文件,进程无法访问。

        di sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86)
        di sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
        di sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:387)
        di sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:287)
        di java.nio.file.Files.move(Files.java:1395)
        di org.apache.kafka.common.utils.Utils.atomicMoveWithFallback(Utils.java:904)
        di kafka.log.AbstractIndex.renameTo(AbstractIndex.scala:210)
        di kafka.log.LazyIndex$IndexValue.renameTo(LazyIndex.scala:155)
        di kafka.log.LazyIndex.$anonfun$renameTo$1(LazyIndex.scala:79)
        di kafka.log.LazyIndex.renameTo(LazyIndex.scala:79)
        di kafka.log.LogSegment.changeFileSuffixes(LogSegment.scala:496)
        di kafka.log.Log.$anonfun$replaceSegments$4(Log.scala:2402)
        di kafka.log.Log.$anonfun$replaceSegments$4$adapted(Log.scala:2402)
        di scala.collection.immutable.List.foreach(List.scala:333)
        di kafka.log.Log.replaceSegments(Log.scala:2402)
        di kafka.log.Cleaner.cleanSegments(LogCleaner.scala:613)
        di kafka.log.Cleaner.$anonfun$doClean$6(LogCleaner.scala:538)
        di kafka.log.Cleaner.$anonfun$doClean$6$adapted(LogCleaner.scala:537)
        di scala.collection.immutable.List.foreach(List.scala:333)
        di kafka.log.Cleaner.doClean(LogCleaner.scala:537)
        di kafka.log.Cleaner.clean(LogCleaner.scala:511)
        di kafka.log.LogCleaner$CleanerThread.cleanLog(LogCleaner.scala:380)
        di kafka.log.LogCleaner$CleanerThread.cleanFilthiestLog(LogCleaner.scala:352)
        di kafka.log.LogCleaner$CleanerThread.tryCleanFilthiestLog(LogCleaner.scala:332)
        di kafka.log.LogCleaner$CleanerThread.doWork(LogCleaner.scala:321)
        di kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:96)
        Ditekan: java.nio.file.FileSystemException: C:\tmp\kafka-logs\__consumer_offsets-42\00000000000000000000000000000000000000000000000000000000__consumer_offsets>0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

                di sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86)
                di sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
                di sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:301)
                di sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:287)
                di java.nio.file.Files.move(Files.java:1395)
                di org.apache.kafka.common.utils.Utils.atomicMoveWithFallback(Utils.java:901)
                ... 20 lagi

3: Penyebab

Kebijakan pembersihan log Kafka memicu bahwa di lingkungan Windows, tidak diperbolehkan untuk mengganti nama file saat membuka log yang perlu dibersihkan (dimungkinkan di lingkungan Linux), menyebabkan Kafka mogok.

Solusi paling umum di Internet adalah "mengosongkan file log kafka dan memulai ulang kafka", yang jelas tidak realistis di lingkungan produksi. Jadi pada awalnya, saya menemukan dua solusi berikut untuk situasi tersebut:

Solusi 1: Ubah kebijakan pembersihan log untuk mengubah waktu pembersihan log menjadi tak terbatas (-1) untuk menyimpan log data kafka secara permanen
Kekurangan: (1) Ruang disk akan terus bertambah
Opsi 2: Bangun mesin virtual di Windows (buruh pelabuhan sama, tetapi lebih merepotkan), lalu terapkan Kafka di komputer virtual
Kekurangan: (1) Personel O&M perlu mengetahui beberapa pengetahuan Linux O&M (2) Meningkatkan konsumsi memori

Jelas, kekurangan dari kedua opsi tersebut tak tertahankan bagi saya, jadi saya mengalihkan perhatian saya ke komunitas Kafka untuk meminta bantuan.

Klik di sini untuk diskusi tentang menyembah para dewa:Login hyperlink terlihat.

Dapat dipahami bahwa masalah Kafka di bawah jendela tidak semudah yang dibayangkan.Sejauh ini belum ada solusi resmi。 Dengan kata lain (Jangan gunakan kafka di bawah jendela! )

Solusi 3: Namun meski begitu, kebutuhan untuk menggunakan kafka di bawah jendela masih ada, sehingga masih banyak dewa yang memperhatikan dan mengusulkan beberapa solusi. Salah satu dewa besar telah mengembangkan kode sumber kafka untuk masalah ini. Setelah pengujian, solusinya memecahkan masalah di bawah jendela, membuat kafka tersedia di bawah jendela. Namun, untuk solusi ini, kontributor Kafka mengatakan bahwa itu mungkin tidak aman (yaitu, tambalan tidak dapat diintegrasikan ke dalam versi resmi).

4: Selesaikan (ada tautan unduhan untuk paket kafka yang dikompilasi di bagian akhir)
Meskipun pejabat Kafka mengatakan bahwa tambalan itu tidak terlalu aman, pejabat tersebut belum melakukan apa-apa sejauh ini. Dan permintaannya memang ada, jadi setelah beberapa pertimbangan, saya masih berencana untuk menggunakan metode opsi 3 untuk memecahkan masalah untuk selamanya, jadi kami akan memasukkan tambalan dan mengkompilasi ulang kafka.

4.1: Unduh versi patch Kafka

Unduh versi patch kafka dari penulis ini

Login hyperlink terlihat.

4.2: Kompilasi versi patch Kafka
Karena kompilasi kafka dilakukan melalui gradle, Anda perlu mengonfigurasi gradle terlebih dahulu

Untuk cara mengonfigurasi gradle, Anda dapat merujuk ke artikel ini (dicetak ulang, pelanggaran akan dihapus) Penginstalan dan konfigurasi gradle di bawah Windows:Login hyperlink terlihat.

Untuk informasi tentang cara mengkompilasi Kafka, Anda dapat merujuk ke github------ Cara mengkompilasi Kafka menggunakan Gradle:Login hyperlink terlihat.

Setelah mengkompilasi, Anda bisa mendapatkan paket Kafka yang dapat digunakan di bawah Windows.

Sejalan dengan konsep "salin-tempel" (lagipula, mengkompilasi kode sumber masih cukup memakan waktu), berikut adalah tautan unduhan untuk paket kafka yang saya kompilasi, dan Anda dapat mengunduhnya dan menggunakannya secara langsung.

kafka_2.12-2.3.0_window Unduh alamat untuk versi anti-downtime:

Login hyperlink terlihat.

Tautan asli:Login hyperlink terlihat.







Mantan:MySQL mengkueri anotasi tabel database
Depan:Ringkasan SQL Server dari Tabel yang Dipartisi
Diposting pada 12/07/2021 21.16.33 |
Bos forum yang belum bermain sangat dipuja
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com