Rumah  >  Artikel  >  Java  >  Penemuduga: Sejauh manakah anda tahu tentang konkurensi tinggi? saya: emmm...

Penemuduga: Sejauh manakah anda tahu tentang konkurensi tinggi? saya: emmm...

Java学习指南
Java学习指南ke hadapan
2023-07-26 16:07:261035semak imbas

Penemuduga: Sejauh manakah anda tahu tentang konkurensi tinggi? saya: emmm...

Konkurensi tinggi adalah pengalaman yang hampir setiap pengaturcara mahu miliki. Alasannya mudah: apabila trafik meningkat, pelbagai masalah teknikal akan dihadapi, seperti tamat masa tindak balas antara muka, beban CPU meningkat, GC yang kerap, kebuntuan, storan data yang besar, dll. Masalah ini boleh mendorong kita untuk terus menambah baik kedalaman teknikal kami.

Dalam temuduga lepas, jika calon pernah bekerja dalam projek high-concurrency, saya biasanya meminta calon bercakap tentang pemahaman mereka tentang high-concurrency, tetapi tidak ramai yang dapat menjawab soalan ini secara sistematik, mungkin Terbahagi kepada kategori berikut:

1 Tiada konsep penunjuk berasaskan data: Tidak pasti jenis penunjuk yang perlu dipilih untuk mengukur sistem konkurensi tinggi? Saya tidak dapat membezakan antara concurrency dan QPS, malah saya tidak tahu jumlah pengguna sistem saya, bilangan pengguna aktif, QPS dan TPS semasa masa rata dan puncak serta data penting yang lain.

2 Beberapa pelan telah direka, tetapi butirannya tidak difahami sepenuhnya: Saya tidak dapat menerangkan perkara teknikal dan kemungkinan kesan sampingan pelan itu. Contohnya, jika terdapat kesesakan dalam prestasi bacaan, caching akan diperkenalkan, tetapi isu seperti kadar hit cache, kunci panas dan konsistensi data diabaikan.

3. Pemahaman berat sebelah, menyamakan reka bentuk konkurensi tinggi dengan pengoptimuman prestasi: bercakap tentang pengaturcaraan serentak, cache berbilang peringkat, penyegerakan dan pengembangan mendatar, tetapi mengabaikan reka bentuk ketersediaan tinggi, tadbir urus perkhidmatan dan operasi dan jaminan penyelenggaraan.

4 Kuasai rancangan besar, tetapi abaikan perkara paling asas: Boleh menerangkan dengan jelas idea besar seperti pelapisan menegak, pembahagian mendatar, caching, tetapi tidak mempunyai kesedaran untuk menganalisis sama ada struktur data adalah munasabah dan algoritma Sama ada ia cekap atau tidak, saya tidak pernah terfikir untuk mengoptimumkan butiran daripada dua dimensi paling asas IO dan pengkomputeran.

Dalam artikel ini, saya ingin menggabungkan pengalaman saya dalam projek berkonkurensi tinggi untuk merumuskan secara sistematik pengetahuan dan idea praktikal yang perlu dikuasai dalam konkurensi tinggi saya harap ia akan membantu anda. Kandungan terbahagi kepada 3 bahagian berikut:

  • Bagaimana untuk memahami konkurensi tinggi?
  • Apakah matlamat reka bentuk sistem konkurensi tinggi?
  • Apakah penyelesaian praktikal untuk keselarasan tinggi?

01 Bagaimana untuk memahami konkurensi tinggi?

Konkurensi tinggi bermakna trafik yang besar, dan cara teknikal perlu digunakan untuk menahan kesan trafik, cara ini seperti mengendalikan trafik, membolehkan trafik diproses oleh sistem dengan lebih lancar dan memberikan pengalaman yang lebih baik kepada pengguna.

Senario konkurensi tinggi biasa kami termasuk: Taobao’s Double 11, rampasan tiket semasa Festival Musim Bunga, berita hangat daripada Weibo Vs, dsb. Sebagai tambahan kepada perkara biasa ini, sistem jualan kilat dengan ratusan ribu permintaan sesaat, sistem pesanan dengan berpuluh juta pesanan setiap hari, sistem aliran maklumat dengan ratusan juta aktif harian setiap hari, dsb., semuanya boleh diklasifikasikan sebagai konkurensi yang tinggi.

