6월, 2017의 게시물 표시

(MongoDB) Configure a Hidden Replica Set Member

* Hidden member는 primary가 될 수 없지만 election에는 참여할 수 있다. <고려사항> 가장 일반적인 hidden memeber들은 delayed members를 지원하는 역할이다. 만약 당신이 한 멤버가 primary되는 것을 막고자 한다면 priority를 0로 설정하면된다. settings.chainingAllowed 세팅은 세컨더리 멤버들이 다른 세컨더리 들과 동기화하는 것을 허락한다면, 초기화적으로 MongoDB는 sync타겟 선정을 위해 hidden member들 중 non-hidden member들을 선택한다. MongoDB는 마지막 의지로 hidden member를 선택할 것이다. 만약 당신이 세컨더리가 Hidden member들과 동기화 되길 원한다면, replSetSyncFrom 데이터베이스 커맨드를 사용하면 된다. <replSetSyncFrom> { replSetSyncFrom: "hostname<:port>" } name과 port넘버에 해당하는 멤버로 부터 replicate를 한다. 몽고디비 3.2버전부터는 1 vote를 받은 멤버들은 0 vote 멤버들로 부터 sync를 할 수 없다. <Examples> 세컨더리 멤버들이 hidden이 되기 위해서는 members[n].priority 값은 0 그리고 members[n].hidden은 true로 설정한다.

Http Post전송시 application/x-www-form-urlencoded 과 json형식의 차이 및 주의점

* 서블릿 컨테이너는 컨텐츠 타입이 application/x-www-form-urlencoded 이면 request의 body를 읽어 Map형태로 변환한다. -> application/x-www-form-urlencoded 헤더 타입이면서 HTTP POST 요청시 getParameter("data")와 같은 방법으로 추출 가능 ->text/plain 헤더 타입이면서 HTTP POST 요청 시 getParameter("data") 와 같은 방법으로 추출 불가능 request body를 stream을 이용하여 읽어와야 함

(MongoDB) Adjust Priority for Replica Set Member

 priority는 timing과 primary 선정을 위한 outcome의 영향을 미친다. 높은 priority멤버들은 보다 더 많이 election을 요청한다 그리고 보다 더 많이 이긴다. <Overview> Replica set의 priority는 primary를 위한 timing과 elections의 결과에 영향을 미친다. Higher-priority 멤버들은 더 elections를 요청하는 것이 많고 또한 이길확률 또한 높다. priority 값은 floating point이며 0에서 1000사이로 표현된다.  default 값은 1이다. 투표하지 못하는 member의 priority는 0로 해야한다. Priority가 0이상인 멤버는 0표를 받을 수 없다. aribiter를 위해서는 priority값은 1이어야 한다. 1. replica set설정을 변수에 복사한다. cfg = rs.conf() 2. 멤버 각각의 priority value를 바꾼다. cfg.members[0].priority = 0.5 cfg.members[1].priority = 2 cfg.members[2].priority = 2 3. 새로운 설정을 할당한다. rs.reconfig(cfg)

Request 에서 Parameter 정보 추출

protected HashMap<String, Object> getRequestParam() {   ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();  HttpServletRequest request = sra.getRequest();  HashMap<String, Object> params = new HashMap<>();  Enumeration paramNames = request.getParameterNames();  while(paramNames.hasMoreElements()) {   String paramNames = pramNames.nextElement().toString();   params.put(paramName, request.getParameter(paramName));  }  return params; }