.NET

O Couchbase .NET SDK 2.2.4 já está disponível!

O Couchbase .NET SDK 2.2.4 já está disponível!

Hoje estamos lançando a versão 2.2.4 do Couchbase .NET SDK! Essa versão é a continuação da 2.2.2 e inclui a 2.2.3, que foi incorporada à 2.2.4. O recurso mais importante dessa versão é um novo modelo de IO opcional que permite que o SDK tenha maior rendimento usando menos recursos do sistema (soquetes TCP).

Além disso, há vários recursos e aprimoramentos críticos de bugs nesta versão e sugerimos que todos os usuários de versões anteriores do SDK atualizem para a 2.2.4!

Multiplexação de E/S (MUX)

Nas arquiteturas de microsserviço atuais, as camadas de serviço monolíticas maiores são divididas em muitas implantações menores e mais discretas usando contêineres. Como cada implantação requer uma instância de cliente, há um efeito multiplicador no número de conexões TCP abertas por cada aplicativo implantado usando o SDK. Em geral, o multiplicador é:

Clientes x Nós do cluster x Compartimentos x Conexões TCP = Total de conexões

Muito rapidamente, em uma implantação grande com muitos serviços, é fácil atingir o limite máximo do número de conexões TCP que um cluster pode manipular com eficiência. Portanto, a redução do número de conexões exerce menos pressão sobre o cluster, permitindo que um cluster mais saudável seja capaz de processar mais solicitações.

No passado, o SDK usava o pooling de conexões em que cada thread usava um único soquete TCP de cada vez para operações K/V do Memcached (Get, Insert, Remove, etc.). O limite do pool de conexões é limitado pelas definições de configuração MinSize e MaxSize; se o MaxSize for atingido, o SDK aguardará a disponibilidade de uma conexão ou retornará uma resposta OperationTimeout.

Em geral, o desempenho aqui é muito bom, pois as operações do Memcached são incrivelmente rápidas no servidor, sendo que o principal gargalo é a latência da rede. A latência é agravada pelo fato de que o SDK aguardará a conclusão de uma operação antes de disponibilizar a conexão para o próximo thread que estiver aguardando.

Nesta versão, estamos introduzindo um novo modelo de E/S opcional, chamado multiplexação de E/S (MUX), que permite que vários threads enviem e recebam simultaneamente na mesma conexão TCP. As vantagens são o aumento da taxa de transferência com menos pressão sobre os recursos do sistema operacional e, principalmente, a redução do número de conexões TCP entre o cliente e o servidor.

Como usá-lo:

Para usar o MUX, você precisará configurar seu cliente para usá-lo em seu App.Config ou Web.Config. Por exemplo:

A parte importante é que, no elemento connectionPool, você está substituindo a conexão padrão pela nova MultiplexingIOConnection e, no elemento ioService, está trocando o serviço de E/S padrão pelo novo MultiplexingIOService. Depois de fazer isso, o cliente usará o novo serviço de E/S para todas as operações do Memcached (K/V).

Advertências

É preciso fazer algumas ressalvas:

  • O SSL ainda não é compatível com o MUX (em breve)
  • Como o MUX usa uma única conexão por nó para operações do Memcached (K/V), muitas das configurações do pool de conexões não se aplicam mais (por exemplo, MinSize e MaxSize).
  • A MUX não tem efeito sobre as visualizações ou consultas N1QL

Notas de versão da v2.2.4

Bug

  • [NCBC-1031] - Degradação de desempenho do Couchbase 2.2.1 em relação ao 2.1.4 + Bug de durabilidade
  • [NCBC-1038] - Se não houver um índice primário e adhoc for falso, o cliente fará um loop até o tempo limite
  • [NCBC-1041] - Exceção de falta de memória não tratada em um erro de criação de índice
  • [NCBC-1046] - Fazer com que o MemcachedConfigContext use o NodesAdapter para comparações
  • [NCBC-1047] - Os registros devem nos informar apenas o valor do tempo limite.
  • [NCBC-1048] - O exemplo do Hello world do .NET não funciona

Melhoria

  • [NCBC-1044] - Tornar as alterações do ServicePointManager não globais
  • [NCBC-1045] - Adicionar suporte para implementações de serviços de E/S conectáveis
  • [NCBC-1049] - Renomear IOStrategy para IOService e outras refatorações de nomes
  • [NCBC-1050] - Tornar o buffer de conexão configurável para E/S em pipeline/multiplexada

Tarefa

  • [NCBC-1039] - Forçar o QueryClient a usar a autenticação HTTP para consultas N1QL
  • [NCBC-1042] - Adicionar suporte para max_parallelism à solicitação de consulta N1QL

Como obter a versão 2.2.4

O SDK está disponível para download diretamente, por meio do NuGet, ou clonando e extraindo o repositório do Github:

  • Faça o download dos binários aqui.
  • O pacote NuGet pode ser encontrado aqui.
  • O repositório do Github é aqui.
Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Jeff Jeff Morris, engenheiro de software sênior, Couchbase

Jeff Morris é engenheiro de software sênior da Couchbase. Antes de ingressar na Couchbase, Jeff passou seis anos na Source Interlink como arquiteto da Web corporativa. Jeff é responsável pelo desenvolvimento dos SDKs do Couchbase e pela integração com o N1QL (linguagem de consulta).

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.