Jelas sekali, untuk senario konkurensi tinggi yang dinyatakan di atas, jumlah konkurensi berbeza-beza Jadi berapa banyak konkurensi yang dianggap konkurensi tinggi?

1 Anda tidak boleh hanya melihat nombor, anda perlu melihat senario perniagaan tertentu. Tidak boleh dikatakan bahawa jualan kilat 10W QPS adalah konkurensi tinggi, tetapi aliran maklumat 1W QPS bukanlah konkurensi tinggi. Senario aliran maklumat melibatkan model pengesyoran yang kompleks dan pelbagai strategi manual, dan logik perniagaannya mungkin lebih daripada 10 kali lebih kompleks daripada senario jualan kilat. Oleh itu, mereka tidak berada dalam dimensi yang sama dan tidak mempunyai makna perbandingan.

2 Perniagaan dibina dari 0 hingga 1. Concurrency dan QPS hanyalah penunjuk rujukan yang paling penting: apabila volum perniagaan secara beransur-ansur menjadi 10 kali ganda atau 100 kali ganda, adakah anda menggunakan Apabila ia datang kepada konkurensi tinggi. kaedah pemprosesan, bagaimana untuk mengembangkan sistem anda dan mencegah serta menyelesaikan masalah yang disebabkan oleh keselarasan tinggi daripada dimensi reka bentuk seni bina, pelaksanaan pengekodan, dan juga penyelesaian produk? Daripada menaik taraf perkakasan secara membuta tuli dan menambah mesin untuk pengembangan mendatar.

Selain itu, ciri perniagaan bagi setiap senario berkonkurensi tinggi adalah berbeza sama sekali: terdapat senario aliran maklumat dengan lebih banyak membaca dan kurang menulis, dan terdapat senario transaksi dengan lebih banyak membaca dan menulis Ada penyelesaian teknikal sejagat untuk menyelesaikan senario yang berbeza Bagaimana pula dengan masalah konkurensi yang tinggi?

Saya rasa kita boleh belajar daripada idea-idea besar dan rancangan orang lain, tetapi dalam proses pelaksanaan sebenar, akan terdapat banyak kesulitan dalam butirannya. Di samping itu, memandangkan persekitaran perisian dan perkakasan, tindanan teknologi dan logik produk tidak sepenuhnya konsisten, ini akan membawa kepada senario perniagaan yang sama Walaupun penyelesaian teknikal yang sama digunakan, masalah yang berbeza akan dihadapi, dan perangkap ini perlu dilakukan diatasi satu persatu.

Oleh itu, dalam artikel ini saya akan memberi tumpuan kepada pengetahuan asas, idea umum, dan pengalaman berkesan yang telah saya amalkan, dengan harapan dapat memberi anda pemahaman yang lebih mendalam tentang keselarasan tinggi.

02 Apakah matlamat reka bentuk sistem konkurensi tinggi?

Mula-mula jelaskan matlamat reka bentuk sistem konkurensi tinggi, dan kemudian bincangkan rancangan reka bentuk dan pengalaman praktikal agar bermakna dan disasarkan.

2.1 Makro-matlamat

Konkurensi yang tinggi tidak bermakna hanya mengejar prestasi yang tinggi, yang merupakan pemahaman berat sebelah orang ramai Dari perspektif makro, terdapat tiga matlamat untuk reka bentuk sistem konkurensi tinggi: prestasi tinggi, ketersediaan tinggi dan berskala tinggi.

1. Prestasi tinggi:

Prestasi mencerminkan keupayaan pemprosesan selari sistem Dengan pelaburan perkakasan yang terhad, meningkatkan prestasi bermakna menjimatkan kos. Pada masa yang sama, prestasi juga mencerminkan pengalaman pengguna Masa tindak balas masing-masing adalah 100 milisaat dan 1 saat, yang memberikan pengguna perasaan yang berbeza.

2. Ketersediaan tinggi : menunjukkan masa apabila sistem boleh berfungsi seperti biasa. Satu tidak mempunyai masa henti dan tiada kerosakan sepanjang tahun; Di samping itu, jika sistem hanya boleh mencapai ketersediaan 90%, ia juga akan sangat menghalang perniagaan.

3. Pengembangan tinggi : Menunjukkan skalabiliti sistem , sama ada pengembangan boleh disiapkan dalam masa yang singkat semasa masa lalu lintas puncak, dan boleh mengendalikan lalu lintas puncak dengan lebih lancar, seperti acara Double 11 , perceraian selebriti dan acara hangat yang lain.

