Heim  >  Artikel  >  Java  >  Meituan-Interview: Reden wir über CAP, meine Art zu antworten ist etwas ganz Besonderes

Meituan-Interview: Reden wir über CAP, meine Art zu antworten ist etwas ganz Besonderes

Java后端技术全栈
Java后端技术全栈nach vorne
2023-08-24 15:11:52870Durchsuche


Fallhintergrund

CAP Die Theorie ist die zentrale Grundtheorie in verteilten Systemen. Während des Interviews wird der Interviewer Sie jedoch nicht direkt nach den Prinzipien der CAP-Theorie fragen, sondern wenn Sie während des Interviews darauf stoßen Das Interview Die oben erwähnten Probleme beim Entwurf verteilter Systeme können Ihr Verständnis und Denken von CAP nicht außer Acht lassen.

Und während des Vorstellungsgesprächs werden die Anforderungen des Interviewers für Kandidaten, die sich für verschiedene Positionen bewerben, unterschiedlich sein, und die Tiefe Ihrer Antworten wird unterschiedlich sein. Im heutigen Artikel werde ich Interviewideen aus zwei verschiedenen Perspektiven analysieren: Junior- und Intermediate-F&E-Ingenieure und leitende F&E-Ingenieure.

Fallanalyse

Ich glaube, dass Sie im Grunde wissen, worauf sich die CAP-Theorie bezieht, solange Sie sich mit den relevanten Kenntnissen der verteilten Technologie befasst haben:

  • C(Consistency)是数据一致性、
  • A(Availability)是服务可用性、
  • P(Partition tolerance)是分区容错性。

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

A(Verfügbarkeit)是服务可用性、

P(Partitionstoleranz)是分区容错性.

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

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

因为在面试中遇到理论问题时,单纯做浮于表面的概念性阐述,很难向面试官证明你的技术能力入的研发, 如果这恰好是你第一个面试题, 会直接影响面试官对你的第一印象, 甚至影响你的定级.实践经验、技术认知,然后再结合具体的面试题具体分析" A1 ist ein Client, der den Client nicht mehr benötigt.
Meituan-Interview: Reden wir über CAP, meine Art zu antworten ist etwas ganz Besonderes
Bild

Zu diesem Zeitpunkt liest der Client-Client Daten von jedem Knoten A oder A1 und kann die zuletzt geschriebenen Daten lesen, was darauf hinweist, dass die Daten von A und A1 konsistent sind und sowohl A als auch A1 konsistent sind verfügbar.

Da das Netzwerk jedoch unzuverlässig ist, kann es aufgrund von Unterbrechungen jederzeit zu einer Teilung des Netzwerks der Knoten A und A1 kommen. Die sogenannte Netzwerkpartition bedeutet, dass die Knoten A und A1 aufgrund eines Netzwerkausfalls in unterschiedlichen Netzwerkteilmengen isoliert sind. Zu diesem Zeitpunkt können die Daten von Knoten A nicht rechtzeitig mit Knoten A1 synchronisiert werden.

Meituan-Interview: Reden wir über CAP, meine Art zu antworten ist etwas ganz Besonderes
Bilder

In verteilten Systemen sind Netzwerkpartitionen aufgrund von Netzwerkproblemen die Regel. Das heißt, wenn eine Netzwerkpartition auftritt, muss gemäß der CAP-Theorie ein Kompromiss zwischen A und C geschlossen werden, um entweder die Systemverfügbarkeit oder die Datenkonsistenz sicherzustellen.

Hier sollten Sie aufpassen. Das obige Beispiel hat eine wichtige Prämisse, nämlich, dass im System eine Netzwerkpartition vorhanden ist, aber die tatsächliche Situation ist, dass Netzwerkpartitionen meistens nicht vorhanden sind (Netzwerkprobleme treten nicht oft auf). ). Müssen wir also immer noch zwei von drei auswählen (CP oder AP)?

Tatsächlich müssen verschiedene verteilte Systeme basierend auf Geschäftsszenarien und Geschäftsanforderungen zwischen den drei CAPs abwägen. Die CAP-Theorie wird verwendet, um Faktoren zu leiten, die beim Entwurf eines Systems gemessen werden müssen, anstatt absolute Entscheidungen zu treffen.

