GraphQL을 사용하여 Event Mesh의 상태 쿼리
이 블로그 게시물에서는 GraphQL의 확장 가능한 API 모델의 기능을 활용하여 이벤트 메시의 아키텍처와 상태를 더 잘 이해할 수 있는 방법을 설명합니다. Anevent mesh은 전 세계 어디에서나 모든 클라우드, 에지 또는 온프레미스 환경에서 실행되는 분리된 애플리케이션, 클라우드 서비스 및 장치 간에 이벤트를 배포하는 이벤트 브로커의 상호 연결된 네트워크입니다.
이벤트 메시의 상위 수준 아키텍처는 다음과 같습니다.
이 다이어그램에는 온프레미스, 퍼블릭 클라우드, 심지어 프라이빗 클라우드에도 배포된 Solace PubSub+ Event Brokers의 네트워크가 있습니다. 동적 메시지 라우팅이라는 프로토콜을 통해 함께 연결됩니다( DMR ). DMR에 대해 이해해야 할 핵심 사항은 이벤트가 경로 또는 라우팅 규칙을 미리 정의할 필요 없이 이동해야 하는 위치로만 라우팅된다는 것입니다.
예를 들어 Apache Beam [Google Cloud Dataflow]( https://cloud.google.com/dataflow ) 마이크로 서비스가 Google Cloud Platform에서 이벤트를 생성하고 이를 AWS의 마이크로 서비스로 라우팅하려는 경우 AWS의 모든 마이크로 서비스는 다음을 수행해야 합니다. 'Topic Subscription'을 통해 Beam\Dataflow 이벤트에 대한 관심을 표현합니다.
PubSub+ Event Broker를 관리/모니터링하기 위한 RESTful API
이벤트 메시의 핵심 구성 요소는 이벤트 브로커입니다. Solace의 PubSub+ 이벤트 브로커는 multi-protocol , hardware appliances 및 software 등 여러 폼 팩터로 제공되는 as a service 이벤트 브로커입니다. 이벤트 브로커는 이벤트 메시에 대한 클라이언트 연결을 처리하고 데이터를 이벤트 메시의 인접 노드로 라우팅합니다.
모든 PubSub+ 이벤트 브로커는 이벤트 브로커에 대한 다양한 내부 통계 및 관리 기능에 대한 액세스를 제공하는 Solace 요소 관리 프로토콜(SEMP )이라는 REST-ful 관리 인터페이스를 노출합니다.
예를 들어 브로커에 대해 SEMP 쿼리를 실행하면 브로커에 연결된 IP 주소/사용자를 파악할 수 있습니다. 또 다른 쿼리는 브로커에서 어떤 주제 구독이 활성 상태인지 이해하는 데 도움이 됩니다.
Event Mesh의 추상화 레이어로서의 GraphQL
Solace에는 로그 수집과 함께 SEMP API 위에 구축된 Solace PubSub+ Monitor 및 PubSub+ Insights와 같은 모니터링 솔루션이 있지만 우리는 GraphQL을 사용하여 SEMP API를 확장할 것입니다.
SEMP API를 활용하면 이벤트 메시의 모든 노드를 주기적으로 폴링하여 통계를 데이터베이스에 저장할 수 있습니다. 그런 다음 GraphQL 서버를 사용하여 데이터베이스 결과를 표시하고 다음과 같은 질문에 답할 수 있는 표현 API를 구축할 수 있습니다.
샘플 구현
이벤트 메시의 노드를 쿼리하고 강력한 JavaScript ORM 라이브러리인 Prisma을 사용하여 데이터베이스에 저장하는 기본 노드 애플리케이션을 작성했습니다. 또한 GraphQL을 통해 Prisma의 테이블을 노출하는 GraphQL 서버를 작성했습니다. 이 유틸리티는 현재 클라이언트 및 주제 구독을 저장하고 노출하지만 더 많은 사용 사례를 포함하도록 쉽게 확장할 수 있습니다.
GitHub 저장소/설정 지침here을 찾을 수 있습니다.
다음은 이 애플리케이션 스택으로 얻을 수 있는 몇 가지 샘플 쿼리 및 결과입니다.
내 주제는 어느 노드에서 구독하나요?
query{
findClientsForSubscription(topicString: "my/topic")
{
subscription
clients {
nodeName
}
}
}
결과:
{"data": {
"findClientsForSubscription": [
{
"subscription": "my/topic",
"clients": [
{
"nodeName": "Cloud Broker"
},
{
"nodeName": "Local Broker"
}
]
}
]
}
}
내 주제를 구독하는 사용자 및 노드는 무엇입니까?
Query{
findClientsForSubscription(topicString: "my/topic"){
subscription
clients {
nodeName
userName
}
}
}
응답:
{"data": {
"findClientsForSubscription": [
{
"subscription": "my/topic",
"clients": [
{
"nodeName": "Cloud Broker",
"userName": "local-user"
},
{
"nodeName": "Local Broker",
"userName": "default"
}
]
}
]
}
}
결론
이벤트 메시는 이벤트를 의도한 목적지로 동적으로 라우팅하는 강력한 플랫폼입니다. GraphQL은 이벤트 메시에 대한 특정 질문에 대한 답변을 찾는 데 도움이 되는 매우 강력한 쿼리 언어입니다.
게시물 Using GraphQL to Query the State of Your Event Mesh이 Solace에 처음 나타났습니다.
Reference
이 문제에 관하여(GraphQL을 사용하여 Event Mesh의 상태 쿼리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/solacedevs/using-graphql-to-query-the-state-of-your-event-mesh-4j6g텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)