guicarvalho /
trilha-python-dio
Repositório com os arquivos criados durante as gravações da trilha de Python que desenvolvi para a DIO (Digital Innovation One)
16/100 healthLoading repository data…
michelleGomes85 / repository
Repositório para a implementação de um código que será desenvolvido durante a disciplina de Sistemas Distribuídos do curso de Sistemas para Internet. Este módulo RPC em Python permite a execução remota de operações matemáticas básicas via TCP entre dois hosts.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
RPC (Remote Procedure Call) é um protocolo que permite a execução de funções remotas como se fossem chamadas locais. Ele possibilita a comunicação entre diferentes processos em redes distribuídas, permitindo que um cliente invoque métodos de um servidor remoto sem precisar lidar diretamente com os detalhes de rede.
No contexto deste projeto, foi implementado um sistema RPC distribuído, onde diferentes servidores podem executar funções e um servidor de nomes atua como intermediário para localizar os serviços disponíveis.
O projeto é dividido entre servidores, onde cada servidor pode ser executado em uma porta e IP diferente. Há também um servidor de nomes, que age como um intermediário, registrando os serviços disponíveis e encaminhando as chamadas para os servidores corretos.
Este projeto implementa um sistema RPC (Remote Procedure Call) distribuído, no qual um cliente pode chamar funções remotamente como se fossem locais. O sistema é composto por três principais componentes:
Cada um desses componentes desempenha um papel fundamental na comunicação distribuída.
O servidor de nomes funciona como um intermediário entre o cliente e os servidores RPC. Sua principal função é manter um registro dos serviços disponíveis e informar ao cliente onde encontrar um determinado serviço.
Os servidores RPC são responsáveis por expor funções que podem ser chamadas remotamente. Cada servidor pode rodar em um IP e porta diferente, permitindo distribuir a carga entre vários servidores.
O cliente RPC é responsável por fazer chamadas para os serviços remotos. Ele segue os seguintes passos:
Esse processo permite que o cliente chame funções remotas sem precisar saber a localização exata do serviço, tornando o sistema dinâmico e flexível.
Cada servidor RPC gera um arquivo de log contendo informações detalhadas sobre todas as requisições recebidas. Esse log inclui:
Os logs seguem o formato:
AAAA-MM-DD HH:MM:SS, IP_CLIENTE, OPERAÇÃO, TEMPO_EXECUÇÃO ms
Exemplo de log gerado:
2025-02-03 11:54:16, 127.0.0.1, SUB, 0.365155 ms
Esses registros permitem monitorar o histórico de requisições, ajudando na depuração e otimização do sistema.
Até mesmo existe um script shell de exemplo para extrair os IPs únicos que fizeram requisições ao servidor, do arquivo de log gerado, está na pasta abaixo:
log/shellScript.ch
Para adicionar segurança às comunicações RPC, utilizamos SSL/TLS para criptografar os dados. Para isso, precisamos gerar um certificado e uma chave privada:
openssl.cnfAntes de gerar as chaves de acesso, é necessário configurar o arquivo openssl.cnf com as informações adequadas, na pasta certs/
Execute os seguintes comandos:
# Gera uma chave privada
openssl genpkey -algorithm RSA -out certs/server.key
# Gera um certificado autoassinado
openssl req -new -x509 -key certs/server.key -out certs/server.crt -days 365 -config certs/openssl.cnf
Exemplo de preenchimento durante a geração do certificado:
Country Name (2 letter code) [AU]: BR
State or Province Name (full name) [Some-State]: Minas Gerais
Locality Name (eg, city) []: Barbacena
Organization Name (eg, company) [Internet Widgits Pty Ltd]: RPC
Organizational Unit Name (eg, section) []: TI
Common Name (eg, server FQDN or YOUR name) []: localhost
Email Address []:
As chaves geradas serão armazenadas nos seguintes caminhos:
PATH_SERVER_CERTS = "certs/server.crt"
PATH_SERVER_KEY = "certs/server.key"
Este projeto demonstra o funcionamento de um sistema RPC distribuído com múltiplos servidores e um intermediário para gerenciar as chamadas. A adição de SSL garante uma comunicação segura entre os componentes. Além disso, os arquivos de log permitem um monitoramento eficiente das operações realizadas pelos servidores RPC.
Selected from shared topics, language and repository description—not editorial ratings.
guicarvalho /
Repositório com os arquivos criados durante as gravações da trilha de Python que desenvolvi para a DIO (Digital Innovation One)
16/100 healthAFIF-UG /
Repositorio en el que se encontrarán diversos materiales, códigos, videos y ejercicios para el aprendizaje del lenguaje Python.
69/100 healthPracticalBooks /
Repositorio del libro "Python Para Principiantes: Aprender a programar con Python de manera práctica y paso a paso". Disponible en Amazon.
caio-moliveira /
Repositório criado para o Workshop de Agentes de IA
65/100 healthericksonlopes /
⚡ Este repositório é direcionado para dicas com a linguagem python, que estão sendo postadas em meu linkedin.
65/100 healthAFIF-UG /
Repositorio de Introduccion a Python - Curso Online 2022, que contiene las bases y fundamentos para aprender a programar en este lenguaje.
36/100 health