Penemuduga: Sejauh manakah anda tahu tentang konkurensi tinggi? saya: emmm...

Ketiga-tiga matlamat ini perlu difikirkan secara menyeluruh, kerana ia saling berkaitan malah mempengaruhi antara satu sama lain. . Kluster sebegini The

design

design memastikan kebolehskalaan yang tinggi Malah, ia juga meningkatkan prestasi dan kebolehgunaan sistem.

Contoh lain: Untuk memastikan ketersediaan, tetapan tamat masa biasanya ditetapkan untuk antara muka perkhidmatan untuk menghalang sebilangan besar utas daripada menyekat permintaan perlahan dan menyebabkan runtuhan sistem. Jadi apakah tetapan tamat masa yang munasabah? Secara amnya, kami akan membuat tetapan berdasarkan prestasi perkhidmatan bergantung.

2.2 Matlamat Mikro

Dari perspektif mikro, apakah penunjuk khusus untuk mengukur prestasi tinggi, ketersediaan tinggi dan berskala tinggi Mengapa penunjuk ini dipilih?

❇ Petunjuk Prestasi

Penunjuk prestasi boleh digunakan untuk mengukur masalah prestasi semasa dan berfungsi sebagai asas penilaian untuk pengoptimuman prestasi. Secara umumnya, masa tindak balas antara muka dalam tempoh masa digunakan sebagai penunjuk.

1. Purata masa tindak balas: Yang paling biasa digunakan, tetapi kelemahannya jelas dan ia tidak sensitif kepada permintaan yang perlahan. Sebagai contoh, jika terdapat 10,000 permintaan, yang mana 9,900 adalah 1ms dan 100 adalah 100ms, purata masa tindak balas ialah 1.99ms Walaupun purata penggunaan masa hanya meningkat sebanyak 0.99ms, masa tindak balas untuk 1% permintaan telah meningkat 100. kali.

2, TP90, TP99 dan nilai kuantiti lain: Isih masa tindak balas daripada kecil kepada besar TP90 mewakili masa tindak balas yang berada dalam peratusan ke-90 Semakin besar nilai kuantiti, semakin sensitif permintaan lambat.

Penemuduga: Sejauh manakah anda tahu tentang konkurensi tinggi? saya: emmm...

3. Throughput: Ia adalah berkadar songsang dengan masa tindak balas Sebagai contoh, masa tindak balas ialah 1ms, maka throughput adalah 1000 kali sesaat.

Biasanya, apabila menetapkan matlamat prestasi, kedua-dua pemprosesan dan masa tindak balas akan diambil kira Sebagai contoh, di bawah 10,000 permintaan sesaat, AVG dikawal di bawah 50ms, dan TP900ms dikawal di bawah. Untuk sistem konkurensi tinggi, nilai kuantiti AVG dan TP mesti dipertimbangkan pada masa yang sama.

Selain itu, dari sudut pengalaman pengguna, 200 milisaat dianggap sebagai titik pembahagi pertama, dan pengguna tidak akan merasakan kelewatan 1 saat ialah titik pembahagi kedua, dan pengguna akan merasakan kelewatan, tetapi ia boleh diterima .

Oleh itu, untuk sistem konkurensi tinggi yang sihat, TP99 harus dikawal dalam masa 200 milisaat, dan TP999 atau TP9999 harus dikawal dalam masa 1 saat.

❇ KetersediaanPenunjuk

Ketersediaan yang tinggi bermakna sistem mempunyai keupayaan yang tinggi untuk berjalan tanpa kerosakan. Secara amnya, masa operasi/jumlah sistem digunakan untuk 9 ketersediaan.

Penemuduga: Sejauh manakah anda tahu tentang konkurensi tinggi? saya: emmm...

Untuk sistem konkurensi tinggi, keperluan paling asas ialah: jaminan 3 9s atau 4 9s. Alasannya mudah. ​​Jika anda hanya boleh melakukan dua sembilan, ini bermakna terdapat 1% masa kegagalan Contohnya, beberapa syarikat besar selalunya mempunyai lebih daripada 100 bilion dalam GMV atau pendapatan setiap tahun tahap bilion.

❇ KebolehskalaanPenunjuk

Dalam menghadapi trafik yang mendadak, adalah mustahil untuk mengubah seni bina buat sementara waktu. Cara terpantas ialah menambah mesin untuk meningkatkan keupayaan pemprosesan sistem secara linear.

