rpc 미들웨어란 무엇입니까?

爱喝马黛茶的安东尼
풀어 주다: 2020-01-07 09:34:14
원래의
4701명이 탐색했습니다.

rpc 미들웨어란 무엇입니까?

1. 메시지 미들웨어

메시지 큐 기술은 분산 애플리케이션 간에 정보를 교환하는 기술입니다. 메시지 큐는 메모리나 디스크에 상주할 수 있으며 애플리케이션이 메시지를 읽을 때까지 메시지를 저장합니다. 메시지 큐를 사용하면 애플리케이션이 독립적으로 실행될 수 있습니다. 즉, 실행을 계속하기 전에 서로의 위치를 알 필요도 없고 수신 프로그램이 메시지를 수신할 때까지 기다릴 필요도 없습니다.

일반적으로 메시지 미들웨어에는 결합 감소, 트래픽 피크 감소, 비동기 통신 및 안정적인 전송 기능이 있습니다.

1. 결합 감소: 게시 및 구독을 통한 느슨한 결합

등록 사업을 예로 들어 보겠습니다. 성공하면 확인을 위해 사용자에게 문자 메시지 또는 이메일이 전송됩니다. 전통적인 아키텍처 모델은 다음과 같습니다.

rpc 미들웨어란 무엇입니까?

이메일 비즈니스 및 SMS 비즈니스에 대한 코드는 사용자 등록 프로세스에서 작성됩니다. 인터페이스를 통해 구현하거나 원격으로 호출하면 결합도가 매우 높아집니다. 이제 사용자 등록이 완료된 후에는 이메일이 전송되지 않지만 사용자에게 "포인트 증가"가 추가됩니다. 이러한 상황을 분석해 보겠습니다.

첫째, 둘 다 비즈니스 시스템에서는 코드 축적 및 인터페이스 호출을 통해 등록 성공 후 비즈니스 처리를 구현합니다. 온라인에 접속할 때 등록 코드를 변경하고 애플리케이션을 시작 및 중지해야 합니다. 가장 높은 수준의 결합.

두 번째, 원격 호출을 통해 새로운 비즈니스 처리를 추가하고 싶을 때 여전히 메인 프로세스 코드를 변경해야 하기 때문에 필연적으로 애플리케이션이 시작되고 중지됩니다.

다음과 같이 메시지 미들웨어를 도입하면:

rpc 미들웨어란 무엇입니까?

게시 및 구독을 통해 사용자가 성공적으로 등록한 후 메시지가 메시지 미들웨어로 전송되고 각 비즈니스 측에서는 동일한 채널의 메시지를 구독합니다. 성공적인 등록 메시지를 받은 후 해당 업무가 실행됩니다. "포인트 추가"를 추가하면 포인트 시스템이 관련 처리를 처리하고 이 메시지를 구독하는 것으로 충분합니다. 사용자의 비즈니스 코드를 변경하거나 애플리케이션을 시작하거나 중지할 필요가 없으며 원활한 확장이 가능합니다. 사업을 이룰 수 있습니다.

2. 비동기식 통신

위의 예를 보면 기존 아키텍처에서는 사용자 등록이 완료되고 SMS 이메일이 전송되면 클라이언트로 반환되어 사용자에게 등록이 성공했음을 알립니다. 메시지 미들웨어를 사용한 후, 사용자가 등록 정보를 제출하고 처리가 완료된 후 사용자에게 성공적으로 등록하라는 메시지가 표시될 수 있으며, 후속 SMS 서비스 및 이메일 서비스는 SMS 메시지를 보내기 전에 가입한 채널로부터 사용자 등록 성공 메시지를 받게 됩니다. 이메일을 통해 더 이상 상호 제약이 필요하지 않습니다.

3. 트래픽 피크 제거 및 서지 방지

메시지 미들웨어는 피크 기간 동안 메시지를 축적할 수 있으며, 피크 값이 지나면 다운스트림 시스템은 트래픽 피크 문제를 해결하기 위해 메시지를 천천히 소비합니다.

동시성이 최고조에 달하면 일반적으로 애플리케이션 서버이든 데이터베이스 서버이든 백엔드 시스템에 대한 부담이 매우 높으며 이때 메시지 미들웨어의 메시지 대기열에 유사한 요청이 배치될 수 있습니다. 처리를 위해 천천히 누적되거나 메시지가 설정될 수 있으며 동시성 제어 목적을 달성할 수 있으며 제품 플래시 판매의 비즈니스 시나리오는 비교적 일반적입니다.

4. 안정적인 전송

메시지 기반 통신은 안정적이며 메시지가 손실되지 않습니다. 대부분의 메시징 미들웨어는 메시지를 디스크에 유지하는 기능을 제공합니다. 처음의 첫 번째 시나리오에서 메시지 미들웨어는 생성자가 생성한 메시지를 디스크에 유지할 수 있지만, 메시지는 손실되지 않고 처리를 계속하기 위해 애플리케이션이 다시 시작됩니다.

이 질문이 있을 수 있습니다. 메시지 미들웨어가 다운된 경우 메시지를 받을 수 없으면 어떻게 유지할 수 있나요? 문제가 되지 않습니다. 메시지 미들웨어는 안정적인 메시지 전송을 보장할 수 있는 다양한 메시지 복제 전략, 지속성 전략, 클러스터 배포 전략 등을 제공합니다.

2. 메시지 미들웨어 모델

rpc 미들웨어란 무엇입니까?

rpc 미들웨어란 무엇입니까?

3. 일반적으로 사용되는 메시지 미들웨어

RabbitMQ

1. RabbitMQ 기능:

RabbitMQ는 Erlang에서 개발한 언어입니다. AMQP 표준을 기반으로 오픈 소스 구현을 개발했습니다. RabbitMQ는 원래 금융 시스템에서 시작되었으며 분산 시스템에서 메시지를 저장하고 전달하는 데 사용됩니다. 사용 용이성, 확장성 및 고가용성 측면에서 우수한 성능을 발휘합니다. 구체적인 기능은 다음과 같습니다:

신뢰성

유연한 라우팅

메시지 클러스터링 지원

고가용성

여러 프로토콜 지원(AMQP 프로토콜 지원 외에도 STOMP 및 MQTT와 같은 플러그인을 통해 다른 메시지 대기열 프로토콜도 지원)

다국어 클라이언트 지원

관리 기능 제공 인터페이스

추적 메커니즘 제공

플러그인 메커니즘 제공(RabbitMQ는 많은 플러그인을 제공하며 자신만의 플러그인을 작성할 수도 있습니다)

요약:

RabbitMQ의 가장 큰 장점은 보다 유연한 메시지를 제공한다는 것입니다. 라우팅 전략, 고가용성, 안정성 및 풍부한 플러그인, 다중 플랫폼 지원 및 완전한 문서화. 그러나 AMQP 프로토콜 자체로 인해 구현이 상대적으로 무거워서 다른 MQ(예: Kafka)에 비해 처리량이 불리합니다.

ActiveMQ

1. ActiveMQ 기능:

ActiveMQ는 Apache에서 제작한 오픈 소스 메시징 미들웨어로, 애플리케이션에 효율적이고 확장 가능하며 안정적이고 안전한 엔터프라이즈급 메시징을 제공하도록 설계되었습니다. ActiveMQ는 JMS 1.1을 구현하고 JMX 관리, 마스터-슬레이브 관리, 메시지 그룹 통신, 메시지 우선 순위, 지연된 메시지 수신, 가상 수신기, 메시지 지속성, 메시지 대기열 모니터링 등과 같은 많은 추가 기능을 제공합니다. 주요 기능은 다음과 같습니다.

OpenWire, STOMP, AMQP 및 MQTT 프로토콜과 같은 Java, C, C++, C#, Ruby, Perl, Python, PHP 등 여러 언어로 클라이언트 및 프로토콜을 지원합니다. .

메시지 그룹 통신, 메시지 우선순위, 지연된 메시지 수신, 가상 수신자, 메시지 지속성과 같은 고급 기능을 제공합니다.

JMS 1.1 및 J2EE 1.4 사양(지속성, 분산 트랜잭션 메시지, 트랜잭션 포함)을 완벽하게 지원합니다.

Spring 프레임워크를 지원하며 ActiveMQ는 Spring 구성 파일을 통해 Spring 애플리케이션에 쉽게 포함될 수 있습니다.

TomEE, Geronimo, JBoss, GlassFish 및 WebLogic과 같은 일반적인 J2EE 서버 테스트를 통과했습니다.

다양한 연결 방법인 ActiveMQ는 in-VM, TCP, SSL, NIO, UDP, 멀티캐스트, JGroups, JXTA와 같은 다양한 연결 방법을 제공합니다.

JDBC 및 Journal을 사용하여 메시지의 빠른 지속성을 지원합니다.

고성능 클러스터, 클라이언트-서버, 지점 간 통신 및 기타 시나리오를 위해 설계되었습니다.

기술과 언어 중립적인 REST API 인터페이스를 제공합니다.

AJAX를 통한 ActiveMQ 호출을 지원합니다.

ActiveMQ는 CXF 및 Axis와 같은 WebService 기술과 쉽게 통합되어 안정적인 메시징을 제공할 수 있습니다.

인메모리 JMS 공급자로 사용할 수 있으며 JMS 단위 테스트에 적합합니다.

Kafka

1.Kafka 기능:

Kafka는 처음에는 LinkedIn에서 분산 게시/구독 메시징 시스템으로 개발되었으며 나중에 Apache의 최상위 프로젝트가 되었습니다. 주요 기능은 다음과 같습니다:

