다행히도 저는 최근에 여러 작업을 하나의 빠르고 통합된 프로젝트로 통합할 수 있는 교차점을 찾았습니다. 다음은 제 할 일 목록의 작은 부분입니다...
- 많은 수의 노드를 사용하여 자동화된 Membase/Moxi 클러스터 테스트를 구축합니다.
- 사람들이 멤베이스에서 TAP 스트림을 사용하여 좋은 일을 할 수 있는 방법을 보여줍니다.
- 또 다른 새로운 핫 트렌드인 NODEJS에 대해 자세히 알아보세요.
- 블로그 더 보기
분명히 별들은 제가 nodejs로 Membase 클러스터 연습기를 구축하고 그 과정에서 블로그에 포스팅할 수 있도록 정렬되어 있습니다. 이 작업을 통해 nodejs에 대해 많은 것을 배우고 싶고, Membase에 대한 실용적인 지식을 여러분께 전수해 드리고 싶습니다.
멤베이스는 사용자가 두 개의 멤캐시드 중 하나를 사용하여 연결할 수 있도록 합니다.
프로토콜: ASCII 또는 바이너리.
그러나 TAP 스트림은 멤캐시된 바이너리 프로토콜만 지원합니다. 따라서 첫 번째 단계는 nodejs가 원시 바이너리 TCP 통신을 지원할 수 있는지 확인하는 것입니다. 바이너리 버퍼 인코딩. 그러나 nodejs에는 바이너리 프로토콜 조작에 필요한 고전적인 ntohl 및 htonl 함수가 기본적으로 누락되어 있는 것 같습니다.
가볍게 시작하기 위해, 다음은 nodejs 세계에 대한 첫 번째 공헌으로 ntohl/htonl 함수의 nodejs 구현입니다...
———————————————————————–
/* 저작권 2010 Membase, Inc.
*
* Apache 라이선스 버전 2.0(이하 "라이선스")에 따라 라이선스가 부여됩니다;
* 라이선스를 준수하는 경우를 제외하고는 이 파일을 사용할 수 없습니다.
* 라이선스 사본은 다음에서 구할 수 있습니다.
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 관련 법률에서 요구하거나 서면으로 동의하지 않는 한, 소프트웨어
라이선스에 따라 배포되는 *는 "있는 그대로" 배포됩니다,
* 명시적이든 묵시적이든 어떠한 종류의 보증이나 조건도 제공하지 않습니다.
* 권한에 적용되는 특정 언어에 대한 자세한 내용은 라이선스를 참조하세요.
* 라이선스에 따른 제한 사항.
*/
exports.htons = function(b, i, v) {
b[i] = (0xFF & (v >> 8));
b[i+1] = (0xFF & (V));
}
exports.ntohs = function(b, i) {
반환 ((0xff & b[i + 0]) << 8) |
((0xFF & b[i + 1]));
}
exports.ntohsStr = function(s, i) {
반환 ((0xff & s.charCodeAt(i + 0)) << 8) |
((0xff & s.charCodeAt(i + 1)); }
exports.htonl = function(b, i, v) {
b[i+0] = (0xFF & (v >> 24));
b[i+1] = (0xFF & (v >> 16));
b[i+2] = (0xFF & (v >> 8));
b[i+3] = (0xFF & (v));
}
exports.ntohl = function(b, i) {
반환 ((0xff & b[i + 0]) << 24) |
((0xff & b[i + 1]) << 16) |
((0xFF & b[i + 2]) << 8) |
((0xFF & b[i + 3]));
}
exports.ntohlStr = function(s, i) {
반환 ((0xff & s.charCodeAt(i + 0)) << 24) |
((0xff & s.charCodeAt(i + 1)) << 16) |
((0xff & s.charCodeAt(i + 2)) << 8) |
((0xff & s.charCodeAt(i + 3)); }
———————————————————————–
이 자바스크립트는 실제로 다른 곳에 사용될 수 있습니다. 위에서 "b" 매개변수는 옥텟의 배열이거나 nodejs 버퍼일 수 있습니다. "s" 매개변수는 JavaScript 문자열입니다. "i"는 배열/버퍼/스트링에 대한 0 기반 인덱스입니다.
다음 글에서는 nodejs에서 Membase에 대한 연결을 생성하고 바이너리 프로토콜 메시지를 인코딩 및 디코딩하는 방법을 보여드리겠습니다.