2014-03-04 2 views
0

이 질문은 이전에 요청한 Including the Erlang client lib의 연속입니다.Niarogen의 Riak의 Erlang 클라이언트 라이브러리 사용

{mimetypes,  ".*", {git, "git://github.com/spawngrid/mimetypes", {branch, master}}}, 

%% Uncomment the following lines and comment the bottom lines with specific 
%% tags to always pull the latest versions 
{nitrogen_core, ".*", {git, "git://github.com/nitrogen/nitrogen_core",{branch, master}}}, 

에 :

{mimetypes,  ".*", {git, "git://github.com/spawngrid/mimetypes", {branch, master}}}, 

{riakc, "1.4.1", 
      {git, "git://github.com/basho/riak-erlang-client", 
         {tag, "1.4.1"}}}, 


%% Uncomment the following lines and comment the bottom lines with specific 
%% tags to always pull the latest versions 
{nitrogen_core, ".*", {git, "git://github.com/nitrogen/nitrogen_core",{branch, master}}}, 

rel/nitrogen/rebar.config에서와 lib 폴더 아래에

지금은 그 설치했는지 확인과 재 컴파일

나는 변경하여 라이브러리를 포함 할 수 있었다 , 내가 어디 riakc_pb_socket lib suggested in the docs

01 구현해야합니다 잘 모르겠습니다 23,516,

나는 nitrogen_sup:init()

{ok, Pid} = riakc_pb_socket:start_link("127.0.0.1", 8087), 

퍼팅 시도했다하지만 난이 오류 메시지가 얻을 :

application: nitrogen 
exited: {{{badmatch,{error,{tcp,econnrefused}}}, 
      [{nitrogen_sup,init,1, 
         [{file,"/home/neil/proj/nitrogen/rel/nitrogen/site/src/nitrogen_sup.erl"}, 
          {line,43}]}, 
      {supervisor,init,1,[{file,"supervisor.erl"},{line,239}]}, 
      {gen_server,init_it,6,[{file,"gen_server.erl"},{line,304}]}, 
      {proc_lib,init_p_do_apply,3, 
        [{file,"proc_lib.erl"},{line,239}]}]}, 
     {nitrogen_app,start,[normal,[]]}} 
type: temporary 

내가, 또는 자주 응용 프로그램을 초기화하는 동안 한 번 데이터베이스를 riak이 연결을 가정 오전 새로운 요청이 처리됩니다. 연결 풀에 대해 몇 가지 이야기를 들었는데, 이것이 앱 초기화 과정에서 한 번 설정 한 다음 새 프로세스로 연결하는 것입니다.

저는 erlang/OTP와이 프레임 워크를 처음 접해 보았습니다. 따라서 어떤 방향 으로든 크게 감사하겠습니다.

추가 : 나는 bin/nitrogen console을 통해 질소 응용 프로그램을 실행하면

, 나는 {ok, Pid} = riakc_pb_socket:start_link("127.0.0.1",8087).을 실행할 수 그리고 난 내가 질문 지금 생각 riakc_pb_socket:ping(Pid).

에서 다시 pong을 얻기 위해 관리합니까 :에서 어느 파일이 일반적으로 쿼리/읽기/쓰기와 관련하여 riak 연결을 설정/관리합니까?

답변

2

방법입니다 - 일이 진행하세요 :

  1. 당신이 응용 프로그램의 관리자 트리에 추가 할 gen_server을 만듭니다. 선호하는 자신 만의 응용 프로그램.
  2. gen_server이 초기화되면 Riak 연결이 설정됩니다. 연결을 사용하고자 할 때마다 callgen_server이고 연결이 있으므로 쿼리를 실행할 수 있습니다.
  3. 핸들을 다시 연결하십시오. 연결이 끊어지면 gen_server이 손상됩니다. 초기화시 연결이 거부되면 조금 기다렸다가 다시 시도하십시오.

종종, 당신은 웹 물건을 처리하기 위해, 질소와 같은 얼랑 시스템의 "백엔드"물건을 실행하는 별도의 응용 프로그램 다음 다른 응용 프로그램을 볼 수 있습니다. gen_server은 "백엔드"부분에 속합니다.

  • 귀하의 gen_server가 foo라는 이름의 모듈에 거주됩니다

    이 기준은 당신이 그것을 더 확장 할 수 있습니다 작동되면

    .riak을 사용할 때마다 foo:f(...)으로 전화하십시오. foo:f(...)http://github.com/devinus/poolboy 또는 Riak 클러스터에 대한 연결 풀링을 지원하는 것으로 사용하도록 다시 작성하십시오. 단 하나의 연결이 너무 느리다는 것을 증명하면이 작업을 수행하십시오.

얼랑 (Erlang) 프로그램에서 느슨한 커플 링이라는 개념을 깔끔하게 보여줍니다. foo 모듈은 인터페이스처럼 작동하지만 인터페이스 뒤에있는 구현을 알지 못합니다. 필요에 따라 나중에 더 빠르게 변경할 수 있습니다. 이 경우 함수 호출 인 올바른 프로토콜을 구현하면됩니다.

+0

답변 해 주셔서 감사합니다. 그러나 잠시 시간을내어 제안한 해결책을 수락하기 전에 소화하거나 시도해보십시오. – neildaemond

관련 문제