0

한다고 가정 우리가 두 개의 노드 A와 B영사 키 - 값 저장소는 두 개의 다른 키로 두 번의 쓰기를 주문할 때 어떤 보장을합니까?

우리는 노드 A에서이 두 명령을 실행

$ curl -X PUT -d one .../v1/kv/key1 
$ curl -X PUT -d two .../v1/kv/key2 

( 예. PUT one key1 이 발생-이전 PUT two key2) 다음 GET 노드 B의 /v1/kv/key2two을 반환하면 GET이 노드 B의 /v1/kv/key1one을 반환한다고 보장합니까? 다른 말로하면, KVS 영사는 노드 A에서의 두 글 사이의 관계를 존중합니까?

영사

는 (CAP 의해 정의 됨) 일관성을 제공하는 합의 프로토콜을 사용한다.

그래,하지만 내 이해는 CAP 정리는 여러 레지스터에 대해 이야기하지 않습니다. 이 두 글은 결국 일 수 있으며 노드 B로 전파되는 것은이지만 예기치 않은 중간 상태를 결코 보지 못할 것입니다.

+1

AFAIK 영사관은 단 하나의 뗏목 기록 만 가지고 있으므로 자원에 관계없이 항상 서로간에 순서가 정해집니다. 합의의 본질 때문에 간단히 그 글을 순서가 없게 만들려면 자신의 길을 벗어나야 만합니다. – kuujo

+1

필요한 경우 잘 모르겠지만 영사관 0.7 (방금 릴리스 됨)에도 새로운 트랜잭션 키/값 API가 있습니다. https://github.com/hashicorp/consul/blob/master/CHANGELOG.md#070-september- 14-2016 – deniszh

답변

1

영사 청구 선형성. "모든 서버는 트랜잭션이 일관되고 선형화 가능한 방식으로 발생하도록 뗏목 합의 알고리즘에 참여합니다."

풋이 수신 된 것보다 다른 순서로 동기화되면 다른 노드에서 읽을 때 순열을 볼 수있어 선형성 보장을 위반하게됩니다. 따라서 항상 순서대로 관찰해야합니다.

그러나 이전의 선형성 위반은 decreasing a timeout value에 의해 "해결"되고 마케팅에있어서 claiming Jepsen never found any bugs에 속하기 때문에 필자는 앞으로 몇 년 동안 완벽하게 선형화 될 수는 없을 것입니다.

+0

시간 제한에 관심이 있습니다. 어떤 문제가 그것에 관련되어 있는지 알 수 있습니까? – nodakai

+0

@nodakai는 https://aphyr.com/posts/316-jepsen-etcd-and-consul 및 https://youtu.be/QdkS6ZjeR7Q?t=1481에서 살펴 봅니다. –