Wenn es keine Partition im Netzwerk gibt, gibt die CAP-Theorie keine Faktoren zum Messen von A und C an. Wenn Sie jedoch tatsächlich ein verteiltes Systemdesign durchgeführt haben, werden Sie auf jeden Fall die Latenz der Systemdatensynchronisierung (Latenz) finden Das Beispiel: Die Zeit, die Knoten A benötigt, um Daten mit Knoten A1 zu synchronisieren, ist der wichtigste Faktor bei der Messung von A und C. Derzeit gibt es kein absolutes AP-Modell oder CP-Modell, sondern basiert auf umfassenden Überlegungen tatsächlicher Geschäftsszenarien .

Daher wird es neue Modelle wie PACELC „Reference1“ geben, um die ursprüngliche CAP-Theorie zu optimieren. Die Theorie leitet die Praxis und übt die Optimierungstheorie aus.

Gemäß der Definition des PACELC-Modells muss das System bei Auftreten einer Netzwerkpartition einen Ausgleich zwischen A und C herstellen. Andernfalls (sonst das E in PACELC) muss das System einen Ausgleich herstellen, wenn das System ohne Netzwerkpartition läuft zwischen L (Verzögerung) und C.

Meituan-Interview: Reden wir über CAP, meine Art zu antworten ist etwas ganz BesonderesPACELC

Aber das Verständnis dieses Levels reicht nicht aus, Sie müssen es auch durch Implementierungserfahrung nachweisen.

Praxiserfahrung

Man muss sich darüber im Klaren sein, dass das verteilte Design des Internets ein Kompromiss zwischen Datenkonsistenz und Systemverfügbarkeit ist, und es ist nicht besonders wichtig. Auch wenn keine starke Konsistenz erreicht werden kann (einfach ausgedrückt bedeutet starke Konsistenz, dass die von allen Benutzern abgefragten Daten jederzeit die neuesten sind), können Sie dennoch geeignete Methoden entsprechend Ihren eigenen Geschäftsmerkmalen verwenden, um das System endgültig zu machen Konsistenz.

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

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

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

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

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

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

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

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

