SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Application protocol providing Reactive Streams semantics
Jonathan Sedrez
Frontend | ilegra
RSocket é um protocolo binário para uso
em transportes de fluxo de bytes, como
TCP, WebSockets e Aeron.
Motivação
Para possibilitar isso é necessário o trade off de latência dos
usuário e quantidade de recursos para construir.
Times grandes e distribuídos precisam facilmente se comunicar,
usando tecnologias e linguagens diferentes. Todo comunicação deve
ser confiável e suportar grande evolução.
Os sistemas reativos contam com a passagem de mensagens assíncronas
para estabelecer um limite entre os componentes que garante acoplamento
fraco, isolamento, transparência de localização e fornece os meios para delegar
erros como mensagens. Empregar a passagem explícita de mensagens permite
o gerenciamento de carga, elasticidade e controle de fluxo, moldando e
monitorando as filas de mensagens no sistema e aplicando contrapressão
quando necessário. … A comunicação sem bloqueio permite que os
destinatários consumam recursos apenas enquanto estiverem ativos,
levando a menos sobrecarga do sistema.
Manifesto Reativo
Orientado por mensagem
A comunicação da rede é assíncrona. O protocolo RSocket adota isso e
modela todas as comunicações como fluxos multiplexados de
mensagens em uma única conexão de rede e nunca bloqueia de
forma síncrona enquanto espera por uma resposta.
Modelos de interação
O padrão ainda é suportada e espera-se que represente a maioria das
solicitações em uma conexão RSocket. Essas interações de solicitação / resposta
podem ser consideradas “fluxos de apenas 1 resposta” otimizados e são
mensagens assíncronas multiplexadas em uma única conexão.
Request/Response(single-response)
Permite que várias mensagens sejam transmitidas de volta. Pense nisso
como uma resposta de “coleção” ou “lista”, mas em vez de recuperar todos os
dados como uma única resposta, cada elemento é transmitido de volta em
ordem.
Request/Stream(multi-response, finite)
Um canal é bidirecional, com um fluxo de mensagens em ambas as
direções.
Channel
É uma otimização de solicitação / resposta útil quando uma resposta não é
necessária. Ele permite otimizações de desempenho significativas, não apenas
no uso de rede salvo ao ignorar a resposta, mas também no tempo de
processamento do cliente e do servidor, uma vez que nenhuma contabilidade é
necessária para esperar e associar uma resposta ou solicitação de
cancelamento.
Fire-and-Forget
Agnóstico de linguagem
JAVA GO .NET C++ JAVASCRIPT RUST
- Feito para alcançar alta performance
- Cloud native suporte
- Resiliência
PROS
- Tecnologia nova
- Ainda em desenvolvimento
- Documentação
- Ainda nao suporta algumas linguagens (swift/Python/Rust)
CONS
Conclusão
Obrigado!
- https://rsocket.io/
- https://www.youtube.com/watch?v=KapSjhUYSz4&ab_chan
nel=Jfokus
Referências

Weitere ähnliche Inhalte

Ähnlich wie RSocket - Protocolo assíncrono orientado por mensagens

Diferenças entre SOAP e REST
Diferenças entre SOAP e RESTDiferenças entre SOAP e REST
Diferenças entre SOAP e RESTtiagolimas
 
SOAP x REST (PSDC Unitri)
SOAP x REST (PSDC Unitri)SOAP x REST (PSDC Unitri)
SOAP x REST (PSDC Unitri)Marcio Guedes
 
Serviços Integrados (IntServ; Arquitetura ISA; Funções ISA; RSVP)
Serviços Integrados (IntServ; Arquitetura ISA;  Funções ISA;  RSVP)Serviços Integrados (IntServ; Arquitetura ISA;  Funções ISA;  RSVP)
Serviços Integrados (IntServ; Arquitetura ISA; Funções ISA; RSVP)Jandeildo Alves
 
