Felizmente, encontrei recentemente uma interseção de tarefas que posso reunir em um projeto único, rápido e unificado. Aqui está um pequeno subconjunto de minha lista de tarefas...
- criar alguns testes automatizados de cluster Membase/Moxi, com um grande número de nós
- mostrar como as pessoas podem usar os fluxos de TAP no Membase para um grande benefício
- Saiba mais sobre essa outra novidade, o nodejs
- blog mais
Claramente, as estrelas estão alinhadas para que eu construa um exercitador de cluster Membase, em nodejs, e escreva sobre ele ao longo do caminho. Certamente espero aprender muito sobre o nodejs ao fazer isso, e espero transmitir a você algum conhecimento prático sobre o Membase.
O Membase permite que os usuários se conectem usando qualquer um dos dois memcached
protocolos: ascii ou binário.
Os fluxos TAP, no entanto, são apenas o protocolo binário do memcached. A primeira etapa, portanto, é garantir que o nodejs seja compatível com a comunicação TCP binária bruta, o que certamente é possível por meio de seu codificações de buffer binário. No entanto, o nodejs parece não ter as funções clássicas ntohl e htonl prontas para uso, que são necessárias para qualquer manipulação de protocolo binário.
Então, como um começo gentil, aqui está a primeira contribuição para o mundo do nodejs, que é uma implementação do nodejs das funções ntohl/htonl...
———————————————————————–
/* Copyright 2010 Membase, Inc.
*
* Licenciado sob a Licença Apache, Versão 2.0 (a "Licença");
* Você não pode usar este arquivo, exceto em conformidade com a Licença.
* Você pode obter uma cópia da Licença em
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* A menos que exigido pela lei aplicável ou acordado por escrito, o software
* distribuído sob a Licença é distribuído em uma BASE "COMO ESTÁ",
* SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, expressas ou implícitas.
* Consulte a Licença para obter o idioma específico que rege as permissões e
* Limitações da Licença.
*/
exports.htons = function(b, i, v) {
b[i] = (0xff & (v >> 8));
b[i+1] = (0xff & (v));
}
exports.ntohs = function(b, i) {
return ((0xff & b[i + 0]) << 8) |
((0xff & b[i + 1]));
}
exports.ntohsStr = function(s, i) {
return ((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) {
Retorno ((0xff & b[i + 0]) << 24) |
((0xff & b[i + 1]) << 16) |
((0xff & b[i + 2]) << 8) |
((0xff & b[i + 3]));
}
exports.ntohlStr = function(s, i) {
return ((0xff & s.charCodeAt(i + 0)) << 24) |
((0xff & s.charCodeAt(i + 1)) << 16) |
((0xff & s.charCodeAt(i + 2)) << 8) |
((0xff & s.charCodeAt(i + 3))); }
———————————————————————–
Esse material do JavaScript pode realmente ir a algum lugar. Acima, um parâmetro "b" pode ser uma matriz de octetos ou um buffer do nodejs. Um parâmetro "s" é uma string JavaScript. "i" é um índice baseado em zero em uma matriz/buffer/string.
Em breve, mostrarei como criar uma conexão com o Membase no nodejs e codificar e decodificar mensagens de protocolo binário para o Membase.