Maison  >  Article  >  Java  >  Interview Meituan : Parlons du CAP, ma façon de répondre est très particulière

Interview Meituan : Parlons du CAP, ma façon de répondre est très particulière

Java后端技术全栈
Java后端技术全栈avant
2023-08-24 15:11:52690parcourir


Contexte du cas

CAP La théorie est la théorie de base des systèmes distribués. Bien que lors de l'entretien, l'intervieweur ne vous posera pas directement des questions sur les principes de la théorie CAP, mais lorsque vous la rencontrerez au cours de l'entretien. l'entretien Les problèmes de conception de systèmes distribués mentionnés ci-dessus ne peuvent ignorer votre compréhension et votre réflexion sur le CAP.

Et pendant l'entretien, les exigences de l'intervieweur seront différentes pour les candidats interviewant pour différents postes, et la profondeur de vos réponses sera différente. Ainsi, dans l'article d'aujourd'hui, j'analyserai les idées d'entretien sous deux angles différents : les ingénieurs R&D juniors et intermédiaires et les ingénieurs R&D seniors.

Analyse de cas

Je crois que tant que vous avez étudié les connaissances pertinentes de la technologie distribuée, vous savez fondamentalement à quoi fait référence la théorie CAP :

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

    A(Disponibilité)是服务可用性、

    P(Tolérance de partition)是分区容错性。

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

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

    因为在面试中遇到理论问题时,单纯做浮于表面的概念性阐述,很难向面试官证明你的技术能力。 面试官会觉得你是一个刚接触分布式系统,或者对分布式系统理解不够深入的研发,如果这恰好是你第一个面试题,会直接影响面试官对你的第一印象,甚至影响你的定级。从我的经验出发,如果你想答得更好,你需要先掌握 CAP 的原理、实践经验、技术认知,然后再结合具体的面试题具体分析。

    问题解答

    🎜理解原理🎜🎜现在有一个分布式系统 A,它有一个副本 A1,在正常情况下,客户端 Client 写数据到系统 A,然后数据从 A 节点同步到A1 节点,再返回给 Client 成功状态。🎜
    Interview Meituan : Parlons du CAP, ma façon de répondre est très particulière
    Image

    À ce moment, le client client lit les données de n'importe quel nœud A ou A1 et peut lire les dernières données écrites, indiquant que les données de A et A1 sont cohérentes, et que A et A1 le sont également. disponible.

    Mais comme le réseau n'est pas fiable, le réseau des nœuds A et A1 peut être partitionné à tout moment en raison d'interruptions. La soi-disant partition réseau signifie que les nœuds A et A1 sont isolés dans différents sous-ensembles de réseau en raison d'une panne de réseau. À ce stade, les données du nœud A ne peuvent pas être synchronisées avec le nœud A1 à temps.

    Interview Meituan : Parlons du CAP, ma façon de répondre est très particulière
    Photos

    Dans les systèmes distribués, les partitions réseau dues à des problèmes de réseau sont la norme. Autrement dit, lorsqu'une partition réseau se produit, selon la théorie CAP, un compromis doit être fait entre A et C, c'est-à-dire soit pour garantir la disponibilité du système, soit pour assurer la cohérence des données.

    Vous devez faire attention ici. L'exemple ci-dessus a un principe majeur, c'est-à-dire qu'une partition réseau se produit dans le système, mais la situation réelle est que la plupart du temps, les partitions réseau n'existent pas (les problèmes de réseau ne surviennent pas souvent). ). Alors faut-il encore en choisir deux sur trois (CP ou AP) ?

    En fait, différents systèmes distribués doivent faire des compromis entre les trois CAP en fonction des scénarios commerciaux et des besoins commerciaux. La théorie CAP est utilisée pour guider les facteurs qui doivent être mesurés lors de la conception d’un système, plutôt que pour faire des choix absolus.

    Lorsqu'il n'y a pas de partition dans le réseau, la théorie CAP ne donne pas de facteurs pour mesurer A et C, mais si vous avez réellement conçu un système distribué, vous trouverez certainement la latence de synchronisation des données du système (Latence), qui est l'exemple Le temps nécessaire au nœud A pour synchroniser les données avec le nœud A1 est le facteur le plus important dans la mesure de A et C. À l'heure actuelle, il n'existe pas de modèle AP ou de modèle CP absolu, mais une prise en compte complète du scénario commercial réel.

    Par conséquent, il y aura de nouveaux modèles tels que PACELC "Référence1" pour optimiser la théorie CAP originale. La théorie guide la pratique et met en pratique la théorie de l'optimisation.

    Selon la définition du modèle PACELC, si une partition réseau se produit, le système doit trouver un équilibre entre A et C. Sinon (sinon, le E dans PACELC) lorsque le système fonctionne sans partition réseau, le système doit équilibrer entre L (délai) et C.

    Interview Meituan : Parlons du CAP, ma façon de répondre est très particulièrePACELC

    Mais comprendre ce niveau ne suffit pas, il faut aussi le prouver avec une expérience de mise en œuvre.

    Expérience pratique

    Vous devez comprendre que la conception distribuée d'Internet est un compromis entre la cohérence des données et la disponibilité du système, et ce n'est pas l'un ou l'autre. Ceci est particulièrement important. Par conséquent, même si une forte cohérence ne peut pas être obtenue (en termes simples, une forte cohérence signifie que les données interrogées par tous les utilisateurs sont les plus récentes à tout moment), vous pouvez toujours utiliser des méthodes appropriées en fonction de vos propres caractéristiques commerciales pour que le système atteigne la valeur finale. cohérence du sexe.

    BASE 理论,它是 CAP 理论的延伸。BASEBasiquement disponible(基本可用)、Soft State(软状态)和 Finalement cohérent(最终一致性)三个单词的简写,作用是保证系统的可用性,它是目前分布式系统设计中BASE 理论来指导设计实践呢?

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

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

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

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

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

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

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

    如果你想应聘的是初中级研发工程师,那么结合上述思路,从理论理解到落地实践,你已经可以把 CAP 理论BASE 中的基本可用指的是保障核心功能的基本可用,其实是做了"可用性”关闭商品排行榜等次要功能的展示,从而保证商品交易主流程的可用性,这也是我们常说的服务降级;

    🎜为了错开双十一高峰期,电商网站会将预售商品的支付时间延后十到二十分钟,这就是流量削峰;🎜🎜在你抢购商品的时候,往往会在队列中等待处理,这也是常用的延迟队列。🎜🎜软状态和最终一致性指的是允许系统中的数据存在中间状态,这同样是为了系统可用性而牺牲一段时间窗内的数据一致性,从而保证最终的数据一致性的做法。🎜🎜目前这种处理数据的方式几乎成了互联网的标配设计模式,最经典的例子是在用户下单的时候不需要真正地扣减库存,而是仅在前台计个数,然后通过异步任务在后台批量处理。🎜🎜如果你想应聘的是初中级研发工程师,那么结合上述思路, CAP 理论答得较为清楚了。回答问题的逻辑可以参考我给出的建议:🎜
    • D'abord, comprenez pleinement les principes théoriques et ne vous contentez pas de flotter sur des concepts.
    • Deuxièmement, vous devez avoir votre propre réflexion et montrer la différence dans votre capacité de réflexion.
    • Ensuite, combinez la théorie avec la pratique et discutez de la pratique ; solutions La logique de la pensée lorsqu’on pose des questions.

    Cognition technique

    Si vous postulez pour un ingénieur ou un architecte R&D senior, lorsque vous répondez, vous devez également démontrer autant que possible votre système de connaissances et votre jugement technique. C'est la qualité de base pour ces deux postes. Étant donné que la technologie distribuée est complexe et que diverses technologies sont couplées les unes aux autres, au cours de l'entretien, si vous pouvez développer un système de connaissances technologiques de base distribué clair grâce à un point de connaissance théorique du CAP, vous serez différent des autres.

    Un système distribué ressemble à un ordinateur. Les ordinateurs comprennent cinq architectures principales (c'est-à-dire Structure de Von Neumann). Il comporte cinq composants principaux : <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);'>冯诺依曼结构)。它有五大部件:

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

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

    Interview Meituan : Parlons du CAP, ma façon de répondre est très particulièrecontrôleur

      opérateur
    • mémoire
    • entrée
    • sortie
    • Vous pouvez le comprendre de cette façon : un le système contient également ce Cinq composants majeurs dont les plus importants sont le calcul et stockage. L'informatique et le stockage sont composés d'une série de nœuds de réseau. La communication entre chaque nœud est une entrée et une sortie, et la gestion de la planification entre chaque nœud est le contrôleur.

    Composants techniques de l'architecture distribuée🎜🎜De ce point de vue, un système distribué est comme un ordinateur en réseau, et son système de connaissances comprend quatre perspectives : 🎜🎜🎜🎜La mémoire, c'est-à-dire les systèmes de stockage distribués, tels que la base de données NoSQL stockage 🎜 🎜🎜🎜Opérateur, c'est-à-dire informatique distribuée, telle que l'informatique parallèle distribuée ; 🎜🎜🎜🎜Entrée et sortie, c'est-à-dire communication système distribuée, telle que les appels RPC synchrones et les files d'attente de messages asynchrones ; , c'est-à-dire la gestion de la planification, telle que la planification du trafic, la planification des tâches et la planification des ressources. 🎜🎜🎜🎜Vous pouvez résumer le système de connaissances des systèmes distribués sous ces quatre perspectives. 🎜

    Alors, quelle est la solution spécifique au problème ? En prenant comme exemple « Redis peut-il être utilisé comme verrou distribué », analysons les connaissances théoriques distribuées cachées derrière le problème et les idées de résolution de problèmes d'un ingénieur R&D senior.

    Idées de résolution de problèmes

    • Explication des problèmes réels

    Généralement, la méthode setnx est utilisée pour implémenter des verrous et des délais d'attente via Redis afin de contrôler le délai d'expiration du verrouillage. Mais dans les cas extrêmes, lorsque le nœud maître Reids raccroche mais que le verrou n'a pas été synchronisé avec le nœud esclave, selon le mécanisme sentinelle, l'esclave devient le maître et continue de fournir des services. À ce moment-là, un autre thread peut demander à nouveau le verrou, et à ce moment-là, deux threads obtiendront le verrou.

    • Conseils de la théorie de la régression

    Selon la compréhension de la théorie CAP, le modèle de conception de Redis est le modèle AP et le verrouillage distribué est un scénario CP, il est alors évident que l'architecture du modèle AP de Redis doit être appliqué à Dans le scénario CP, la sélection technologique sous-jacente est erronée.

    • Développez le système de connaissances

    Redis est un système de stockage distribué, et vous devez avoir en tête un système de connaissances dans le domaine des systèmes de stockage distribués. Réfléchissez à la manière dont le stockage des données, la distribution des données, la réplication des données et la cohérence des données sont mis en œuvre, aux technologies utilisées pour y parvenir et à la raison pour laquelle une telle sélection de technologie ou d'algorithme est nécessaire. Vous devez apprendre à comparer et analyser différentes méthodes pour le même problème distribué sous plusieurs dimensions et angles, puis peser de manière exhaustive les avantages et les inconvénients des différentes méthodes, et finalement former votre propre cognition technique et votre propre jugement technique.

    • Ayez un jugement technique

    Par exemple, grâce à Redis, vous pouvez penser à l'état actuel du développement et à la mise en œuvre technique des systèmes de cache distribués. Si on vous demandait de créer un "Redis", quels problèmes poseriez-vous. considérer, etc. Bien qu'il ne soit pas recommandé d'« inventer la roue » à plusieurs reprises dans le travail réel, vous devez montrer votre capacité à « inventer la roue » lors de l'entretien.

    Résumé

    La théorie CAP semble simple, mais dans l'entretien, la profondeur de sa compréhension peut refléter votre compréhension globale et votre capacité de contrôle des systèmes distribués.

    Vous devez donc non seulement maîtriser la manière de répondre aux questions principales du CAP dans le cas lors de l'entretien, mais également maîtriser les idées pour répondre aux questions. Lorsque vous rencontrerez des examens de connaissances théoriques similaires à l'avenir, vous pourrez répondre à partir de trois niveaux.

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer