São protocolos apátridas considerado melhor usar através de protocolos com estado?

StackOverflow https://stackoverflow.com/questions/626914

  •  06-07-2019
  •  | 
  •  

Pergunta

Eu posso ver que protocolos stateful conduzir a uma menor remendada juntos 'estado emulado' como cookies.

mas o teste torna-se muito mais difícil de garantir que a sua implementação é correcta e reconecta, e continuações de sessão pode ser muito difícil de lidar.

É considerado melhor prática usar sempre protocolos apátridas, ou é realmente específica de domínio?

Eu acho que a autenticação se torna mais fácil quando se lida com protocolos stateful, mas existem outras razões que você deve usar um protocolo stateful?

Foi útil?

Solução

Qual a importância do Estado para a sua aplicação? Você precisa de um fluxo constante de dados entre diferentes máquinas ou é mais útil ter rajadas? Se você estiver escrevendo uma aplicação tipo de Telefonia IP, em seguida, você provavelmente vai querer algo bastante stateful, se você pode ir longe com apátrida é provável que seja mais barato e mais fácil de fazê-lo dessa maneira. Fazer as coisas statefully é necessariamente mais frágil porque se ambas as extremidades da conexão é derrubada ou a própria conexão vai para baixo você corre um maior risco de perda de dados, enquanto que com uma conexão sem estado você é mais provável apenas para ter que esperar por um tempo e tentativa novamente.

Eles realmente são diferentes ferramentas para diferentes postos de trabalho, mas, dada a facilidade ea onipresença de tecnologias apátridas on-line é lógico para olhar nessa direção quando você tem a opção.

Outras dicas

Vantagens de apátrida:

  1. alta escalabilidade (você pode pode enviar solicitação para qualquer nó, você pode adicionar nós a qualquer momento)
  2. Alta disponibilidade (se um nó falhar, não há estado que está perdido, apenas solicitação de reenvio para outro nó)
  3. alta velocidade (como não existe um estado, os resultados são cacheable)

Eu gostaria consideram específica de domínio. Se você estiver escrevendo o equivalente moral de Ping, um protocolo sem estado é a escolha certa. Por outro lado, se você estiver escrevendo um VNC, stateful é certamente o caminho a percorrer.

Quanto ao momento de escolher qual, há dois pontos a ter em conta. Em primeiro lugar, enquanto as opções de implementação são ou / ou, o espaço do problema é um continuum. Todas as tarefas do mundo real têm pelo menos um pouco de estado, a questão é quanto e é a sobrecarga de passá-la em torno vale o incômodo de segui-lo em ambas as extremidades. E segundo, você está geralmente lidar com uma pilha de protocolos, e não um único protocolo; certificando-se que tudo vive no nível certo pode simplificar as coisas enormemente.

Um apátrida protocolo é mais fácil de cluster, pois estado nunca precisa ser transferido de um servidor para outro em cima dos pedidos subsequentes.

Eu não estou pessoalmente familiarizado com todos os problemas de design de stateful contra apátrida, mas eu sei que NFSv4 é stateful após a pena de versões anteriores do NFS sendo apátrida 15 anos, aparentemente tão apatridia tornou-se uma limitação significativa para a designers de NFS.

A poucos minutos a Googling revela vários artigos e blogs que falam sobre statefulness do NFSv4; esta deve ser uma leitura interessante para alguns dos problemas de design envolvidas.

Outra coisa agradável com protocolos apátridas é que é mais fácil de situações de failover de servidor punho e / ou / situações de balanceamento de carga de cluster.

Stateful é melhor. Então você não tem que enviar o estado o tempo todo. O protocolo, em seguida, torna-se mais simples.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top