O documento discute OpenStack Swift, um serviço de armazenamento de objetos do OpenStack. Ele explica que o Swift é escrito em Python, de código aberto e com uma grande comunidade ativa. Também descreve a arquitetura do Swift, incluindo seus anéis consistentes de hash e replicação para disponibilidade. Finalmente, resume a API RESTful do Swift para gerenciar contas, contêineres e objetos.
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Python na nuvem: OpenStack Swift
1. Python na nuvem
OpenStack Swift
Denis Cavalcante: denis.cavalcante@lsbd.ufc.br
dencaval@gmail.com
Elvis Teixeira: elvis.teixeira@lsbd.ufc.br
elvismtt@gmail.com
2. OpenStack
- Escrito em python
- Open Source (Licença Apache 2.0)
- Comunidade ativa
- > 1500 contribuidores
- > 100 empresas
- > 250 projetos (módulos, clients, especificações…)
- Summit Event a cada 6 meses
- Lançamento de release a cada 6 meses
- Não há vendor lock-in (Grande disponbilidade de
drivers por diversas empresas)
3. O que é computação em nuvem
- Recursos remotos disponíveis e orquestrados.
- Cliente consome serviços ao invés de produtos.
- Flexibiliza e possibilita escalabilidade.
- Consumo otimizado dos recursos.
- IaaS PaaS DevaaS SaaS DBaaS EaaS
6. Tipos de armazenamento
- Armazenamento em blocos.
- Tipo básico de armazenamento em discos.
- Sistemas de arquivos
- Tipo mais conhecido, organizado hierarquicamente.
- Armazenamento de objetos
- Armazena objetos imutáveis.
- Metadados arbitrários.
- Objetos tem um identificador universal.
7. OpenStack-Swift
- Serviço de armazenamento de objetos do
OpenStack;
- Massivamente escalável
- Sem ponto único de falha;
- Oferece interfaces via HTTP/REST, CLI, python e
wrappers para outras linguagens;
11. Replicação
- O swift cluster é otimizado para armazenar suas
replicas em diferentes zonas e regiões;
- Não é necessário RAID.
- O Swift suporta múltiplas políticas de replicação.
12. Consistência Eventual
- Teorema CAP: Impossibilidade de se obter ao mesmo
tempo “Consistência”, “Disponibilidade” e “Tolerância a
particionamento”
- O Swift prioriza disponibilidade e tolerância a
particionamento.
- O Swift encara o problema da consistência por
meio de serviços auxiliares que verificam o
cluster periodicamente.
13. Consistência eventual Swift
- Replicator
- Verifica a integridade das réplicas e conserta as mesmas
transferindo de um nó para outro via RSync
- Deleta objetos marcados e deixa uma lápide no lugar.
- Auditor
- Verifica se os objetos não estão corrompidos.
- Updater
- Atualiza as listas de objetos nos containers.
14. OpenStack Swift Client
- Swiftclient python lib
- Dashboard / CLI / Others
- Requisições REST
- Object Storage API v1
- Gerencia accounts, containers, e objects.
- http://developer.openstack.org/api-ref-objectstorage-v1.html
15. V1 API - Accounts
- GET
/v1/{account}
Show account details and list containers
- POST
/v1/{account}
Create, update, or delete account metadata
- HEAD
/v1/{account}
Show account metadata
16. V1 API - Containers
- GET
/v1/{account}/{container}
Show container details and list objects
- PUT
/v1/{account}/{container}
Create container
- DELETE
/v1/{account}/{container}
Delete container
- POST
/v1/{account}/{container}
Create, update, or delete container metadata
- HEAD
/v1/{account}/{container}
Show container metadata
17. V1 API - Objects
- GET
/v1/{account}/{container}/{object}
Get object content and metadata
- PUT
/v1/{account}/{container}/{object}
Create or replace object
- COPY
/v1/{account}/{container}/{object}
Copy object
- DELETE
/v1/{account}/{container}/{object}
Delete object
- HEAD
/v1/{account}/{container}/{object}
Show object metadata
- POST
/v1/{account}/{container}/{object}
Create or update object metadata