Untuk kluster perniagaan atau komponen asas, skalabiliti = nisbah peningkatan prestasi / nisbah penambahan mesin ialah: meningkatkan sumber beberapa kali dan meningkatkan prestasi beberapa kali. Secara amnya, keupayaan pengembangan perlu dikekalkan melebihi 70%.

Tetapi dari perspektif keseluruhan seni bina sistem konkurensi tinggi, matlamat pengembangan bukan sekadar untuk mereka bentuk perkhidmatan menjadi tanpa kewarganegaraan, kerana apabila trafik meningkat sebanyak 10 kali ganda, perkhidmatan perniagaan boleh berkembang dengan cepat sebanyak 10 kali ganda, tetapi pangkalan data mungkin menjadi halangan baharu.

Perkhidmatan storan berstatus seperti MySQL biasanya sukar untuk dikembangkan secara teknikal Jika seni bina tidak dirancang terlebih dahulu (pemisahan menegak dan mendatar), ia akan melibatkan penghijrahan sejumlah besar data.

Oleh itu, skalabiliti tinggi perlu dipertimbangkan: kluster perkhidmatan, perisian tengah seperti pangkalan data, cache dan baris gilir mesej, pengimbangan beban, lebar jalur, pihak ketiga yang bergantung, dll. Apabila konkurensi mencapai tahap tertentu, setiap faktor di atas akan Boleh menjadi halangan untuk pengembangan.


03 Apakah penyelesaian praktikal untuk keselarasan tinggi?
Setelah memahami tiga matlamat utama reka bentuk konkurensi tinggi, kami akan merumuskan secara sistematik pelan reka bentuk konkurensi tinggi, yang akan diperluaskan daripada dua bahagian berikut: pertama, kami akan meringkaskan kaedah reka bentuk umum, dan kemudian fokus pada tinggi prestasi, ketersediaan tinggi, Pengembangan tinggi memberikan penyelesaian praktikal khusus masing-masing.
3.1 Kaedah reka bentuk universal
Kaedah reka bentuk universal terutamanya bermula dari dua dimensi menegak」 dan horizon , biasanya dikenali sebagai konkurensi tinggi pemprosesan Dua cabaran utama: pengembangan menegak dan pengembangan mendatar..
1. Tingkatkan prestasi perkakasan satu mesin: dengan meningkatkan memori, teras CPU, kapasiti storan, atau menaik taraf cakera kepada SSD dan dalam petak dalam gaya Datang untuk menambah baik .
2. Tingkatkan prestasi perisian satu mesin: gunakan cache untuk mengurangkan bilangan IO, dan gunakan kaedah serentak atau tak segerak untuk meningkatkan daya pemprosesan.

❇ Pengembangan mendatar (scale-out)

Oleh kerana sentiasa ada had untuk prestasi mesin tunggal, adalah perlu untuk memperkenalkan pengembangan mendatar dan menambah baik lagi keupayaan pemprosesan serentak melalui penggunaan kelompok berikut, dua arah :


1. Membangunkan seni bina hierarki: Ini adalah kemajuan untuk pengembangan mendatar, kerana sistem konkurensi tinggi selalunya mempunyai perniagaan yang kompleks, dan pemprosesan berlapis boleh memudahkan masalah yang kompleks dan memudahkan untuk mencapai pengembangan mendatar.

🎜
Penemuduga: Sejauh manakah anda tahu tentang konkurensi tinggi? saya: emmm...

Gambar di atas adalah seni bina berlapis yang paling biasa di Internet Sudah tentu, seni bina sistem konkurensi tinggi yang sebenar akan dipertingkatkan lagi berdasarkan ini. Sebagai contoh, pemisahan dinamik dan statik akan dilakukan dan CDN akan diperkenalkan Lapisan proksi terbalik boleh menjadi LVS+Nginx, lapisan Web boleh menjadi gerbang API bersatu, lapisan perkhidmatan perniagaan boleh diservis lagi mengikut perniagaan menegak. , dan lapisan storan boleh menjadi pelbagai pangkalan data heterogen.

2. Pengembangan mendatar setiap lapisan: pengembangan mendatar tanpa kewarganegaraan, penghalaan serpihan stateful. Kelompok perniagaan biasanya boleh direka bentuk tanpa kewarganegaraan, manakala pangkalan data dan cache selalunya berstatus Oleh itu, kunci partition perlu direka bentuk untuk storan storan Sudah tentu, prestasi baca juga boleh dipertingkatkan melalui penyegerakan induk-hamba dan pemisahan baca-tulis.

3.2 Penyelesaian praktikal khusus
Digabungkan dengan pengalaman peribadi saya, saya akan merumuskan penyelesaian praktikal yang boleh dilaksanakan dalam tiga aspek prestasi tinggi, ketersediaan tinggi dan berskala tinggi.

❇ Penyelesaian praktikal berprestasi tinggi

1, Pengaturan kluster, mengurangkan tekanan pada mesin tunggal melalui pengimbangan beban.

2. Caching berbilang peringkat, termasuk penggunaan CDN, caching tempatan, caching yang diedarkan, dll. untuk data statik, serta pemprosesan kekunci panas, penembusan cache, concurrency cache, konsistensi data dan isu lain dalam senario caching .
3. Sub-pangkalan data, pengoptimuman jadual dan indeks, serta menggunakan enjin carian untuk menyelesaikan masalah pertanyaan yang kompleks.
4 Pertimbangkan untuk menggunakan pangkalan data NoSQL, seperti HBase, TiDB, dll., tetapi pasukan mesti biasa dengan komponen ini dan mempunyai keupayaan operasi dan penyelenggaraan yang kukuh.
5. Asynchronous, proses sekunder asynchronous melalui multi-threading, MQ, dan juga tugasan tertunda.
6 Penghadan semasa Anda perlu terlebih dahulu mempertimbangkan sama ada perniagaan membenarkan pengehadan aliran (contohnya, senario jualan kilat dibenarkan), termasuk pengehadan aliran hadapan . mengehadkan aliran lapisan, mengehadkan arus sebelah pelayan.

7. Jalankan pencukuran puncak dan mengisi lembah pada lalu lintas, dan kendalikan lalu lintas melalui MQ.
8. Pemprosesan serentak, menyelaraskan logik bersiri melalui pelbagai benang.
9. Pra-pengiraan, seperti Adegan merebut sampul merah, anda boleh mengira jumlah sampul merah terlebih dahulu dan menyimpannya, dan menggunakannya terus semasa menghantar sampul merah.
10, pemanasan awal cache, melalui tugasan tak segerak panaskan data ke cache setempat atau cache yang diedarkan terlebih dahulu .
11 Kurangkan bilangan IO, seperti pangkalan data dan cache batch baca dan tulis, sokongan antara muka kelompok RPC, atau hapuskan panggilan RPC melalui data yang berlebihan.
12 Kurangkan saiz paket data semasa IO, termasuk menggunakan protokol komunikasi ringan, struktur data yang sesuai, mengalih keluar medan berlebihan dalam antara muka, mengurangkan saiz kekunci cache, memampatkan nilai cache, dsb.
13 Pengoptimuman logik program, seperti logik pertimbangan pra-kedudukan yang mempunyai kebarangkalian tinggi untuk menyekat proses pelaksanaan, mengoptimumkan logik pengiraan Untuk gelung, atau menggunakan algoritma yang lebih cekap.
14 Penggunaan pelbagai teknologi pengumpulan dan tetapan saiz kolam, termasuk kumpulan permintaan HTTP, kumpulan benang (pertimbangkan intensif CPU atau intensif IO untuk menetapkan parameter teras), pangkalan data dan kumpulan sambungan Redis, dsb.
15. Pengoptimuman JVM, termasuk saiz generasi baru dan generasi lama, pemilihan algoritma GC, dll., untuk mengurangkan kekerapan GC dan memakan masa sebanyak mungkin.
16 Pemilihan kunci, gunakan penguncian optimistik dalam senario di mana terdapat lebih banyak bacaan dan kurang penulisan, atau pertimbangkan untuk mengurangkan konflik kunci melalui penguncian bersegmen.

Penyelesaian di atas tidak lebih daripada mempertimbangkan semua titik pengoptimuman yang mungkin daripada dua dimensi pengkomputeran dan IO Ia memerlukan sistem pemantauan sokongan untuk memahami prestasi semasa dalam masa nyata dan menyokong anda untuk menjalankan analisis kesesakan prestasi, dan kemudian ikuti 28 prinsip, memahami percanggahan utama dan mengoptimumkannya. .

2. Kegagalan nod bukan rakan sebaya, melalui pengesanan degupan jantung dan pelaksanaan penukaran master-slave (seperti mod sentinel redis atau mod kluster, penukaran master-slave MySQL, dll.).
3. Tetapan tamat masa, cuba semula strategi dan reka bentuk idempoten pada peringkat antara muka. .
5. Pemprosesan had semasa: Tolak terus atau kembalikan kod ralat untuk permintaan yang melebihi kapasiti pemprosesan sistem.
6. Jaminan kebolehpercayaan mesej dalam senario MQ, termasuk mekanisme cuba semula di pihak pengeluar, kegigihan di pihak broker, mekanisme ack di pihak pengguna, dsb.
7. Keluaran skala kelabu boleh menyokong penggunaan trafik kecil mengikut dimensi mesin, memerhati log sistem dan penunjuk perniagaan, dan kemudian menolak volum penuh selepas operasi stabil.
8 Pemantauan dan membimbangkan: Sistem pemantauan yang komprehensif, termasuk pemantauan CPU, memori, cakera dan rangkaian yang paling asas, serta pemantauan pelayan Web, JVM, pangkalan data, pelbagai perisian tengah dan pemantauan penunjuk perniagaan. .
9 Latihan pemulihan bencana: Sama seperti "kejuruteraan huru-hara", gunakan beberapa kaedah yang merosakkan pada sistem untuk memerhati sama ada kegagalan tempatan akan menyebabkan masalah ketersediaan.

Penyelesaian ketersediaan tinggi terutamanya dipertimbangkan dari tiga arah: redundansi, pertukaran, dan operasi dan penyelenggaraan sistem Pada masa yang sama, mereka perlu mempunyai mekanisme tugas sokongan dan proses pengendalian kerosakan boleh disusuli mengikut masa.

❇ Penyelesaian praktikal yang sangat berskala

1. Seni bina berlapis yang munasabah: Sebagai contoh, seni bina berlapis yang paling biasa di Internet yang disebutkan di atas, di samping itu, ia boleh dipadankan lagi mengikut lapisan akses data dan lapisan logik perniagaan Perkhidmatan mikro dilapisi dengan cara yang lebih halus (tetapi prestasi perlu dinilai, kerana mungkin terdapat satu lompatan lagi pada rangkaian).

2. Pemisahan lapisan storan: pemisahan menegak mengikut dimensi perniagaan, dan pemisahan mendatar selanjutnya mengikut dimensi ciri data (sub-pangkalan data dan sub-jadual).
3. Memecahkan lapisan perniagaan: Yang paling biasa ialah membahagikannya mengikut dimensi perniagaan (seperti perkhidmatan komoditi, perkhidmatan pesanan, dll. dalam senario e-dagang). antara muka dan antara muka bukan teras, dan ia juga boleh dibahagikan mengikut Permintaan pengalihan keluar sumber (seperti Kepada C dan Kepada B, APP dan H5).


Kata akhir

Konkurensi tinggi sememangnya merupakan isu yang kompleks dan sistemik Disebabkan ruang yang terhad, perkara teknikal seperti jejak yang diedarkan, ujian tekanan pautan penuh dan urus niaga yang fleksibel mesti dipertimbangkan. Di samping itu, jika senario perniagaan berbeza, penyelesaian pelaksanaan keselarasan tinggi juga akan berbeza, tetapi idea reka bentuk keseluruhan dan penyelesaian yang boleh digunakan untuk rujukan pada dasarnya adalah serupa.

Reka bentuk konkurensi tinggi juga perlu mematuhi tiga prinsip reka bentuk seni bina: Kesederhanaan, kesesuaian dan evolusi. "Pengoptimuman pramatang adalah punca segala kejahatan", tidak boleh dipisahkan daripada situasi sebenar perniagaan, dan jangan terlalu merancang , Penyelesaian yang sesuai adalah yang paling sempurna.

Saya harap artikel ini dapat memberi anda pemahaman yang lebih komprehensif tentang concurrency tinggi Jika anda juga mempunyai pengalaman dan pemikiran mendalam yang boleh anda pelajari, sila tinggalkan mesej di ruangan komen untuk perbincangan.

Atas ialah kandungan terperinci Penemuduga: Sejauh manakah anda tahu tentang konkurensi tinggi? saya: emmm.... Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:Java学习指南. Jika ada pelanggaran, sila hubungi admin@php.cn Padam