Serviços Integrados (IntServ; Arquitetura ISA; Funções ISA; RSVP)
Serviços Integrados (IntServ; Arquitetura ISA;  Funções ISA;  RSVP)Serviços Integrados (IntServ; Arquitetura ISA;  Funções ISA;  RSVP)
Serviços Integrados (IntServ; Arquitetura ISA; Funções ISA; RSVP)Jandeildo Alves
 
Dia 12 04_2010
Dia 12 04_2010Dia 12 04_2010
Dia 12 04_2010scorpio3
 
Redes de computadores II - 4.Camada de Transporte TCP e UDP
Redes de computadores II - 4.Camada de Transporte TCP e UDPRedes de computadores II - 4.Camada de Transporte TCP e UDP
Redes de computadores II - 4.Camada de Transporte TCP e UDPMauro Tapajós
 
Ccna exploration fundamentos de rede - 4 camada de transporte osi
Ccna exploration   fundamentos de rede - 4 camada de transporte osiCcna exploration   fundamentos de rede - 4 camada de transporte osi
Ccna exploration fundamentos de rede - 4 camada de transporte osiveruzkavaz
 
Redes Avançadas - 6.QoS
Redes Avançadas - 6.QoSRedes Avançadas - 6.QoS
Redes Avançadas - 6.QoSMauro Tapajós
 
Simplex, Half-Duplex e Full-Duplex
Simplex, Half-Duplex e Full-DuplexSimplex, Half-Duplex e Full-Duplex
Simplex, Half-Duplex e Full-DuplexYohana Alves
 
Trabalho q os em redes ips
Trabalho q os em redes ipsTrabalho q os em redes ips
Trabalho q os em redes ipsmorgana
 
FAST TCP e Checksum no IPV6
FAST TCP e Checksum no IPV6FAST TCP e Checksum no IPV6
FAST TCP e Checksum no IPV6Matheus Girardi
 
Equipamentos passivos luis - cópia
Equipamentos passivos luis - cópiaEquipamentos passivos luis - cópia
Equipamentos passivos luis - cópialuis
 
Tópicos - Redes para Cluster de Alta Performance
Tópicos - Redes para Cluster de Alta PerformanceTópicos - Redes para Cluster de Alta Performance
Tópicos - Redes para Cluster de Alta PerformanceLuiz Arthur
 

Ähnlich wie RSocket - Protocolo assíncrono orientado por mensagens (20)

Diferenças entre SOAP e REST
Diferenças entre SOAP e RESTDiferenças entre SOAP e REST
Diferenças entre SOAP e REST
 
SOAP x REST (PSDC Unitri)
SOAP x REST (PSDC Unitri)SOAP x REST (PSDC Unitri)
SOAP x REST (PSDC Unitri)
 
Serviços Integrados (IntServ; Arquitetura ISA; Funções ISA; RSVP)
Serviços Integrados (IntServ; Arquitetura ISA;  Funções ISA;  RSVP)Serviços Integrados (IntServ; Arquitetura ISA;  Funções ISA;  RSVP)
Serviços Integrados (IntServ; Arquitetura ISA; Funções ISA; RSVP)
 
Serviços Integrados (IntServ; Arquitetura ISA; Funções ISA; RSVP)
Serviços Integrados (IntServ; Arquitetura ISA;  Funções ISA;  RSVP)Serviços Integrados (IntServ; Arquitetura ISA;  Funções ISA;  RSVP)
Serviços Integrados (IntServ; Arquitetura ISA; Funções ISA; RSVP)
 
Android + web service
Android + web serviceAndroid + web service
Android + web service
 
Dia 12 04_2010
Dia 12 04_2010Dia 12 04_2010
Dia 12 04_2010
 
Redes de computadores II - 4.Camada de Transporte TCP e UDP
Redes de computadores II - 4.Camada de Transporte TCP e UDPRedes de computadores II - 4.Camada de Transporte TCP e UDP
Redes de computadores II - 4.Camada de Transporte TCP e UDP
 
Camadasrede
CamadasredeCamadasrede
Camadasrede
 
Camadas rede
Camadas redeCamadas rede
Camadas rede
 
Ccna exploration fundamentos de rede - 4 camada de transporte osi
Ccna exploration   fundamentos de rede - 4 camada de transporte osiCcna exploration   fundamentos de rede - 4 camada de transporte osi
Ccna exploration fundamentos de rede - 4 camada de transporte osi
 
Redes Avançadas - 6.QoS
Redes Avançadas - 6.QoSRedes Avançadas - 6.QoS
Redes Avançadas - 6.QoS
 
Poster08
Poster08Poster08
Poster08
 
O protocolo SCTP para o transporte de vídeo codificado escalonável
O protocolo SCTP para o transporte de vídeo codificado escalonávelO protocolo SCTP para o transporte de vídeo codificado escalonável
O protocolo SCTP para o transporte de vídeo codificado escalonável
 
Simplex, Half-Duplex e Full-Duplex
Simplex, Half-Duplex e Full-DuplexSimplex, Half-Duplex e Full-Duplex
Simplex, Half-Duplex e Full-Duplex
 
Trabalho q os em redes ips
Trabalho q os em redes ipsTrabalho q os em redes ips
Trabalho q os em redes ips
 
FAST TCP e Checksum no IPV6
FAST TCP e Checksum no IPV6FAST TCP e Checksum no IPV6
FAST TCP e Checksum no IPV6
 
Equipamentos passivos luis - cópia
Equipamentos passivos luis - cópiaEquipamentos passivos luis - cópia
Equipamentos passivos luis - cópia
 
Tópicos - Redes para Cluster de Alta Performance
Tópicos - Redes para Cluster de Alta PerformanceTópicos - Redes para Cluster de Alta Performance
Tópicos - Redes para Cluster de Alta Performance
 
Aula10
Aula10Aula10
Aula10
 
MOM
MOM MOM
MOM
 

Mehr von Jonathan de Britto Sedrez (15)

Typescript 4.1
Typescript 4.1Typescript 4.1
Typescript 4.1
 
Socket.io
Socket.ioSocket.io
Socket.io
 
Rambda
RambdaRambda
Rambda
 
PWA
PWAPWA
PWA
 
OTA updates
OTA updatesOTA updates
OTA updates
 
OKRs
OKRsOKRs
OKRs
 
Jasmine
Jasmine Jasmine
Jasmine
 
Facebook flux
Facebook fluxFacebook flux
Facebook flux
 
Event bubbling
Event bubblingEvent bubbling
Event bubbling
 
EscmaScript
EscmaScriptEscmaScript
EscmaScript
 
Es2020
Es2020Es2020
Es2020
 
Enzyme js
Enzyme jsEnzyme js
Enzyme js
 
Cypress
CypressCypress
Cypress
 
Chart css
Chart cssChart css
Chart css
 
Bff patterns
Bff patternsBff patterns
Bff patterns
 