BASE 中的基本可用指的是保障核心功能的基本可用,其实是做了“ px;Rand rechts: 2px ;Rand links: 2 Pixel; Hintergrundfarbe: RGBA (27, 31, 35, 0,05); Schriftfamilie: „Operator Mono“, Consolas, Monaco, Menlo, Monospace; Wortumbruch: Break-All; Farbe: RGB (239, 112, 96)关闭商品排行榜等次要功能的展示,从而保证商品交易主流程的可用性,这也是我们常说的服务降级;🎜🎜为了错开双十一高峰期,电商网站会将预售商品的支付时间延后十到二十分钟,这就是流量削峰;🎜🎜在你抢购商品的时候, 往往会在队列中等待处理,这也是常用的延迟队列从而保证最终的数据一致性的做法...在用户下单的时候不需要真正地扣减库存, 而是仅在前台计个数, 然后通过异步任务在后台批量处理.🎜🎜如果你想应聘的是初中级研发工程师,
  • Zunächst müssen Sie die theoretischen Prinzipien vollständig verstehen und nicht nur auf Konzepten herumschweben.
  • Zweitens müssen Sie Ihr eigenes Denken haben und den Unterschied in Ihren Denkfähigkeiten zeigen Lösungen Die Logik des Denkens beim Stellen von Fragen.
  • Technisches Verständnis
  • Wenn Sie sich als leitender F&E-Ingenieur oder Architekt bewerben, müssen Sie bei der Beantwortung auch Ihr Wissenssystem und Ihr technisches Urteilsvermögen so weit wie möglich unter Beweis stellen. Dies ist die Grundqualität für diese beiden Positionen. Da verteilte Technologie komplex ist und verschiedene Technologien miteinander gekoppelt sind, unterscheiden Sie sich von anderen, wenn Sie während des Vorstellungsgesprächs ein klares verteiltes Kerntechnologie-Wissenssystem durch einen CAP-Theorie-Wissenspunkt erweitern können.

    Ein verteiltes System sieht aus wie ein Computer. Computer umfassen fünf Hauptarchitekturen (d. h.
  • 控制器
  • 运算器
  • 存储器
  • 输入
  • 输出
  • 你可以这么理解:一个分布式系统也包含这五大部件

    Meituan-Interview: Reden wir über CAP, meine Art zu antworten ist etwas ganz BesonderesOperator

      Speicher
    • Eingabe
    • Ausgabe
    • Sie können es folgendermaßen verstehen: Das System enthält auch diesen Technische Komponenten der verteilten Architektur
    Aus dieser Sicht ist ein verteiltes System wie ein Netzwerkcomputer, und sein Wissenssystem umfasst vier Perspektiven:

    🎜🎜Speicher, also verteilte Speichersysteme wie NoSQL-Datenbanken Speicher; 🎜🎜🎜Operator, das heißt verteiltes Parallelrechnen; 🎜🎜🎜🎜Eingabe und Ausgabe, also verteilte Systemkommunikation, wie synchrone RPC-Aufrufe und asynchrone Nachrichtenwarteschlangen; Das heißt, Planungsmanagement, z. B. Verkehrsplanung, Aufgabenplanung und Ressourcenplanung. 🎜🎜🎜🎜Aus diesen vier Perspektiven lässt sich das Wissenssystem verteilter Systeme zusammenfassen. 🎜

    Was ist also die konkrete Lösung des Problems? Am Beispiel von „Kann Redis als verteilte Sperre verwendet werden?“ analysieren wir das verteilte theoretische Wissen, das sich hinter dem Problem verbirgt, und die Problemlösungsideen eines leitenden Forschungs- und Entwicklungsingenieurs.

    Ideen zur Problemlösung

    • Erklärung realer Probleme

    Im Allgemeinen wird die Setnx-Methode verwendet, um Sperren und Zeitüberschreitungen über Redis zu implementieren und die Ablaufzeit der Sperre zu steuern. Aber in extremen Fällen, wenn der Reids-Masterknoten auflegt, die Sperre jedoch nicht mit dem Slave-Knoten synchronisiert wurde, wird der Slave gemäß dem Sentinel-Mechanismus zum Master und stellt weiterhin Dienste bereit. Zu diesem Zeitpunkt kann ein anderer Thread die Sperre erneut anfordern, und zu diesem Zeitpunkt erhalten zwei Threads die Sperre.

    • Anleitung aus der Regressionstheorie

    Nach dem Verständnis der CAP-Theorie ist das Designmodell von Redis das AP-Modell und die verteilte Sperre ein CP-Szenario, dann ist es offensichtlich, dass die Architektur des AP-Modells ist von Redis wird auf das CP-Szenario angewendet, die zugrunde liegende Technologieauswahl ist falsch.

    • Erweitern Sie das Wissenssystem

    Redis ist ein verteiltes Speichersystem, und Sie müssen ein Wissenssystem im Bereich verteilter Speichersysteme im Kopf haben. Überlegen Sie, wie die Datenspeicherung, Datenverteilung, Datenreplikation und Datenkonsistenz implementiert werden, welche Technologien verwendet werden, um sie zu erreichen, und warum eine solche Technologie- oder Algorithmusauswahl erforderlich ist. Sie müssen lernen, verschiedene Methoden für dasselbe verteilte Problem aus mehreren Dimensionen und Blickwinkeln zu vergleichen und zu analysieren, dann die Vor- und Nachteile verschiedener Methoden umfassend abzuwägen und letztendlich Ihre eigene technische Erkenntnis und Ihr eigenes technisches Urteil zu bilden.

    • Haben Sie technisches Urteilsvermögen

    Über Redis können Sie sich beispielsweise den aktuellen Entwicklungsstand und die technische Implementierung verteilter Cache-Systeme vorstellen. Wenn Sie gebeten würden, ein „Redis“ zu erstellen, welche Probleme würden Sie haben? überlegen usw. . Obwohl es nicht empfehlenswert ist, in der tatsächlichen Arbeit immer wieder „das Rad zu erfinden“, müssen Sie im Vorstellungsgespräch Ihre Fähigkeit unter Beweis stellen, „das Rad zu erfinden“.

    Zusammenfassung

    Die CAP-Theorie scheint einfach zu sein, aber im Interview kann die Tiefe des Verständnisses Ihr Gesamtverständnis und Ihre Kontrollfähigkeit verteilter Systeme widerspiegeln.

    Sie müssen also nicht nur die Beantwortung von Fragen zu den CAP-Grundsätzen in Bewerbungsgesprächen beherrschen, sondern auch die Ideen zur Beantwortung von Fragen beherrschen. Wenn Sie in Zukunft auf ähnliche theoretische Wissenstests stoßen, können Sie auf drei Ebenen antworten .

    Das obige ist der detaillierte Inhalt vonMeituan-Interview: Reden wir über CAP, meine Art zu antworten ist etwas ganz Besonderes. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:Java后端技术全栈. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen