Redes sociales









¿ Cómo funciona Uber ?

Diseño del sistema UBER

La tecnología de Uber puede parecer simple, pero cuando un usuario solicita un viaje desde la aplicación y llega un conductor para llevarlo a su destino.

Pero detrás de escena, sin embargo, una infraestructura gigante que consta de miles de servicios y terabytes de datos respalda todos y cada uno de los viajes en la plataforma.

Como la mayoría de los servicios basados ​​en la web, el sistema backend de Uber comenzó como una arquitectura de software «monolítica» con un montón de servidores de aplicaciones y una sola base de datos.

Para obtener más videos de diseño de vástagos S y , suscríbete a mi canal: Tech Dummies

El sistema fue escrito principalmente en Python y usó SQLAlchemy como la capa ORM de la base de datos. La arquitectura original estaba bien para realizar un número relativamente modesto de viajes en unas pocas ciudades.

Después de 2014, la arquitectura ha evolucionado hacia una arquitectura orientada a servicios con alrededor de cientos de servicios.

El backend de Uber ahora no solo está diseñado para manejar taxis, sino que también puede manejar taxis, entrega de alimentos y carga.

El backend atiende principalmente al tráfico de teléfonos móviles. La aplicación uber habla con el backend a través de datos móviles.

¡¡Lo desafiante es abastecer la demanda con una oferta variable !!

El sistema Dispatch de Uber actúa como una plataforma de mercado en tiempo real que relaciona a los conductores con los pasajeros que utilizan teléfonos móviles.

Entonces necesitamos dos servicios

  1. Servicio de suministro
  2. Servicio de demanda

en el futuro estaré usando oferta de taxis y demanda de pasajeros mientras explicaba

Servicio de suministro:

• El Servicio de Suministros rastrea los autos usando geolocalización (lat y lang) Cada taxi que está activo sigue enviando lat-long al servidor cada 5 segundos una vez

• Las máquinas de estado de toda la oferta también se guardan en la memoria.

• Para rastrear vehículos, el modelo tiene muchos atributos: número de asientos, tipo de vehículo, presencia de un asiento de seguridad para niños, capacidad para una silla de ruedas, etc.

• Es necesario realizar un seguimiento de la asignación. Un vehículo, por ejemplo, puede tener tres asientos pero dos de ellos están ocupados.

Servicio de demanda

• El servicio de demanda rastrea la ubicación GPS del usuario cuando se solicita

• Realiza un seguimiento de los requisitos de las órdenes como, por ejemplo, ¿un ciclista requiere un automóvil pequeño / un automóvil grande o una piscina, etc.?

• Los requisitos de demanda deben compararse con el inventario de suministros.

Ahora tenemos oferta y demanda. todo lo que necesitamos un servicio que coincida con la demanda de una oferta y ese servicio en UBER se llama como DISCO

DISCO – Optimización de DISPATCH

Este servicio se ejecuta en cientos de procesos.

Requisitos básicos del sistema de despacho

  1. reducir la conducción adicional.
  2. reducir el tiempo de espera
  3. ETA global más baja

¿Cómo funciona el sistema de despacho? ¿Cómo se comparan los pasajeros con los conductores?

Los datos de GPS / ubicación son lo que impulsa el sistema de despacho, eso significa que tenemos que modelar nuestros mapas y datos de ubicación

  1. La tierra es una esfera. Es difícil hacer un resumen y una aproximación basados ​​únicamente en la longitud y la latitud. Entonces, Uber divide la tierra en celdas diminutas usando la biblioteca de Google S2. Cada celda tiene un ID de celda único.
  2. S2 puede dar cobertura a una forma. Si desea dibujar un círculo con un radio de 1 km centrado en Londres, S2 puede indicar qué celdas se necesitan para cubrir completamente la forma.
  1. Dado que cada celda tiene un ID, el ID se utiliza como clave de fragmentación. Cuando una ubicación proviene del suministro, se determina el ID de celda para la ubicación. Al usar el ID de celda como clave de fragmento, se actualiza la ubicación del suministro. Luego se envía a algunas réplicas.
  2. Para hacer coincidir los pasajeros con los conductores o simplemente mostrar los automóviles en un mapa, DISCO envía una solicitud a geo por suministro
  3. el sistema filtra todos los taxis por los datos de ubicación GPS del pasajero para obtener taxis cercanos que cumplan con los requisitos de los pasajeros. Utilizando los ID de celda del área del círculo, se contacta con todos los fragmentos relevantes para devolver los datos de suministro.
  4. Luego, la lista y los requisitos se envían a enrutamiento / ETA para calcular la ETA de qué tan cerca están, no geográficamente, sino por el sistema de carreteras.
  5. Ordenar por ETA luego lo envía de vuelta al sistema de suministro para ofrecérselo a un conductor.

¿Cómo escalar el sistema de despacho?

Hay muchas formas de construir, pero @ uber

  1. Dispatch se construye usando node.js, la ventaja de usar node es el marco asincrónico y basado en eventos. Además, le permite enviar y recibir mensajes a través de WebSockets.
  2. por lo que en cualquier momento el cliente puede enviar el mensaje al servidor o el servidor puede enviarlo cuando lo desee.
  3. Ahora, ¿cómo distribuir el cálculo de despacho en la misma máquina y en varias máquinas?
  4. La solución para escalar es Node js con ringpop , es un protocolo RPC más rápido con chismes que usa el protocolo SWIM junto con un anillo hash consistente.
  5. Ringpop es una biblioteca que brinda cooperación y coordinación a aplicaciones distribuidas. Mantiene un anillo de hash consistente sobre un protocolo de membresía y proporciona reenvío de solicitudes como una conveniencia de enrutamiento. Se puede usar para fragmentar su aplicación de una manera escalable y tolerante a fallas.
  6. SWIM se utiliza para saber qué nodo hace qué y quién asume la responsabilidad de la computación de qué geo.
  7. por lo que con los chismes es fácil agregar y eliminar nodos y, por lo tanto, escalar es fácil
  8. El protocolo de chismes SWIM también combina controles de estado con cambios de membresía como parte del mismo protocolo.

¿Cómo se envían los mensajes de suministro y se guardan?

Apache Kafka se utiliza como centro de datos

Supply o taxis utiliza el APIS de Kafka para enviar ubicaciones GPS precisas al centro de datos.

Una vez que las ubicaciones de GPS se cargan en Kafka, se guardan lentamente en la memoria principal de las notas del trabajador respectivas y también en la base de datos cuando se realiza el viaje.

¿Cómo funcionan los mapas y las rutas?

Antes de que Uber lance operaciones en una nueva área, definimos e incorporamos una nueva región a nuestra pila de tecnología de mapas. Dentro de esta región del mapa, definimos subregiones etiquetadas con los grados A, B, AB y C, de la siguiente manera:

Grado A: una subregión del Territorio Uber que cubre centros urbanos y áreas de tránsito que representan aproximadamente el 90 por ciento de todo el tráfico Uber esperado. Teniendo esto en cuenta, es de vital importancia garantizar la máxima calidad de mapa de las regiones de mapas de grado A.

Grado B: una subregión del territorio de Uber que cubre áreas rurales y suburbanas que pueden estar menos pobladas o menos transitadas por los clientes de Uber.

Grado AB: una unión de subregiones de grado A y B.

Grado C: un conjunto de corredores de carreteras que conectan varios territorios de Uber.

Diseño geoespacial:

La tierra es una esfera. Es difícil hacer un resumen y una aproximación basados ​​únicamente en la longitud y la latitud.

Entonces, Uber divide la tierra en celdas diminutas usando la biblioteca de Google S2. Cada celda tiene un ID de celda único.

Cuando DISCO necesita encontrar el suministro cerca de una ubicación, se calcula el valor de la cobertura de un círculo centrado en el lugar donde se encuentra el ciclista.

La carga de lectura se escala mediante el uso de réplicas. Si se necesita más capacidad de lectura, se puede aumentar el factor de réplica.

¿Cómo uber construye el mapa?

  1. Cobertura de seguimiento: una métrica de cobertura comparativa, la cobertura de seguimiento identifica los segmentos de carretera que faltan o la geometría de la carretera incorrecta. El cálculo utiliza dos entradas: datos de mapas bajo prueba y trazas GPS históricas de todos los viajes de Uber tomados durante un cierto período de tiempo. Superponemos esos trazos de GPS en el mapa, comparándolos y haciéndolos coincidir con los segmentos de la carretera. Si encontramos trazas de GPS donde no se muestra ninguna carretera, podemos inferir que a nuestro mapa le falta un segmento de carretera y tomar medidas para corregir la deficiencia.
  2. Precisión del punto de acceso preferido (recogida): los puntos de recogida son una métrica extremadamente importante para la experiencia del ciclista, especialmente en lugares grandes como aeropuertos y estadios. Para esta métrica, calculamos la distancia de la ubicación de una dirección o lugar, como se muestra en el pin del mapa en la Figura 4, a continuación, de todos los puntos reales de recogida y devolución utilizados por los conductores. Luego, configuramos la ubicación real más cercana para que sea el punto de acceso preferido para dicho pin de ubicación. Cuando un ciclista solicita la ubicación indicada por el pin del mapa, el mapa guía al conductor al punto de acceso preferido. Calculamos continuamente esta métrica con las últimas ubicaciones reales de recogida y entrega para garantizar la frescura y precisión de los puntos de acceso preferidos sugeridos.

¿Cómo se calculan las ETA?

eso significa que la discoteca debe rastrear los taxis disponibles para montar a los pasajeros.

pero TI no solo debe manejar el suministro disponible actualmente, es decir, los taxis que están listos para viajar con el cliente, sino que también rastrea los autos que están a punto de terminar un viaje.

por ejemplo:

  1. una cabina que está a punto de terminar cerca de la demanda (conductor) es mejor que asignar la cabina que está lejos de la demanda.
  2. A veces, se revisa la ruta de un viaje en curso porque algún taxi cercano a la demanda se puso en línea.

cuando uber comenzó, los datos de todas las ciudades se separaron creando tablas / bases de datos separadas, esto no fue fácil

ahora todo el cálculo de las ciudades ocurre en el mismo sistema, ya que los trabajadores los DBnodes están distribuidos por regiones, la solicitud de demanda se enviará al centro de datos más cercano.

El enrutamiento y el cálculo de la ETA es un componente importante en uber, ya que impacta directamente en la coincidencia de viajes y las ganancias.

por lo que utiliza tiempos de viaje históricos para calcular las ETA

También puede utilizar algoritmos simulados de IA o simples Dijkstra para encontrar la mejor ruta.

605 Vistas


Reddit

Algoritmo para multiplicar peces con movimientos al azar (altura y velocidad) de esta forma evito hacer uno por uno from r/funny