나는 카산드라의 DB에 대한 클라이언트를 사용하여 기꺼이, 그래서로 초기화 할 필요가 : 나는 두 길을 만든컨트롤러에서 상태를 유지 하시겠습니까?
client = CQEx.Client.new!
, 읽고 쓸 수있는 컨트롤러 행동 포인트.
질문은 어떻게 클라이언트를 한 번만 초기화하고 컨트롤러의 동작에서 매번 사용합니까?
GenServer를 만들고 컨트롤러 작업에서 메시지를 보내겠습니까? 그래서 나는 GenServer 내에서 cassandra 클라이언트를 유지할 수 있습니까?
조치를 실행할 때마다 클라이언트를 만들 수 있습니까?!
여기에 어떤 조언이 있습니까?
GenServer와 새 클라이언트는 매번 처리 할 동시 요청 수와 새 Cassandra 연결 생성 비용과 같은 필요에 따라 전적으로 좌우됩니다. Ecto처럼 poolboy를 사용하여 연결 풀을 조사하고 싶을 수도 있습니다 (https://github.com/elixir-ecto/db_connection 및 https://github.com/devinus/poolboy 참조). – Dogbert
수천 개의 동시 요청을 처리해야합니다. 내 자체에 응답 한 것 같습니다. :) 왜 각 읽기 또는 쓰기 작업에 대해 '작업'을 만들지 않습니까? 그래서 각 작업은 별도의 프로세스에서 실행됩니다.이 작업을 수행하는 좋은 방법입니다 (GenServer를 사용하지 않기로 결정할 때마다 매번 연결 만들기). – simo
왜 작업을 만드시겠습니까? 각 요청은 이미 새로운 프로세스가 될 것이고 다른 요청과 동시에 실행될 것입니다. 많은 양의 읽기/쓰기 작업을 수행하고 싶지 않다면 _per request_를 실행하십시오. 어쨌든, @tkowal은 옳은 것처럼 보입니다.'cqerl'은 이미 연결 풀을 만드는 것처럼 보이기 때문에'Client.new! '를 직접 호출 할 수 있습니다. – Dogbert