RSocket - Protocolo assíncrono orientado por mensagens

  • 1. Application protocol providing Reactive Streams semantics
  • 3.
  • 4. RSocket é um protocolo binário para uso em transportes de fluxo de bytes, como TCP, WebSockets e Aeron.
  • 6. Para possibilitar isso é necessário o trade off de latência dos usuário e quantidade de recursos para construir. Times grandes e distribuídos precisam facilmente se comunicar, usando tecnologias e linguagens diferentes. Todo comunicação deve ser confiável e suportar grande evolução.
  • 7.
  • 8. Os sistemas reativos contam com a passagem de mensagens assíncronas para estabelecer um limite entre os componentes que garante acoplamento fraco, isolamento, transparência de localização e fornece os meios para delegar erros como mensagens. Empregar a passagem explícita de mensagens permite o gerenciamento de carga, elasticidade e controle de fluxo, moldando e monitorando as filas de mensagens no sistema e aplicando contrapressão quando necessário. … A comunicação sem bloqueio permite que os destinatários consumam recursos apenas enquanto estiverem ativos, levando a menos sobrecarga do sistema. Manifesto Reativo
  • 10. A comunicação da rede é assíncrona. O protocolo RSocket adota isso e modela todas as comunicações como fluxos multiplexados de mensagens em uma única conexão de rede e nunca bloqueia de forma síncrona enquanto espera por uma resposta.
  • 12. O padrão ainda é suportada e espera-se que represente a maioria das solicitações em uma conexão RSocket. Essas interações de solicitação / resposta podem ser consideradas “fluxos de apenas 1 resposta” otimizados e são mensagens assíncronas multiplexadas em uma única conexão. Request/Response(single-response)
  • 13. Permite que várias mensagens sejam transmitidas de volta. Pense nisso como uma resposta de “coleção” ou “lista”, mas em vez de recuperar todos os dados como uma única resposta, cada elemento é transmitido de volta em ordem. Request/Stream(multi-response, finite)
  • 14. Um canal é bidirecional, com um fluxo de mensagens em ambas as direções. Channel
  • 15. É uma otimização de solicitação / resposta útil quando uma resposta não é necessária. Ele permite otimizações de desempenho significativas, não apenas no uso de rede salvo ao ignorar a resposta, mas também no tempo de processamento do cliente e do servidor, uma vez que nenhuma contabilidade é necessária para esperar e associar uma resposta ou solicitação de cancelamento. Fire-and-Forget
  • 16. Agnóstico de linguagem JAVA GO .NET C++ JAVASCRIPT RUST
  • 17. - Feito para alcançar alta performance - Cloud native suporte - Resiliência PROS
  • 18. - Tecnologia nova - Ainda em desenvolvimento - Documentação - Ainda nao suporta algumas linguagens (swift/Python/Rust) CONS

