debezium-sql-azure-event-hubs
所属分类:数据库系统
开发工具:TSQL
文件大小:168KB
下载次数:0
上传日期:2022-06-25 16:01:37
上 传 者:
sh-1993
说明: 教程utilizando debezium sql com azure事件中心
(Tutorial utilizando debezium sql com azure event hubs)
文件列表:
debezium (0, 2022-06-26)
debezium\register-debezium.json (505, 2022-06-26)
doc (0, 2022-06-26)
doc\arquitetura.png (83488, 2022-06-26)
doc\event-bus-1.png (15674, 2022-06-26)
doc\event-bus-2.png (20654, 2022-06-26)
doc\event-bus-3.png (22701, 2022-06-26)
doc\event-bus-4.png (17137, 2022-06-26)
doc\event-bus-5.png (9605, 2022-06-26)
doc\event-bus-6.png (7393, 2022-06-26)
docker-compose.yaml (1612, 2022-06-26)
sql (0, 2022-06-26)
sql\init.sql (737, 2022-06-26)
# Debezium SQL Server com Azure Event-hubs
O Debezium e uma plataforma opensource de captura de dados alterados utilizando como tecnologia Change Data Capture (CDC), que atinge suas qualidades de durabilidade, confiabilidade e tolerancia a falhas reutilizando o Kafka e o Kafka Connect.
A utilizacao do CDC para os aplicativos nos dias de hoje, e quase que um cenario obrigatorio. Como para realizacao de analise de dados em tempo real, comunicacao entre aplicacoes utilizando arquitetura de event-driven.
Hubs de Eventos e um servico PaaS da Microsoft Azure para ingestao de dados em tempo real totalmente gerenciado, simples e escalavel. Transmite milhoes de eventos por segundo.
Os dados enviados para um hub de eventos podem ser transformados e armazenados usando qualquer provedor de analise em tempo real ou adaptadores de envio em lote/armazenamento.
Para esse exemplo iremos utilizado a captura dos dados em Sql Server utilizando o Debezium e enviado para o Hub de eventos na Cloud, utilizando Docker.
![Arquitetura](https://raw.githubusercontent.com/nandorsilva/debezium-sql-azure-event-hubs/master/doc/arquitetura.png "Arquitetura")
### Event-Hub
No portal da azure consulte a opcao event bus.
![](https://raw.githubusercontent.com/nandorsilva/debezium-sql-azure-event-hubs/master/doc/event-bus-1.png)
![](https://raw.githubusercontent.com/nandorsilva/debezium-sql-azure-event-hubs/master/doc/event-bus-2.png)
> Nota: O Pricing tier precisa ser Standard, somente a opcao Standard e Dedicated tem suporta para a utilizacao do Kafka.
### Subindo os containers
Para nosso tutorial utilizo os conteineres das imagens sql server da Microsoft e para o conector do debezium, conforme arquivo docker-compose.yaml
### Registrando as variaveis de ambiente.
O Docker Compose utilizara as variaveis de ambiente abaixo:
```bash
export DEBEZIUM_VERSION=1.1
export EH_NAME=pocevento
export EH_CONNECTION_STRING="Endpoint=sb://pocevento.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=hXWVP8Bbmx1g3hJH2SYlazVF6wlIfR2dm1oy4t/+V+Y="
```
> Os dados das variaveis EH_NAME e EH_CONNECTION_STRING estao no hub de eventos:
![](https://raw.githubusercontent.com/nandorsilva/debezium-sql-azure-event-hubs/master/doc/event-bus-3.png)
![](https://raw.githubusercontent.com/nandorsilva/debezium-sql-azure-event-hubs/master/doc/event-bus-4.png)
O Debezium precisa do Apache Kafka para executar, o EventHubs expoe conexao compativel com Kafka, para que ainda possamos desfrutar do Kafka com todo o conforto de uma oferta PaaS.
Antes de mais, o EventHubs requer autenticacao:
```yaml
- CONNECT_SECURITY_PROTOCOL=SASL_SSL
- CONNECT_SASL_MECHANISM=PLAIN
- CONNECT_SASL_JAAS_CONFIG
```
Outras opcoes uteis para executar o Debezium no EventHubs sao as seguintes:
```yaml
- CONNECT_KEY_CONVERTER_SCHEMAS_ENABLE = false
- CONNECT_VALUE_CONVERTER_SCHEMAS_ENABLE = true
```
Eles controlam se o esquema e enviado com os dados ou nao. Como o EventHub suporta apenas valores, ao contrario do Apache Kafka, que na verdade e um par de valores-chave, a geracao do esquema para a secao de chaves pode ser desativada com seguranca.
Para saber mais sobre as configuracoes do event hus e conectores
[Para saber mais sobre as configuracoes do event hus e conectores](https://github.com/debezium/docker-images/tree/master/connect-base/0.10#others)
A seguranca dos EventHubs usa a cadeia `$ConnectionString` como nome de usuario. Para evitar que o Docker Compose o trate como uma variavel, por ter somente um cifrao e necessario usar ele duas vezes (`$$`).
```shell
docker-compose -f docker-compose.yaml up
```
Se tudo estiver dado certo ate aqui, veremos os containers abaixo:
```shell
docker container ls
```
![](https://raw.githubusercontent.com/nandorsilva/debezium-sql-azure-event-hubs/master/doc/event-bus-6.png)
### Sql Server
Para esse tutorial estou utilizando a imagem sql server da Microsoft `microsoft/mssql-server-linux`
Para criar a estrutura dos dados estou utilizando o proprio container criado.
```shell
cat sql/init.sql | docker exec -i debezium-sql-azure-event-hubs_sqlserver_1 bash -c '/opt/mssql-tools/bin/sqlcmd -U sa -P $SA_PASSWORD'
```
### Criando o conector
```shell
curl -i -X POST -H "Accept:application/json" -H "Content-Type:application/json" http://localhost:8083/connectors/ -d @debezium/register-debezium.json
```
Apos a criacao do conector vamos criar um registro no banco de dados e ver o topico sendo criado no event-bus
```shell
INSERT INTO produtos(nome,descricao) VALUES ('Celular','Celular novo');
```
![](https://raw.githubusercontent.com/nandorsilva/debezium-sql-azure-event-hubs/master/doc/event-bus-5.png)
[Para mais informacoes sobre debezium](https://debezium.io/)
近期下载者:
相关文件:
收藏者: