Processos, Threads e Comunicação entre Processos
Processos
RMI (Remote Method Invocation)
Threads
Arquitetura de Microsserviços
RPC (Remote Procedure Call)
Arquitetura Monolítica
Menos overhead na criação
Maior escalabilidade
Compartilham recursos com outros threads do mesmo processo
Possuem recursos isolados
Independentes
Têm seu próprio espaço de endereçamento
Programas em execução
Compartilham recursos
Melhor utilização de CPUs
Dentro de um processo compartilham memória
Threads leves e pesadas
Unidades de execução menores que processos
Mais eficientes em multi-core
Permite invocação de funções remotas como se fossem locais
Pode ser síncrono ou assíncrono
Usado em sistemas distribuidos
Exemplos: gRPC, CORBA
Comunicação entre processos em redes
Usado em sistemas Java
Invoca métodos em objetos remotos em Java
Baseado em interfaces
Abordagem similar ao RPC, mas específico para Java
Transparente ao desenvolvedor
Um único código-fonte
Escalabilidade limitada
Fácil de desenvolver e implantar
Dificuldade em manter e atualizar em grande escala
Um único aplicativo com um único processo
Facilita implantação e atualização
Vários serviços pequenos independentes
Cada serviço é um processo separado
Maior escalabilidade e flexibilidade
Divide o aplicativo em pequenos serviços
Desafios de comunicação, gerenciamento e monitoramento