Recursos de canal

Audiência: Administradores de canal, administradores de nó

Nota: este é um conceito avançado da Fabric que não é necessário para novos usuários ou desenvolvedores de aplicativos entenderem. No entanto, à medida que os canais e as redes amadurecem, o entendimento e o gerenciamento de recursos se tornam vitais. Além disso, é importante reconhecer que a atualização de recursos é um processo diferente, embora frequentemente relacionado, para a atualização de nós. Vamos descrever isso em detalhes neste tópico.

Como a Fabric é um sistema distribuído que geralmente envolve várias organizações, é possível (e típico) que existam versões diferentes do código da Fabric em nós diferentes da rede e nos canais dessa rede. A Fabric permite isso --- não é necessário que todos os nós pares e de ordens estejam na mesmo de versão. De fato, oferecer suporte a diferentes níveis de versão é o que permite atualizações contínuas dos nós da Fabric.

O que é importante, é que redes e canais processem as coisas da mesma maneira, criando resultados determinísticos para coisas como atualizações de configuração de canais e invocações de chaincode. Sem resultados determinísticos, um ponto em um canal pode invalidar uma transação, enquanto outro ponto pode validá-la.

Para esse fim, a Fabric define os níveis dos chamados "recursos". Esses recursos, definidos na configuração de cada canal, garantem o determinismo, definindo um nível no qual os comportamentos produzem resultados consistentes. Como você verá, esses recursos têm versões intimamente relacionadas às versões binárias dos nós. Os recursos permitem que os nós executados em diferentes níveis de versão se comportem de maneira compatível e consistente, dada a configuração do canal em uma altura específica do bloco. Você também verá que existem recursos em muitas partes da árvore de configuração, definidas ao longo das linhas de administração para tarefas específicas.

Como você verá, às vezes é necessário atualizar seu canal para um novo nível de capacidade para ativar um novo recurso.

Versões de nós e versões de recursos

Se você estiver familiarizado com a Hyperledger Fabric, estará ciente de que ela segue um padrão típico de versão: v1.1, v1.2.1, v2.0, etc. Essas versões referem-se a releases e suas versões binárias relacionadas.

Os recursos seguem a mesma convenção de versão. Existem recursos da v1.1 e da v1.2 e da 2.0 e assim por diante. Mas é importante observar algumas distinções.

Se os usuários não puderem atualizar seus binários, os recursos deverão ser deixados nos níveis mais baixos. Os binários e recursos de nível inferior ainda funcionarão juntos como devem. No entanto, lembre-se de que é uma prática recomendada sempre atualizar para novos binários, mesmo se um usuário optar por não atualizar seus recursos. Como os próprios recursos também incluem correções de bugs, é sempre recomendável atualizar os recursos assim que os binários da rede os suportam.

Agrupamentos de configuração de capacidade

Como discutimos anteriormente, não há um único nível de capacidade que englobe um canal inteiro. Em vez disso, existem três recursos, cada um representando uma área de administração.

Os recursos ordenador e canal de um canal são herdados por padrão do canal do sistema de ordens, onde modificá-los é da exclusiva responsabilidade dos administradores de serviços de ordens. Como resultado, as organizações pares devem inspecionar o bloco de gênese de um canal antes de associar seus pares a esse canal. Embora a capacidade do canal seja administrada pelos solicitantes no canal do sistema do ordenador (assim como a associação ao consórcio), é típico e esperado que os administradores de ordens se coordenem com os administradores do consórcio para garantir que a capacidade do canal seja atualizada apenas quando o consórcio está pronto para isso.

Como o canal do sistema de ordens não define um recurso de aplicativo, esse recurso deve ser especificado no perfil do canal ao criar o bloco genesis para o canal.

Tenha cuidado ao especificar ou modificar um recurso de aplicativo. Como o serviço de ordens não valida a existência do nível de capacidade, permitirá que um canal seja criado (ou modificado) para conter, por exemplo, um recurso de aplicativo v1.8, mesmo que não exista esse recurso. Qualquer par que tentar ler um bloco de configuração com esse recurso travaria, como mostramos, e mesmo que fosse possível modificar o canal mais uma vez para um nível de recurso válido, isso não importaria, pois nenhum colega seria capaz de superar o bloco com o recurso v1.8 inválido.

Para uma visão completa dos recursos atuais válidos para ordens, aplicativos e canais, consulte um exemplo de arquivo configtx.yaml, que os lista na seção "Recursos".

Para obter informações mais específicas sobre recursos e onde eles residem na configuração do canal, consulte definindo requisitos de recursos.