Hinweis der Redaktion

  1. Antes de falarmos propriamente de socet.io eu vou explicar m passo anterior que são os websockets. Ele faz parte das especificações do html 5 é suportado pelas ultimas versões dos navegadores
  2. Sistemas grandes e distribuídos são frequentemente implementados de forma modular por equipes diferentes, usando uma variedade de tecnologias e linguagens de programação. As peças precisam se comunicar de maneira confiável e suportar uma evolução rápida e independente. A comunicação eficaz e escalável entre os módulos é uma preocupação crucial em sistemas distribuídos. Isso afeta significativamente a quantidade de latência que os usuários experimentam e a quantidade de recursos necessários para construir e executar o sistema. Sistemas grandes e distribuídos são frequentemente implementados de forma modular por equipes diferentes, usando uma variedade de tecnologias e linguagens de programação. As peças precisam se comunicar de maneira confiável e suportar uma evolução rápida e independente. A comunicação eficaz e escalável entre os módulos é uma preocupação crucial em sistemas distribuídos. Isso afeta significativamente a quantidade de latência que os usuários experimentam e a quantidade de recursos necessários para construir e executar o sistema.
  3. Sistemas grandes e distribuídos são frequentemente implementados de forma modular por equipes diferentes, usando uma variedade de tecnologias e linguagens de programação. As peças precisam se comunicar de maneira confiável e suportar uma evolução rápida e independente. A comunicação eficaz e escalável entre os módulos é uma preocupação crucial em sistemas distribuídos. Isso afeta significativamente a quantidade de latência que os usuários experimentam e a quantidade de recursos necessários para construir e executar o sistema. Sistemas grandes e distribuídos são frequentemente implementados de forma modular por equipes diferentes, usando uma variedade de tecnologias e linguagens de programação. As peças precisam se comunicar de maneira confiável e suportar uma evolução rápida e independente. A comunicação eficaz e escalável entre os módulos é uma preocupação crucial em sistemas distribuídos. Isso afeta significativamente a quantidade de latência que os usuários experimentam e a quantidade de recursos necessários para construir e executar o sistema.
  4. Sistemas grandes e distribuídos são frequentemente implementados de forma modular por equipes diferentes, usando uma variedade de tecnologias e linguagens de programação. As peças precisam se comunicar de maneira confiável e suportar uma evolução rápida e independente. A comunicação eficaz e escalável entre os módulos é uma preocupação crucial em sistemas distribuídos. Isso afeta significativamente a quantidade de latência que os usuários experimentam e a quantidade de recursos necessários para construir e executar o sistema. Sistemas grandes e distribuídos são frequentemente implementados de forma modular por equipes diferentes, usando uma variedade de tecnologias e linguagens de programação. As peças precisam se comunicar de maneira confiável e suportar uma evolução rápida e independente. A comunicação eficaz e escalável entre os módulos é uma preocupação crucial em sistemas distribuídos. Isso afeta significativamente a quantidade de latência que os usuários experimentam e a quantidade de recursos necessários para construir e executar o sistema.
  5. Sistemas grandes e distribuídos são frequentemente implementados de forma modular por equipes diferentes, usando uma variedade de tecnologias e linguagens de programação. As peças precisam se comunicar de maneira confiável e suportar uma evolução rápida e independente. A comunicação eficaz e escalável entre os módulos é uma preocupação crucial em sistemas distribuídos. Isso afeta significativamente a quantidade de latência que os usuários experimentam e a quantidade de recursos necessários para construir e executar o sistema. Sistemas grandes e distribuídos são frequentemente implementados de forma modular por equipes diferentes, usando uma variedade de tecnologias e linguagens de programação. As peças precisam se comunicar de maneira confiável e suportar uma evolução rápida e independente. A comunicação eficaz e escalável entre os módulos é uma preocupação crucial em sistemas distribuídos. Isso afeta significativamente a quantidade de latência que os usuários experimentam e a quantidade de recursos necessários para construir e executar o sistema.
  6. Sistemas grandes e distribuídos são frequentemente implementados de forma modular por equipes diferentes, usando uma variedade de tecnologias e linguagens de programação. As peças precisam se comunicar de maneira confiável e suportar uma evolução rápida e independente. A comunicação eficaz e escalável entre os módulos é uma preocupação crucial em sistemas distribuídos. Isso afeta significativamente a quantidade de latência que os usuários experimentam e a quantidade de recursos necessários para construir e executar o sistema. Sistemas grandes e distribuídos são frequentemente implementados de forma modular por equipes diferentes, usando uma variedade de tecnologias e linguagens de programação. As peças precisam se comunicar de maneira confiável e suportar uma evolução rápida e independente. A comunicação eficaz e escalável entre os módulos é uma preocupação crucial em sistemas distribuídos. Isso afeta significativamente a quantidade de latência que os usuários experimentam e a quantidade de recursos necessários para construir e executar o sistema.
  7. Sistemas grandes e distribuídos são frequentemente implementados de forma modular por equipes diferentes, usando uma variedade de tecnologias e linguagens de programação. As peças precisam se comunicar de maneira confiável e suportar uma evolução rápida e independente. A comunicação eficaz e escalável entre os módulos é uma preocupação crucial em sistemas distribuídos. Isso afeta significativamente a quantidade de latência que os usuários experimentam e a quantidade de recursos necessários para construir e executar o sistema. Sistemas grandes e distribuídos são frequentemente implementados de forma modular por equipes diferentes, usando uma variedade de tecnologias e linguagens de programação. As peças precisam se comunicar de maneira confiável e suportar uma evolução rápida e independente. A comunicação eficaz e escalável entre os módulos é uma preocupação crucial em sistemas distribuídos. Isso afeta significativamente a quantidade de latência que os usuários experimentam e a quantidade de recursos necessários para construir e executar o sistema.
  8. Sistemas grandes e distribuídos são frequentemente implementados de forma modular por equipes diferentes, usando uma variedade de tecnologias e linguagens de programação. As peças precisam se comunicar de maneira confiável e suportar uma evolução rápida e independente. A comunicação eficaz e escalável entre os módulos é uma preocupação crucial em sistemas distribuídos. Isso afeta significativamente a quantidade de latência que os usuários experimentam e a quantidade de recursos necessários para construir e executar o sistema. Sistemas grandes e distribuídos são frequentemente implementados de forma modular por equipes diferentes, usando uma variedade de tecnologias e linguagens de programação. As peças precisam se comunicar de maneira confiável e suportar uma evolução rápida e independente. A comunicação eficaz e escalável entre os módulos é uma preocupação crucial em sistemas distribuídos. Isso afeta significativamente a quantidade de latência que os usuários experimentam e a quantidade de recursos necessários para construir e executar o sistema.
  9. Sistemas grandes e distribuídos são frequentemente implementados de forma modular por equipes diferentes, usando uma variedade de tecnologias e linguagens de programação. As peças precisam se comunicar de maneira confiável e suportar uma evolução rápida e independente. A comunicação eficaz e escalável entre os módulos é uma preocupação crucial em sistemas distribuídos. Isso afeta significativamente a quantidade de latência que os usuários experimentam e a quantidade de recursos necessários para construir e executar o sistema. Sistemas grandes e distribuídos são frequentemente implementados de forma modular por equipes diferentes, usando uma variedade de tecnologias e linguagens de programação. As peças precisam se comunicar de maneira confiável e suportar uma evolução rápida e independente. A comunicação eficaz e escalável entre os módulos é uma preocupação crucial em sistemas distribuídos. Isso afeta significativamente a quantidade de latência que os usuários experimentam e a quantidade de recursos necessários para construir e executar o sistema.
  10. Sistemas grandes e distribuídos são frequentemente implementados de forma modular por equipes diferentes, usando uma variedade de tecnologias e linguagens de programação. As peças precisam se comunicar de maneira confiável e suportar uma evolução rápida e independente. A comunicação eficaz e escalável entre os módulos é uma preocupação crucial em sistemas distribuídos. Isso afeta significativamente a quantidade de latência que os usuários experimentam e a quantidade de recursos necessários para construir e executar o sistema. Sistemas grandes e distribuídos são frequentemente implementados de forma modular por equipes diferentes, usando uma variedade de tecnologias e linguagens de programação. As peças precisam se comunicar de maneira confiável e suportar uma evolução rápida e independente. A comunicação eficaz e escalável entre os módulos é uma preocupação crucial em sistemas distribuídos. Isso afeta significativamente a quantidade de latência que os usuários experimentam e a quantidade de recursos necessários para construir e executar o sistema.
  11. Sistemas grandes e distribuídos são frequentemente implementados de forma modular por equipes diferentes, usando uma variedade de tecnologias e linguagens de programação. As peças precisam se comunicar de maneira confiável e suportar uma evolução rápida e independente. A comunicação eficaz e escalável entre os módulos é uma preocupação crucial em sistemas distribuídos. Isso afeta significativamente a quantidade de latência que os usuários experimentam e a quantidade de recursos necessários para construir e executar o sistema. Sistemas grandes e distribuídos são frequentemente implementados de forma modular por equipes diferentes, usando uma variedade de tecnologias e linguagens de programação. As peças precisam se comunicar de maneira confiável e suportar uma evolução rápida e independente. A comunicação eficaz e escalável entre os módulos é uma preocupação crucial em sistemas distribuídos. Isso afeta significativamente a quantidade de latência que os usuários experimentam e a quantidade de recursos necessários para construir e executar o sistema.
  12. Sistemas grandes e distribuídos são frequentemente implementados de forma modular por equipes diferentes, usando uma variedade de tecnologias e linguagens de programação. As peças precisam se comunicar de maneira confiável e suportar uma evolução rápida e independente. A comunicação eficaz e escalável entre os módulos é uma preocupação crucial em sistemas distribuídos. Isso afeta significativamente a quantidade de latência que os usuários experimentam e a quantidade de recursos necessários para construir e executar o sistema. Sistemas grandes e distribuídos são frequentemente implementados de forma modular por equipes diferentes, usando uma variedade de tecnologias e linguagens de programação. As peças precisam se comunicar de maneira confiável e suportar uma evolução rápida e independente. A comunicação eficaz e escalável entre os módulos é uma preocupação crucial em sistemas distribuídos. Isso afeta significativamente a quantidade de latência que os usuários experimentam e a quantidade de recursos necessários para construir e executar o sistema.