Anúncio de lançamento da função de separação de leitura e gravação do DBPack

Na versão v0.1.0, lançamos a função de transação distribuída e fornecemos uma prévia da função de separação de leitura e gravação. Na versão v0.2.0, adicionamos a função de roteamento de solicitação de consulta personalizada por meio de dica e corrigimos alguns bugs. Além disso, nesta versão, também fornecemos uma prévia da função de log de auditoria, que será lançada oficialmente na v0.3.0. UseDB 

Corrigir situações de bug

  1. PHP 8.0 pdo lança exceção transaction not active 

    Quando o cliente Mysql envia o resultado da execução sql para o usuário, se não houver anormalidade na execução, o primeiro pacote enviado é OKPacket, e existe um sinalizador neste pacote para identificar se a requisição sql está em uma transação. Como mostrado abaixo:

    imagem-20220629161325409

    O conteúdo deste pacote é:

    07 00 00 // 前 3 个字节表示 payload 的长度为 7 个字节
    01 // sequence 响应的序号,前 4 个字节一起构成了 OKPacket 的 header
    00 // 标识 payload 为 OKPacket
    00 // affected row
    00 // last insert id
    03 00 // 状态标志位
    00 00 // warning 数量
    

    As versões anteriores do dbpack definem o bit de sinalizador para 0, o driver mysql antes de java, golang, .net core e php 8.0 podem coordenar corretamente as transações, e o driver pdo do php 8.0 verificará o bit de sinalizador, então a versão acima do php 8.0 está em Uma exceção é lançada ao usar dbpack para coordenar transações distribuídas . transaction not active 

  2. Exceção de desserialização do algoritmo de balanceamento de carga

    imagem-20220707170118827

    Essa exceção faz com que as solicitações de consulta dividida de leitura/gravação sejam executadas entre bancos de dados com um algoritmo aleatório.

  3. outros erros.

Novas características

Use a dica para personalizar o roteamento da solicitação de consulta UseDB 

Por exemplo:

SELECT /*+ UseDB('employees-master') */ emp_no, birth_date, first_name, last_name, gender, hire_date FROM employees WHERE emp_no = ?

Adicione uma anotação à solicitação de consulta. O parâmetro da anotação é o nome da fonte de dados e você pode especificar para qual fonte de dados a solicitação SQL é roteada para execução. UseDB 

Função de visualização

Esta versão adiciona a função de log de auditoria. Ele pode ser ativado adicionando-o à configuração , por exemplo: AuditLogFilter 

filters:
  - name: auditLogFilter
    kind: AuditLogFilter
    conf:
      audit_log_dir: /var/log/dbpack/
      # unit MB
      max_size: 300
      # unit Day
      max_age: 28
      # maximum number of old log files to retain
      max_backups: 1
      # determines if the rotated log files should be compressed using gzip
      compress: true
      # whether to record the audit log before or after the sql request is actually executed
      record_before: true

Quando habilitado, o DBPack registra logs de auditoria no seguinte formato:

[timestamp],[username],[ip address],[connection id],[command type],[command],[sql text],[args],[affected row]

O registro é o seguinte:

2022-06-14 07:15:44,dksl,172.18.0.1:60372,1,COM_QUERY,,SET NAMES utf8mb4,[],0
2022-06-14 07:15:45,dksl,172.18.0.1:60372,1,COM_STMT_EXECUTE,INSERT,INSERT INTO employees ( emp_no, birth_date, first_name, last_name, gender, hire_date ) VALUES (?, ?, ?, ?, ?, ?),['100000' '1992-01-07' 'scott' 'lewis' 'M' '2014-09-01'],1
2022-06-14 07:15:45,dksl,172.18.0.1:60372,1,COM_STMT_EXECUTE,DELETE,DELETE FROM employees WHERE emp_no = ?,['100000'],1
2022-06-14 07:15:45,dksl,172.18.0.1:60372,1,COM_STMT_EXECUTE,INSERT,INSERT INTO employees ( emp_no, birth_date, first_name, last_name, gender, hire_date ) VALUES (?, ?, ?, ?, ?, ?),['100001' '1992-01-07' 'scott' 'lewis' 'M' '2014-09-01'],1
2022-06-14 07:15:45,dksl,172.18.0.1:60372,1,COM_STMT_EXECUTE,SELECT,SELECT emp_no, birth_date, first_name, last_name, gender, hire_date FROM employees WHERE emp_no = ?,['100001'],0

ilustrar

Planos da próxima versão:

  • V0.3.0

    Log de auditoria, rastreamento de link de solicitação SQL

  • V0.4.0

    Criptografia e descriptografia de dados confidenciais, limitação de corrente, fusão

  • V0.5.0

    Função de sub-biblioteca e sub-tabela

A versão v0.2.0 lançada desta vez pode resolver os requisitos de transação distribuída do usuário e os requisitos de separação de leitura e gravação.As duas funções podem ser usadas em combinação sem invadir os negócios do usuário, e a experiência é muito suave.

Entusiastas de código aberto são bem-vindos para se juntar a nós na construção da comunidade DBPack, participar de grupos ou participar da construção da comunidade, entre em contato via WeChat: scottlewis.

Link

Acho que você gosta

Origin www.oschina.net/news/202526/dbpack-0-2-0-released
Recomendado
Clasificación