출판과 구독 모두에 높은 처리량을 제공합니다. (Kafka의 설계 목표는 O(1)의 시간 복잡도로 메시지 지속성 기능을 제공하는 것입니다. TB 수준 이상의 데이터에 대해서도 지속적인 액세스 성능을 보장할 수 있으며, 매우 저렴한 상용 시스템에서도 가능합니다. 전송을 지원합니다. 초당 100,000개의 메시지를 단일 시스템에 전달)

메시지 지속성. (메시지를 디스크에 유지하므로 실시간 애플리케이션은 물론 ETL 등 일괄 소비에 사용할 수 있습니다. 데이터를 하드 디스크에 유지하고 복제하여 데이터 손실을 방지할 수 있습니다.)

분산됩니다. (서버 간 메시지 파티셔닝 및 분산 소비를 지원하는 동시에 각 파티션 내에서 메시지의 순차적 전송을 보장합니다. 내부 생산자, 브로커 및 소비자는 모두 분산 아키텍처이므로 외부 확장이 더 쉽습니다.)

소비 메시지는 풀 모드를 채택합니다. (처리 중인 메시지의 상태는 서버 측이 아닌 Consumer 측에서 유지됩니다. Broker는 Stateless이고 Consumer는 오프셋 자체를 저장합니다.)

온라인 및 오프라인 시나리오를 지원하며, 오프라인 데이터 처리와 실제 데이터 처리를 모두 지원합니다. -시간 데이터 처리.

RocketMQ

1. RocketMQ 기능:

RocketMQ는 Alibaba가 2012년에 오픈 소스로 제공한 분산 메시징 미들웨어입니다. 나중에 Apache Software Foundation에 기부되었으며 2017년 9월 25일에 Apache의 최상위 프로젝트가 되었습니다. . 알리바바의 '더블 11' 등 수많은 '슈퍼 프로젝트'를 경험한 국내 미들웨어로 안정적이고 뛰어난 성능을 갖고 있으며, 고성능, 짧은 대기시간, 높은 신뢰성으로 최근 몇 년간 점점 더 많은 국내 사용자들이 사용하고 있다. 기업에서 사용됩니다. 주요 기능은 다음과 같습니다:

유연한 확장성. (RocketMQ는 클러스터링을 자연스럽게 지원하며, 4가지 핵심 구성 요소(NameServer, Broker, Producer, Consumer) 각각은 단일 장애 지점 없이 수평 확장이 가능합니다.)

대량 메시지를 축적하는 기능이 있습니다. (RocketMQ는 제로 복사 원리를 사용하여 극도로 많은 양의 메시지를 축적하는 능력을 달성합니다. 단일 시스템이 수억 개의 메시지 축적을 지원할 수 있다고 하며, 그렇게 많은 메시지를 축적한 후에도 여전히 낮은 쓰기 대기 시간을 유지합니다. )

순차 메시지를 지원합니다. (RocketMQ는 메시지 소비자가 전송된 순서대로 메시지를 소비하도록 보장할 수 있습니다. 순차 메시지는 전역적으로 정렬된 메시지와 로컬로 정렬된 메시지로 구분됩니다. 일반적으로 로컬로 정렬된 메시지를 사용하는 것이 좋습니다. 즉, 생성자는 특정 유형의 메시지를 보냅니다. 메시지 순서대로 동일한 대기열로 보내면 달성됩니다)

다양한 메시지 필터링 방법을 지원합니다. (메시지 필터링은 서버 측 필터링과 소비자 측 필터링으로 구분됩니다. 서버 측 필터링 시 메시지 소비자의 요구 사항에 따라 필터링을 수행할 수 있습니다. 장점은 불필요한 메시지 전송이 줄어드는 반면, 단점은 구현이 상대적으로 복잡합니다. 소비자 측 필터링은 특정 애플리케이션에 의해 완전히 맞춤화됩니다. 단점은 쓸모 없는 메시지가 메시지 소비자에게 많이 전송된다는 것입니다. 메시지. (RocketMQ는 일반 메시지 및 순차 메시지 지원 외에도 트랜잭션 메시지도 지원합니다. 이 기능은 분산 트랜잭션을 위한 또 다른 솔루션을 제공합니다.)

소급 소비를 지원합니다. (소급적 소비란 소비자가 성공적으로 소비한 메시지를 비즈니스 요구로 인해 다시 소비해야 한다는 의미입니다. RocketMQ는 시간에 따른 소급적 소비를 지원합니다. 시간 차원은 밀리초 단위로 정확하며 앞으로 또는 뒤로 추적할 수 있습니다.)

더 보기

FAQ

, PHP 중국어 홈페이지를 방문해 주세요.

위 내용은 rpc 미들웨어란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!