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