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.
Saya percaya bahawa selagi anda telah mempelajari pengetahuan berkaitan teknologi teragih, anda pada asasnya tahu apa yang dimaksudkan oleh teori CAP:
Ketekalan
)是数据一致性、
Consistency
)是数据一致性、
Availability
)是服务可用性、
Partition tolerance
)是分区容错性。
C、A、P 只能同时满足两个目标,而由于在分布式系统中,P 是必须要保留的,所以要在 C 和 A 间进行取舍。假如要保证服务的可用性,就选择 AP 模型,而要保证一致性的话,就选择CP
Ketersediaan
)是服务可用性、
P(
Toleransi partition
) 是 分区 容错性。
c 、 A 、 P 只 能 同时 同时 满足 个 目标, 而由于在分布式系统中,P 是必须要保留的,所以要在 C 和 A 间进行取舍。假如要中文,假如要了选择 AP 模型,而要保证一致性的话,就选择CP
模型。
很多候选者如果发现颢者“为了数据容灾,我们会做数据的主从备份,那么主从节点的数据一致性对调用用家)涉及了对“CAP 的理解和思考”,会下意识地做出类似的答案:“ CAP 理论描述了在出现网络分区的情况下,要在 C 和 A 之间做取舍,所仜分区。角看系统是不可用的”。如果是我的话,大概会给个及格分,并认为这样的回答,只能证明你有准备,不能证明你有能力。
能证明你有准备,不能证明你有能力。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.
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.
PACELC
Tetapi memahami tahap ini tidak mencukupi, anda juga perlu membuktikannya dengan pengalaman pelaksanaan.
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 理论的延伸。BASE
是Ada Pada dasarnya
(基本可用)、
Akhirnya Konsisten
(最终一致性)三个单词的,简写作用是保证系统的可用性,然后通过最终一致性来代替强一致性,它是目前分紮具指导意义的经验总结。那么在实际项目中,你如何通过 BASE 理论来指导论来指导设计客?
BASE
理论,它是 CAP 理论的延伸。
BASE
是
Basically Available
(基本可用)、
Soft State
(软状态)和
Eventually Consistent
(最终一致性)三个单词的简写,作用是保证系统的可用性,然后通过最终一致性来代替强一致性,它是目前分布式系统设计中最具指导意义的经验总结。那么在实际项目中,你如何通过 BASE 理论来指导设计实践呢?
BASE 中的基本可用指的是保障核心功能的基本可用,其实是做了“可用性
”方面的妥协,比如:
电商网站在双十一大促等访问压力较大的时候,关闭商品排行榜等次要功能的展示,从而保证商品交易主流程的可用性,这也是我们常说的服务降级;
为了错开双十一高峰期,电商网站会将预售商品的支付时间延后十到二十分钟,这就是流量削峰;
在你抢购商品的时候,往往会在队列中等待处理,这也是常用的延迟队列。
软状态和最终一致性指的是允许系统中的数据存在中间状态,这同样是为了系统可用性而牺牲一段时间窗内的数据一致性,从而保证最终的数据一致性的做法。
目前这种处理数据的方式几乎成了互联网的标配设计模式,最经典的例子是在用户下单的时候不需要真正地扣减库存,而是仅在前台计个数,然后通过异步任务在后台批量处理。
如果你想应聘的是初中级研发工程师,那么结合上述思路,从理论理解到落地实践,你已经可以把CAP 理论
可用性
”方面的妥协,比如:电商网站在双十一大促等访问的大促等访宿问闭商品排行榜等次要功能的展示,从而保证商品交易主流程的可用性,这也是我们常说的服务降级;务降级;务降级;为间受中可峰期,电商网站会将预售商品的支付时间延后十到二十分钟,这就是流量削峰;在你抢购商品的时候,往往会在队列中等待处理,这幟的生。 软状态和最终一致性指的是允许系统中的数据存在中间状态,这同样是为了系统可用性而牺牲一段时间窗内的数据一致性,从而保证最牲一段时间窗内的数据一致性,从而保证最终一的时间窗内的数据一致性,从而保证最终一的数。 目前这种处理数据的方式几乎成了互联网的标配设计模式,最经典的例子是在用户下单的时候不需要真正地扣减库存,而是仅在前台计个数,然后通过减处理。如果你想应聘的是初中级研发工程师,那么结合上述思路,从理论理解到落地实践,你已经可以把
CAP 理论
答得较为清楚了。回答问题的逻辑可以参考我给出的建议:
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 (iaituStruktur Von Neumann). Ia mempunyai lima komponen utama:
冯诺依曼结构
)。它有五大部件:
你可以这么理解:一个分布式系统也包含这五大部件
pengawal
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.
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.
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.
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.
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!