집 >Java >Java인터뷰 질문들 >메이투안 인터뷰: CAP에 대해 이야기해보겠습니다. 제가 대답하는 방식은 매우 특별합니다.
CAP
이론은 분산 시스템의 핵심 기본 이론입니다. 비록 면접 중에는 면접관이 직접적으로 CAP 이론의 원리를 묻지는 않지만, 면접 중에 접하게 되는 경우도 있습니다. 인터뷰 위에서 언급한 분산 시스템 설계 문제는 CAP에 대한 이해와 사고를 우회할 수 없습니다.
그리고 면접 시 면접관이 요구하는 사항도 각 직위별로 면접관의 요구 사항이 다르며 답변의 깊이도 다릅니다. 그래서 오늘 기사에서는 주니어 및 중급 R&D 엔지니어와 수석 R&D 엔지니어라는 두 가지 관점에서 인터뷰 아이디어를 분석해 보겠습니다.
분산 기술 관련 지식을 공부했다면 기본적으로 CAP 이론이 무엇을 의미하는지 알 것입니다.
일관성
)是数据一致性、Consistency
)是数据一致性、Availability
)是服务可用性、Partition tolerance
)是分区容错性。C、A、P 只能同时满足两个目标,而由于在分布式系统中,P 是必须要保留的,所以要在 C 和 A 间进行取舍。假如要保证服务的可用性,就选择 AP 模型,而要保证一致性的话,就选择 CP
가용성
)是服务可사용성、P(파티션 허용
)是分区容错性.C、A、P 只能同时满足两个目标,而由于는 C와 A에서 P 是必须要保留的, 所以要.假如要保证服务的可用性, 就选择 AP要保证一致性话,就选择 CP
模型。
很多候选者如果发现면试题(比如“저희는 당신의 주인이고, 당신의 주인은 누구입니까?”) “CAP는 논리적입니다.”解和思考”,会下意识地做流类似的答案:“ CAP 理论描述了는 C 와 A에서 要에 사용되지 않습니다.” 。如果是我的话,大概会给个及格分,并认为这样的回答,只能证明你有准备,不能证明你有能做。
이때 클라이언트 클라이언트는 임의의 노드 A 또는 A1에서 데이터를 읽고 가장 최근에 작성된 데이터를 읽을 수 있으며 이는 A와 A1의 데이터가 일치하고 A와 A1도 모두 일치함을 나타냅니다. 사용할 수 있습니다.
하지만 네트워크가 불안정하기 때문에 노드 A와 A1의 네트워크는 언제든지 중단으로 인해 분할될 수 있습니다. 소위 네트워크 분할은 네트워크 장애로 인해 노드 A와 A1이 서로 다른 네트워크 하위 집합으로 격리되는 것을 의미합니다. 이때 노드 A의 데이터는 노드 A1에 적시에 동기화될 수 없습니다.
분산 시스템에서는 네트워크 문제로 인한 네트워크 파티션이 일반적입니다. 즉, CAP 이론에 따르면 네트워크 분할이 발생하면 시스템 가용성을 보장하거나 데이터 일관성을 보장하기 위해 A와 C 간에 트레이드 오프가 이루어져야 합니다.
여기서 주목해야 할 것은 위의 예는 시스템에 네트워크 파티션이 발생한다는 큰 전제가 있지만 실제 상황은 대부분 네트워크 파티션이 존재하지 않는다는 것입니다(네트워크 문제가 자주 발생하지 않습니다). ). 그렇다면 여전히 3개 중 2개(CP 또는 AP)를 선택해야 합니까?
실제로 다양한 분산 시스템은 비즈니스 시나리오와 비즈니스 요구 사항에 따라 세 가지 CAP 간에 균형을 맞춰야 합니다. CAP 이론은 절대적인 선택을 하기보다는 시스템을 설계할 때 측정해야 할 요소를 안내하는 데 사용됩니다.
네트워크에 파티션이 없을 때 CAP 이론은 A와 C를 측정하는 요소를 제공하지 않지만, 실제 분산 시스템 설계를 해본 경우 시스템 데이터 동기화의 지연 시간(Latency)을 확실히 찾을 수 있습니다. the example 노드 A가 노드 A1에 데이터를 동기화하는 데 걸리는 시간은 A와 C를 측정하는 데 가장 중요한 요소입니다. 이때 절대적인 AP 모델이나 CP 모델은 없으며 실제 비즈니스 시나리오를 종합적으로 고려한 것입니다. .
따라서 원래 CAP 이론을 최적화하기 위한 PACELC "Reference1"과 같은 새로운 모델이 있을 것입니다. 이 이론은 최적화 이론의 실천을 안내하고 실천합니다.
PACELC 모델의 정의에 따르면 네트워크 분할이 발생하면 시스템은 A와 C 사이의 균형을 유지해야 합니다. 그렇지 않으면(그렇지 않으면 PACELC의 E) 시스템이 네트워크 분할 없이 실행될 때 시스템은 균형을 유지해야 합니다. L(지연)과 C 사이.
PACELC
하지만 이 수준을 이해하는 것만으로는 충분하지 않으며 구현 경험을 통해 증명해야 합니다.
인터넷의 분산 설계는 데이터 일관성과 시스템 가용성 간의 균형이며 이는 특히 중요하지 않습니다. 따라서 Strong Consistency는 Strong Consistency를 달성할 수 없더라도(간단히 말하면 Strong Consistency는 모든 사용자가 쿼리하는 데이터가 언제든지 최신임을 의미함), 자신의 비즈니스 특성에 따라 적절한 방법을 사용하여 시스템이 최종 일관성을 달성하도록 할 수 있습니다. 일관성.
这时就要引出 BASE
理论,它是 CAP 理论的延伸。BASE
是기본적으로 사용 가능
(基本可用)、Soft State
(软状态) 과 최종 일관성
(最终一致性) 三个单词的简写,然后证系统的可用性, 然后过最终一致性来代替强一致性, 它是目前分布式系统设计中最具指导导导导导导经总结.那么는 实际项目中,你如何通过 BASE 理论来指导设计实践呢?BASE
理论,它是 CAP 理论的延伸。BASE
是 Basically Available
(基本可用)、Soft State
(软状态)和 Eventually Consistent
(最终一致性)三个单词的简写,作用是保证系统的可用性,然后通过最终一致性来代替强一致性,它是目前分布式系统设计中最具指导意义的经验总结。那么在实际项目中,你如何通过 BASE 理论来指导设计实践呢?
BASE 中的基本可用指的是保障核心功能的基本可用,其实是做了“可用性
”方面的妥协,比如:
电商网站在双十一大促等访问压力较大的时候,关闭商品排行榜等次要功能的展示,从而保证商品交易主流程的可用性,这也是我们常说的服务降级;
为了错开双十一高峰期,电商网站会将预售商品的支付时间延后十到二十分钟,这就是流量削峰;
在你抢购商品的时候,往往会在队列中等待处理,这也是常用的延迟队列。
软状态和最终一致性指的是允许系统中的数据存在中间状态,这同样是为了系统可用性而牺牲一段时间窗内的数据一致性,从而保证最终的数据一致性的做法。
目前这种处理数据的方式几乎成了互联网的标配设计模式,最经典的例子是在用户下单的时候不需要真正地扣减库存,而是仅在前台计个数,然后通过异步任务在后台批量处理。
如果你想应聘的是初中级研发工程师,那么结合上述思路,从理论理解到落地实践,你已经可以把 CAP 理论
사용성
"방향별 사용성"방향별 사용성 정말 대단해요这也是我们常说的服务降级;🎜🎜为了错开双十一高峰期,电商网站会将预售商제품의 支付时间延后十到이十分钟,这就是流flow削峰;🎜🎜day 你抢购商品的时候,往往会在队列中等待处理,这也是常用的延迟队列。🎜🎜软状态화最终一致性指的是允许系统中的数据存在中间状态,这같은 방식으로 사용하는 것이 좋습니다.数据的方式几乎成了互联网的标配设计模式,最经典的例子是이 앱을 사용하면 더 이상 사용할 수 없습니다.想应聘的是初中级研发工程师,那么结合上述思路,从理论理解到落地实践,你已经可以把 CAP 논리
答得较为清楚了 .시니어 R&D 엔지니어나 아키텍트에 지원하는 경우, 답변 시 지식 체계와 기술적 판단력도 최대한 보여주어야 합니다. 이것이 두 직위의 기본 자질입니다. 분산기술은 복잡하고 다양한 기술들이 서로 결합되어 있기 때문에 면접 시 CAP이론의 지식포인트를 통해 명확한 분산핵심기술 지식체계를 확장할 수 있다면 남들과 다를 것입니다.
분산 시스템은 컴퓨터처럼 보입니다. 컴퓨터에는 5가지 주요 아키텍처가 포함되어 있습니다(예: 폰 노이만 구조
). 여기에는 다섯 가지 주요 구성 요소가 있습니다. 冯诺依曼结构
)。它有五大部件:
你可以这么理解:一个分布式系统也包含这五大部件
controller
그럼 문제의 구체적인 해결방안은 무엇인가요? "Redis를 분산 잠금으로 사용할 수 있는가?"를 예로 들어, 문제 뒤에 숨겨진 분산 이론 지식과 선임 R&D 엔지니어의 문제 해결 아이디어를 분석해 보겠습니다.
일반적으로 setnx 메서드는 Redis를 통해 잠금 및 시간 초과를 구현하여 잠금 만료 시간을 제어하는 데 사용됩니다. 그러나 극단적인 경우, Reids 마스터 노드가 끊어졌지만 센티넬 메커니즘에 따라 잠금이 슬레이브 노드에 동기화되지 않은 경우 슬레이브가 마스터가 되어 계속 서비스를 제공합니다. 이때 다른 스레드가 다시 잠금을 요청할 수 있으며, 이때 두 스레드가 잠금을 얻게 됩니다.
CAP 이론의 이해에 따르면 Redis의 설계 모델은 AP 모델이고 분산 잠금은 CP 시나리오이므로 AP 모델의 아키텍처는 분명합니다. Redis의 적용 CP 시나리오에서는 기본 기술 선택이 잘못되었습니다.
Redis는 분산 스토리지 시스템이므로 분산 스토리지 시스템 분야의 지식 시스템을 염두에 두어야 합니다. 데이터 저장, 데이터 배포, 데이터 복제 및 데이터 일관성이 어떻게 구현되는지, 이를 달성하기 위해 어떤 기술이 사용되는지, 그러한 기술이나 알고리즘 선택이 필요한 이유에 대해 생각해 보십시오. 동일한 분산 문제에 대해 다양한 방법을 다차원과 각도에서 비교 분석하는 방법을 배우고, 다양한 방법의 장단점을 종합적으로 따져보고, 궁극적으로 자신만의 기술적 인식과 기술적 판단력을 형성해야 합니다.
예를 들어 Redis를 통해 현재의 개발 상황과 분산 캐시 시스템의 기술적 구현을 생각해 볼 수 있는데, "Redis"을 구축하라고 하면 어떤 문제를 제기하시겠습니까? 등을 고려해 보세요. 실제 업무에서 반복적으로 '바퀴 발명'을 하는 것은 권장되지 않지만, 면접에서는 '바퀴 발명' 능력을 보여줘야 합니다.
CAP 이론은 간단해 보이지만, 인터뷰를 통해 CAP 이론에 대한 이해의 깊이는 분산 시스템에 대한 전반적인 이해와 제어 능력을 반영할 수 있습니다.
그러므로 면접 중 사례의 CAP 원리 질문에 어떻게 답해야 하는지 뿐만 아니라, 향후 유사한 이론 지식 시험을 접하게 되면 질문에 답하기 위한 아이디어도 숙달해야 합니다. .
위 내용은 메이투안 인터뷰: CAP에 대해 이야기해보겠습니다. 제가 대답하는 방식은 매우 특별합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!