Rumah >Java >JavaSoalan temu bual >Temu bual Meituan: Mari kita bercakap tentang CAP, cara saya menjawab sangat istimewa

Temu bual Meituan: Mari kita bercakap tentang CAP, cara saya menjawab sangat istimewa

Java后端技术全栈
Java后端技术全栈ke hadapan
2023-08-24 15:11:52920semak imbas


Latar Belakang Kes

CAP Teori ialah teori asas teras dalam sistem teragih Walaupun semasa temuduga, penemuduga tidak akan bertanya secara langsung tentang prinsip teori CAP semasa anda, tetapi apabila anda menemuinya. temu bual Isu reka bentuk sistem yang diedarkan yang dinyatakan di atas tidak boleh memintas pemahaman dan pemikiran anda tentang CAP.

Dan semasa temu duga, keperluan penemuduga akan berbeza untuk calon yang menemu duga untuk jawatan yang berbeza, dan kedalaman jawapan anda akan berbeza. Jadi dalam artikel hari ini, saya akan menganalisis idea temu bual dari dua perspektif berbeza: jurutera R&D junior dan pertengahan dan jurutera R&D kanan.

Analisis Kes

Saya percaya bahawa selagi anda telah mempelajari pengetahuan berkaitan teknologi teragih, anda pada asasnya tahu apa yang dimaksudkan oleh teori CAP:

  • C(Ketekalan)是数据一致性、
  • Consistency)是数据一致性、
  • A(Availability)是服务可用性、
  • P(Partition tolerance)是分区容错性。
  • C、A、P 只能同时满足两个目标,而由于在分布式系统中,P 是必须要保留的,所以要在 C 和 A 间进行取舍。假如要保证服务的可用性,就选择 AP 模型,而要保证一致性的话,就选择 CP

    A(Ketersediaan)是服务可用性、

    P( Toleransi partition ) 是 分区 容错性。

    c 、 A 、 P 只 能 同时 同时 满足 个 目标, 而由于在分布式系统中,P 是必须要保留的,所以要在 C 和 A 间进行取舍。假如要中文,假如要了选择 AP 模型,而要保证一致性的话,就选择 CP模型。

    很多候选者如果发现颢者“为了数据容灾,我们会做数据的主从备份,那么主从节点的数据一致性对调用用家)涉及了对“CAP 的理解和思考”,会下意识地做出类似的答案:“ CAP 理论描述了在出现网络分区的情况下,要在 C 和 A 之间做取舍,所仜分区。角看系统是不可用的”。如果是我的话,大概会给个及格分,并认为这样的回答,只能证明你有准备,不能证明你有能力。

    能证明你有准备,不能证明你有能力。

    中与節图论问题时,单纯做浮于表面的概念性阐述,很难向面试官证明你的技术能力。 面试官会觉得你是一个刚接触分布式系统,或者对分得你是一个刚接触分布式系统,或者对分帆神城的研发,如果这恰好是你第一个面试题,会直接影响面试官对你的第一印象,甚至影响你的定级。从我的经验出发,如果你想答得更好,你需从我的经验出发,如果你想答得更好,你需从我的经验出发,如果你想答得更好,你需更好,你需我玁发,如果你想答得更好,你需更好,你需我玁发家践经验、技术认知,然后再结合具体的面试题具体分析。

    问题解答

    🎜理解原理🎜🎜现在有一个分布式个分布式个分布式个分布式系东系石正常情况下,客户端 Pelanggan 写数据到系统 A,然后数据从 A 节点同步到A1 节点,再返回给 Pelanggan 成功状态。🎜
    Temu bual Meituan: Mari kita bercakap tentang CAP, cara saya menjawab sangat istimewa
    Gambar

    Pada masa ini, pelanggan pelanggan membaca data dari mana-mana nod A atau A1, dan boleh membaca data bertulis terkini, menunjukkan bahawa data A dan A1 adalah konsisten, dan kedua-dua A dan A1 juga adalah tersedia.

    Tetapi kerana rangkaian tidak boleh dipercayai, rangkaian nod A dan A1 boleh dipisahkan pada bila-bila masa disebabkan gangguan. Partition rangkaian yang dipanggil bermaksud bahawa nod A dan A1 diasingkan dalam subset rangkaian yang berbeza kerana kegagalan rangkaian Pada masa ini, data nod A tidak boleh disegerakkan ke nod A1 dalam masa.

    Temu bual Meituan: Mari kita bercakap tentang CAP, cara saya menjawab sangat istimewa
    Gambar

    Dalam sistem teragih, sekatan rangkaian akibat masalah rangkaian adalah perkara biasa. Maksudnya, apabila partition rangkaian berlaku, menurut teori CAP, pertukaran perlu dibuat antara A dan C, iaitu, sama ada untuk memastikan ketersediaan sistem atau untuk memastikan konsistensi data.

    Anda harus memberi perhatian di sini Contoh di atas mempunyai premis utama, iaitu, partition rangkaian berlaku dalam sistem, tetapi keadaan sebenar adalah kebanyakan masa, partition rangkaian tidak wujud (masalah rangkaian tidak sering berlaku. ). Jadi adakah kita masih perlu memilih dua daripada tiga (CP atau AP)?

    Malah, sistem teragih yang berbeza perlu membuat pertukaran antara tiga CAP berdasarkan senario perniagaan dan keperluan perniagaan. Teori CAP digunakan untuk membimbing faktor yang perlu diukur semasa mereka bentuk sistem, dan bukannya membuat pilihan mutlak.

    Apabila tiada partition dalam rangkaian, teori CAP tidak memberikan faktor untuk mengukur A dan C, tetapi jika anda telah melakukan reka bentuk sistem teragih yang sebenar, anda pasti akan menemui kependaman penyegerakan data sistem (Latensi), iaitu , dalam contoh Masa yang diambil untuk nod A menyegerakkan data ke nod A1 ialah faktor paling penting dalam mengukur A dan C. Pada masa ini, tiada model AP mutlak atau model CP, tetapi pertimbangan menyeluruh terhadap perniagaan sebenar senario.

    Oleh itu, akan ada model baharu seperti PACELC "Rujukan1" untuk mengoptimumkan teori CAP asal Teori ini membimbing amalan dan mempraktikkan teori pengoptimuman.

    Mengikut takrifan model PACELC, jika partition rangkaian berlaku, sistem mesti mencapai keseimbangan antara A dan C. Jika tidak (Jika tidak, E dalam PACELC) apabila sistem berjalan tanpa partition rangkaian, sistem perlu mengimbangi antara L (kelewatan) dan C.

    Temu bual Meituan: Mari kita bercakap tentang CAP, cara saya menjawab sangat istimewaPACELC

    Tetapi memahami tahap ini tidak mencukupi, anda juga perlu membuktikannya dengan pengalaman pelaksanaan.

    Pengalaman praktikal

    Anda perlu sedar bahawa reka bentuk Internet yang diedarkan adalah pertukaran antara ketekalan data dan ketersediaan sistem, dan ini tidak penting. Oleh itu, walaupun konsistensi yang kuat tidak dapat dicapai (dalam istilah mudah, konsistensi yang kuat bermakna data yang ditanya oleh semua pengguna adalah yang terkini pada bila-bila masa), anda masih boleh menggunakan kaedah yang sesuai mengikut ciri perniagaan anda sendiri untuk menjadikan sistem mencapai muktamad konsistensi seks.

    这时就要引出 BASE 理论,它是 CAP 理论的延伸。BASEAda Pada dasarnya(基本可用)、Soft State(软状态)和 Akhirnya Konsisten(最终一致性)三个单词的,简写作用是保证系统的可用性,然后通过最终一致性来代替强一致性,它是目前分紮具指导意义的经验总结。那么在实际项目中,你如何通过 BASE 理论来指导论来指导设计客?BASE 理论,它是 CAP 理论的延伸。BASEBasically Available(基本可用)、Soft State(软状态)和 Eventually Consistent(最终一致性)三个单词的简写,作用是保证系统的可用性,然后通过最终一致性来代替强一致性,它是目前分布式系统设计中最具指导意义的经验总结。那么在实际项目中,你如何通过 BASE 理论来指导设计实践呢?

    BASE 中的基本可用指的是保障核心功能的基本可用,其实是做了“可用性”方面的妥协,比如:

    电商网站在双十一大促等访问压力较大的时候,关闭商品排行榜等次要功能的展示,从而保证商品交易主流程的可用性,这也是我们常说的服务降级;

    为了错开双十一高峰期,电商网站会将预售商品的支付时间延后十到二十分钟,这就是流量削峰;

    在你抢购商品的时候,往往会在队列中等待处理,这也是常用的延迟队列。

    软状态和最终一致性指的是允许系统中的数据存在中间状态,这同样是为了系统可用性而牺牲一段时间窗内的数据一致性,从而保证最终的数据一致性的做法。

    目前这种处理数据的方式几乎成了互联网的标配设计模式,最经典的例子是在用户下单的时候不需要真正地扣减库存,而是仅在前台计个数,然后通过异步任务在后台批量处理。

    如果你想应聘的是初中级研发工程师,那么结合上述思路,从理论理解到落地实践,你已经可以把 CAP 理论

    BASE 中的基本可用指的是保障核心功能的基本可用,其实是做了“可用性”方面的妥协,比如:🎜🎜电商网站在双十一大促等访问的大促等访宿问闭商品排行榜等次要功能的展示,从而保证商品交易主流程的可用性,这也是我们常说的服务降级;务降级;务降级;为间受中可峰期,电商网站会将预售商品的支付时间延后十到二十分钟,这就是流量削峰;🎜🎜在你抢购商品的时候,往往会在队列中等待处理,这幟的生。 🎜🎜软状态和最终一致性指的是允许系统中的数据存在中间状态,这同样是为了系统可用性而牺牲一段时间窗内的数据一致性,从而保证最牲一段时间窗内的数据一致性,从而保证最终一的时间窗内的数据一致性,从而保证最终一的数。 🎜目前这种处理数据的方式几乎成了互联网的标配设计模式,最经典的例子是在用户下单的时候不需要真正地扣减库存,而是仅在前台计个数,然后通过减处理。🎜🎜如果你想应聘的是初中级研发工程师,那么结合上述思路,从理论理解到落地实践,你已经可以把 CAP 理论答得较为清楚了。回答问题的逻辑可以参考我给出的建议:🎜
    • Pertama faham sepenuhnya prinsip teori dan bukan hanya terapung pada konsep;
    • Kedua, anda perlu mempunyai pemikiran anda sendiri dan menunjukkan perbezaan keupayaan berfikir anda
    • Kemudian bincangkan teori dan bincangkan secara praktikal; penyelesaian Logik berfikir apabila bertanya soalan.

    Kognisi Teknikal

    Jika anda memohon untuk jurutera R&D atau arkitek kanan, semasa menjawab, anda juga mesti menunjukkan sistem pengetahuan dan pertimbangan teknikal anda sebanyak mungkin. Ini adalah kualiti asas untuk kedua-dua jawatan ini. Oleh kerana teknologi teragih adalah kompleks dan pelbagai teknologi digabungkan antara satu sama lain, semasa temu duga, jika anda boleh mengembangkan sistem pengetahuan teknologi teras teragih yang jelas melalui titik pengetahuan teori CAP, anda akan berbeza daripada yang lain.

    Sistem teragih kelihatan seperti komputer. Komputer termasuk lima seni bina utama (iaitu Struktur Von Neumann). Ia mempunyai lima komponen utama: <code style='font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(239, 112, 96);'>冯诺依曼结构)。它有五大部件:

    • 控制器
    • 运算器
    • 存储器
    • 输入
    • 输出

    你可以这么理解:一个分布式系统也包含这五大部件

    Temu bual Meituan: Mari kita bercakap tentang CAP, cara saya menjawab sangat istimewapengawal

      pengendali
    • memori
    • input
    anda boleh memahaminya sistem ted juga mengandungi Lima komponen utama, yang paling penting ialah pengiraan dan penyimpanan. Pengkomputeran dan penyimpanan terdiri daripada satu siri nod rangkaian Komunikasi antara setiap nod adalah input dan output, dan pengurusan penjadualan antara setiap nod adalah pengawal.

    🎜Komponen teknikal seni bina teragih🎜🎜Dari sudut pandangan ini, sistem teragih adalah seperti komputer rangkaian, dan sistem pengetahuannya merangkumi empat perspektif: 🎜🎜🎜🎜Memori, iaitu sistem storan teragih, seperti pangkalan data NoSQL storan; , iaitu pengurusan penjadualan, Seperti penjadualan trafik, penjadualan tugas dan penjadualan sumber. 🎜🎜🎜🎜Anda boleh merumuskan sistem pengetahuan sistem teragih daripada empat perspektif ini. 🎜

    Jadi apakah penyelesaian khusus untuk masalah tersebut? Mengambil "Bolehkah Redis digunakan sebagai kunci teragih" sebagai contoh, mari analisa pengetahuan teori yang diedarkan yang tersembunyi di sebalik masalah dan idea penyelesaian masalah seorang jurutera R&D kanan.

    Idea penyelesaian masalah

    • Penjelasan masalah kehidupan sebenar

    Secara amnya, kaedah setnx digunakan untuk melaksanakan kunci dan tamat masa melalui Redis untuk mengawal masa tamat tempoh kunci. Tetapi dalam kes yang melampau, apabila nod induk Reids ditutup tetapi kuncinya tidak disegerakkan ke nod hamba, mengikut mekanisme sentinel, hamba menjadi tuan dan terus menyediakan perkhidmatan. Pada masa ini, utas lain boleh meminta kunci itu semula, dan pada masa ini dua utas akan mendapat kunci itu.

    • Panduan daripada teori regresi

    Mengikut pemahaman teori CAP, model reka bentuk Redis adalah model AP, dan kunci teragih adalah senario CP, maka jelaslah bahawa seni bina model AP daripada Redis harus digunakan untuk Dalam senario CP, pemilihan teknologi asas adalah salah.

    • Meluaskan kepada sistem pengetahuan

    Redis ialah sistem storan teragih, dan anda mesti mempunyai sistem pengetahuan dalam bidang sistem storan teragih dalam fikiran anda. Fikirkan tentang cara penyimpanan data, pengedaran data, replikasi data dan ketekalan datanya dilaksanakan, apakah teknologi yang digunakan untuk mencapainya dan mengapa pemilihan teknologi atau algoritma sedemikian diperlukan. Anda perlu belajar membandingkan dan menganalisis kaedah yang berbeza untuk masalah teragih yang sama dari pelbagai dimensi dan sudut, dan kemudian menimbang secara menyeluruh kelebihan dan kekurangan pelbagai kaedah, dan akhirnya membentuk kognisi teknikal dan pertimbangan teknikal anda sendiri.

    • membuat penghakiman teknikal, melalui Redis, anda boleh memikirkan status pembangunan semasa dan pelaksanaan teknikal sistem cache yang diedarkan. pertimbangkan, dsb. Walaupun tidak disyorkan untuk berulang kali "mencipta roda" dalam kerja sebenar, anda mesti menunjukkan keupayaan anda untuk "mencipta roda" semasa temu duga.
    Ringkasan

    Teori CAP nampak mudah, tetapi dalam temu bual, kedalaman pemahaman ia boleh mencerminkan pemahaman keseluruhan anda dan keupayaan mengawal sistem teragih. Jadi anda bukan sahaja perlu menguasai cara menjawab soalan prinsip CAP dalam kes semasa temu duga, tetapi juga menguasai idea untuk menjawab soalan Apabila menghadapi peperiksaan pengetahuan teori yang serupa pada masa hadapan, anda boleh menjawab dari tiga peringkat.

    Atas ialah kandungan terperinci Temu bual Meituan: Mari kita bercakap tentang CAP, cara saya menjawab sangat istimewa. 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