solr에 의해 인덱싱되는 객체를 업데이트 할 때 riak와 solr 사이에 일관성없는 상태가됩니다.
solr에 대한 업데이트가 완료되어 클러스터의 일관성을 보장 할 수있을 때 게시 커밋 후크를 만들어 알림을받을 수 있습니까? 아니면 좀 더 생각해야합니까?
최종 일관성을 처리하는 영리한 방법이 있습니까?riak 2.0을 사용하면 solr 업데이트로 객체 업데이트를 원할하게 할 수 있습니까?
여기 재현 문제를 설명하는 단계는 다음과 같습니다 Riak 2.0 이상에서 요코즈나 검색을 사용
curl localhost:8098/buckets/bucket/keys/3eaVbY3BWgIN3BFv4riEc6cAqPk -d'{ "key":"3eaVbY3BWgIN3BFv4riEc6cAqPk" }' -H 'Content-Type: application/json'
curl -i -XDELETE localhost:8098/buckets/bucket/keys/3eaVbY3BWgIN3BFv4riEc6cAqPk && curl 'localhost:8098/search/query/index_name?q=key:3eaVbY3BWgIN3BFv4riEc6cAqPk&wt=json'
HTTP/1.1 204 No Content
Vary: Accept-Encoding
Server: MochiWeb/1.1 WebMachine/1.10.5 (jokes are better explained)
Date: Mon, 29 Dec 2014 21:31:58 GMT
Content-Type: application/json
Content-Length: 0
{"responseHeader":{"status":0,"QTime":6,"params":{"q":"key:3eaVbY3BWgIN3BFv4riEc6cAqPk","shards":"127.0.0.1:8093/internal_solr/index_name","127.0.0.1:8093":"(_yz_pn:62 AND (_yz_fpn:62)) OR _yz_pn:61 OR _yz_pn:58 OR _yz_pn:55 OR _yz_pn:52 OR _yz_pn:49 OR _yz_pn:46 OR _yz_pn:43 OR _yz_pn:40 OR _yz_pn:37 OR _yz_pn:34 OR _yz_pn:31 OR _yz_pn:28 OR _yz_pn:25 OR _yz_pn:22 OR _yz_pn:19 OR _yz_pn:16 OR _yz_pn:13 OR _yz_pn:10 OR _yz_pn:7 OR _yz_pn:4 OR _yz_pn:1","wt":"json"}},
"response":{
"numFound":1,"start":0,"maxScore":2.9095426,"docs":[
{
"key":"3eaVbY3BWgIN3BFv4riEc6cAqPk",
"_yz_id":"1*default*index_name*3eaVbY3BWgIN3BFv4riEc6cAqPk*4",
"_yz_rk":"3eaVbY3BWgIN3BFv4riEc6cAqPk",
"_yz_rt":"default",
"_yz_rb":"index_name"
}
]
}
}
riak보다 늦은 업데이트로 불일치가 발생 했습니까? 나는 솔직히 precommit 후크를 통해 업데이트되었다고 생각했는데, 즉 riak가 업데이트되기 전에 클라이언트가 put에 대한 성공 응답을 받기 전에 불일치가 해결 될 것입니다. – Joe
@Joe는 의견에 감사드립니다. 그것은 사실 일지 모르지만 나는 여전히 궁극적 인 일관성 문제를보고 있습니다. 나는 내 질문을 너무 잘 말하지 않았으므로 도움이 될만한 모범을 보였다. 재현 할 수 없다면 알려주세요. – Matt