Community

Uber와 같은 택시 애플리케이션 서비스의 아키텍처 및 시스템 설계에 대한 내용입니다. 개인적으로 이런 자료들이 많았으면 하네요. 특히, 아키텍처 부터 시스템 구조, 트랜잭션 처리, 데이터베이스

Uber와 같은 택시 애플리케이션 서비스의 아키텍처 및 시스템 설계에 대한 내용입니다. 개인적으로 이런 자료들이 많았으면 하네요. 특히, 아키텍처 부터 시스템 구조, 트랜잭션 처리, 데이터베이스, 결재 등 많은 내용을 담고 있다는 자체만으로도 의미가 있는 자료라고 보입니다. 따라서, 전체 내용을 이해하려면 해당 링크의 전문을 다 읽어보시고, 인사이트를 얻기를 바랍니다. ;-) * 내용 중 일부 2014년 이후 Uber의 아키텍처는 서비스 지향 아키텍처(service-oriented architecture)로 발전했습니다. Uber는 택시와 음식, 화물 서비스도 하고 있습니다. 모든 것이 하나의 시스템에 만들어져있었습니다. 택시 관련 플랫폼의 어려운 점은 수요에 대한 공급 또는 공급에 대한 수요를 충족시키는 것입니다. Uber 백엔드의 주요 임무는 모바일 트래픽을 처리하는 것입니다. 왜냐하면 휴대폰이 없다면 이런 서비스를 운영하는 것은 매우 어렵기 때문입니다. 모든 게 GPS로 작동하기 때문이죠. Uber 시스템은 탑승자와 택시를 연결하는 실시간 마켓 플레이스 같은 것입니다. 즉, 아키텍처에 서로 다른 두 가지 서비스가 필요합니다. DISCO (Dispatch Optimization) -디스패치 최적화 이 디스패치 시스템의 작동 방식에 대해 이야기해 보겠습니다. 디스패치 시스템은 지도 및 위치 데이터 기반 위에서 완벽하게 작동합니다. 즉, 위치 데이터를 모델링하고 적절하게 지도를 만들어야 했습니다. 위도 및 경도 데이터를 사용하여 위치를 요약하고 근사화하는 것은 매우 어렵습니다. 이 문제를 해결하기 위해 Uber는 Google S2 라이브러리를 사용했습니다. 탑승자(Rider)와 운전자(Driver)를 언제 매칭해야 할까요? 탑승자(Rider)의 위치에서 반경 2 ~ 3km 떨어진 원을 그립니다. 그리고 S2 라이브러리를 사용하여 사용 가능한 모든 운전자(Driver)를 나열합니다. 이제 ETA (여행 예측 시간)를 확인해야 합니다. 여기서 최단 거리 (Euclidean Distance)를 사용할 수 있습니다. 하지만 이것이 ETA (여행 예측 시간)를 정확하게 제공하지는 않습니다. A에서 B까지 직접 선을 그릴 수는 없습니다. 경로는 예상보다 길 수 있습니다. 당신은 연결된 도로로만 갈수 있기 때문입니다 System Design (시스템 설계) 운전자들이 4 초마다 위치 데이터를 KAFKA REST API로 전송합니다. 모든 호출(call)은 방화벽을 관통하여 발생합니다. 그런 다음 Load Balancer로 이동하고, KAPKA로 이동하여 다른 서버로 이동합니다. 또한 위치 데이터 사본이 데이터베이스로 전송되고, DISCO(Dispatch Optimization)도 Cab의 최신 위치를 유지합니다. 사용자가 운전자(드라이버)를 요청할 때 어떻게 동작합니까? 사용자가 Rid(승차)를 요청하면 요청이 웹 소켓에 도착합니다. Web Socket은 요청을 Demand Service(공급 서비스)에 넘깁니다. 그런 다음 Demand Service는 CAB(운전자) 또는 Ride의 요구 사항을 알고 있습니다. 그런 다음 Ride 서비스에 대한 Demand Service 요청에 라이드 정보 (어떤 라이드 유형, 필요한 라이드 수, 위치 정보)가 포함됩니다. Demand Service는 이제 사용자 (라이더)의 위치 (셀 ID)를 알고 서버 링에 있는 서버 중 하나를 요청합니다. Consistent Hashing에서 우리는 책임을 균등하게 분배했습니다. 이렇게 모든 위치 데이터는 아래 이미지 (파란색)와 같이 서버 간에 균등하게 분산되어 있습니다. 공급 서비스는 이제 ETA 값을 계산하여 서버에서 Rider(탑승자)에 가까운 CABS(운전자)를 파악하려고 합니다. 그리고 ETA 값을 계산한 후 Demand (공급) 서버 서버는 WEB SOCKET을 통해 CABS에 "이 라이더가 이 장소에 가고 싶어 하는데 받아줄 수 있나요?”라고 알려줍니다.

알림

알림이 없습니다