Heim >Backend-Entwicklung >PHP-Tutorial >javascript - Hallo zusammen, ich möchte eine Software ähnlich wie Didi Taxi erstellen. Welche Art von Technologie muss ich verwenden?

javascript - Hallo zusammen, ich möchte eine Software ähnlich wie Didi Taxi erstellen. Welche Art von Technologie muss ich verwenden?

WBOY
WBOYOriginal
2016-08-18 09:16:182105Durchsuche

Um ein Projekt wie dieses durchzuführen, ähnlich wie Didi Taxi und Meituan Crowdsourcing

javascript - Hallo zusammen, ich möchte eine Software ähnlich wie Didi Taxi erstellen. Welche Art von Technologie muss ich verwenden?

Tatsächlich handelt es sich um eine innerstädtische Lieferung: Wenn eine neue Bestellung zum Mitnehmen vorliegt, wird diese in Echtzeit an das Lieferpersonal in der Nähe der Bestellung weitergeleitet, und das Lieferpersonal liefert die Bestellung aus, nachdem sie die Bestellung erhalten hat.

Es scheint sehr einfach, aber für mich web开发Ich weiß nicht, wo ich anfangen soll. Das erste, was mir einfiel, war:

Das APP Mobiltelefon des Zustellpersonals ist direkt mit dem Server verbunden WebSocket und der geografische Standort sowie der Längen- und Breitengrad werden in Echtzeit auf den Server hochgeladen Speichern Sie den Standort (redis/mongodb) und ermitteln Sie ihn dann kontinuierlich in einem regelmäßigen Zyklus. Berechnen Sie bei neuen Bestellungen kontinuierlich, ob sich Lieferpersonal in der Nähe der neuen Bestellung befindet, und leiten Sie diese gegebenenfalls an das entsprechende Lieferpersonal weiter.

Die Idee ist sehr einfach, aber es gibt mehrere Probleme:

  1. Wie erhält das Zustellpersonal den Standort und übermittelt ihn alle paar Sekunden an den Server? Das ist nicht dasselbe wie ajax, um ihn stabiler zu machen . Das Lieferpersonal ist immer mit dem Fahrrad unterwegs. WebSocket

  2. Verwendet der Server Speicherdaten, um die Standortinformationen des Zustellpersonals zu speichern, unterstützt er aber

    , wie überprüft werden kann, wann die nächste Überprüfung durchgeführt wird und wie das Zustellpersonal in der Nähe überprüft wird? Befehl. redis地理位置索引

  3. Wird dadurch eine Menge Daten generiert?
  4. Ist das möglich?

    内存数据库

Ich weiß nicht, welche Kenntnisse hier erforderlich sind. Ich denke, es sollte diese Technologien geben:
1:

, In-Memory-Datenbank
2: Echtzeitkommunikation, Multiprozess, Multi -Thread, Parallelitätnosql3:
,
, 队列, Hintergrundresidenter Dienst 定时程序4: Räumlicher Index, räumliche Berechnung, Berechnung des geografischen Standortindex CLI5:
,
, Socket Push, Socket编程Socket通信6: APP-Entwicklung, aber kann ich H5 Sockets
verwenden? Das Lieferpersonal muss nicht unbedingt web H5 verwenden, solange Socket stabil ist ( egal wie schwach ich frage) Ein Satz, APPOK oder nicht) WebSocket ajaxIch hoffe, erfahrene Experten können mir einen Rat geben und mir nicht sagen, ich solle das Wissen nicht aufgeben, aber ich kann es genauso gut erzählen und es mir einzeln anschauen Ich werde wissen, welche Kenntnisse erforderlich sind.

Ergänzende Bilder (Kolibri-Crowdsourcing/Dada-Lieferung):


javascript - Hallo zusammen, ich möchte eine Software ähnlich wie Didi Taxi erstellen. Welche Art von Technologie muss ich verwenden? javascript - Hallo zusammen, ich möchte eine Software ähnlich wie Didi Taxi erstellen. Welche Art von Technologie muss ich verwenden?Vielen Dank an alle^_^

Antwortinhalt:

Um ein Projekt wie dieses durchzuführen, ähnlich wie Didi Taxi und Meituan Crowdsourcing

javascript - Hallo zusammen, ich möchte eine Software ähnlich wie Didi Taxi erstellen. Welche Art von Technologie muss ich verwenden?

Tatsächlich handelt es sich um eine innerstädtische Lieferung: Wenn eine neue Bestellung zum Mitnehmen vorliegt, wird diese in Echtzeit an das Lieferpersonal in der Nähe der Bestellung weitergeleitet, und das Lieferpersonal liefert die Bestellung nach Eingang der Bestellung aus.

Es scheint sehr einfach, aber für mich
weiß ich nicht, wo ich anfangen soll. Das erste, was mir einfiel, war:

web开发

Das
Mobiltelefon des Zustellpersonals ist direkt mit dem Server verbunden

und der geografische Standort sowie der Längen- und Breitengrad werden in Echtzeit auf den Server hochgeladen Speichern Sie den Standort (APP) und ermitteln Sie ihn dann kontinuierlich in einem regelmäßigen Zyklus. Berechnen Sie bei neuen Bestellungen kontinuierlich, ob sich Lieferpersonal in der Nähe der neuen Bestellung befindet, und leiten Sie diese gegebenenfalls an das entsprechende Lieferpersonal weiter. WebSocketredis/mongodb

Die Idee ist sehr einfach, aber es gibt mehrere Probleme:

    Wie erhält das Zustellpersonal den Standort und übermittelt ihn alle paar Sekunden an den Server? Das ist nicht dasselbe wie
  1. , um ihn stabiler zu machen . Das Lieferpersonal ist immer mit dem Fahrrad unterwegs.

    ajax WebSocket

    Verwendet der Server Speicherdaten, um die Standortinformationen des Zustellpersonals zu speichern, unterstützt er aber
  2. , wie überprüft werden kann, wann die nächste Überprüfung durchgeführt wird und wie das Zustellpersonal in der Nähe überprüft wird? Befehl.
  3. redis地理位置索引Wird dadurch eine Menge Daten generiert

    Kann es erreicht werden

Ich weiß nicht, welche Kenntnisse hier erforderlich sind. Ich denke, es sollte diese Technologien geben:
1: nosql, In-Memory-Datenbank
2: Echtzeitkommunikation, Multiprozess, Multi -Thread, Parallelität
3: 队列, 定时程序, CLI, Hintergrundresidenter Dienst
4: Räumlicher Index, räumliche Berechnung, Berechnung des geografischen Standortindex
5: Socket编程, Socket通信, Socket Push, H5 Socket
6: APP-Entwicklung, aber kann ich web H5s Socket verwenden? Das Lieferpersonal muss nicht unbedingt APP verwenden, solange WebSocket stabil ist ( egal wie schwach ich frage) Ein Satz, ajaxOK oder nicht)

Ich hoffe, erfahrene Experten können mir einen Rat geben und mir nicht sagen, ich solle das Wissen nicht aufgeben, aber ich kann es genauso gut erzählen und es mir einzeln anschauen Ich werde wissen, welche Kenntnisse erforderlich sind.

Ergänzende Bilder (Kolibri-Crowdsourcing/Dada-Lieferung):
javascript - Hallo zusammen, ich möchte eine Software ähnlich wie Didi Taxi erstellen. Welche Art von Technologie muss ich verwenden?javascript - Hallo zusammen, ich möchte eine Software ähnlich wie Didi Taxi erstellen. Welche Art von Technologie muss ich verwenden?

Vielen Dank an alle^_^

Zunächst einmal vielen Dank für die Einladung, zu antworten.
Diese Art von Projekt umfasst die Serverseite und die Clientseite
Clientseite
Wenn der Client H5 verwendet, wird empfohlen, socket.io anstelle des integrierten Websockets zu verwenden Bisherige Lösung Viele, und können getrennt und wieder verbunden werden. Es gibt nicht viel Logik im Frontend. Es ist nichts anderes, als regelmäßig Koordinaten abzurufen und dann zum Server zu gehen, während sich die Leute auf der Karte bewegen.
Server

  1. Webserver

  2. Socket.io-Server
    Die Sprache des Webservers ist nicht eingeschränkt. Bitte beachten Sie, dass der Webserver keine komplexen Berechnungen verwendet. Der Webserver ist nur für die Anzeige von Datenbankdaten verantwortlich >

  3. Es gibt viele Hintergrundprogramme, wie z. B. Nachrichtenwarteschlangen und Positionsberechnungen, die einen großen Rechenaufwand erfordern und im Hintergrund platziert werden müssen.

Die Implementierung ist eigentlich nicht kompliziert.

Stellen Sie zunächst eine lange Verbindung her (jede Netzwerktechnologie, jedes Netzwerkframework reicht aus, solange eine lange Verbindung hergestellt werden kann). Wenn ein Befehl eingeht, drückt der Server a Nachricht, um den Client darüber zu informieren, dass der geografische Standort gesendet wird (abgerufen gemäß der Karten-API), und der Server vergleicht ihn dann mit dem geografischen Standort des Kunden, der die Bestellung aufgegeben hat (Sie können ihn selbst vergleichen, wenn die Karte einen bereitstellt API, Sie können den API-Vergleich verwenden, die nächstgelegene Personengruppe auswählen und dann die Bestellung absenden (normale Programmierlogik).


Dann muss die Auftragsverfolgungsfunktion nicht in der ersten Phase implementiert werden (d. h. die Flugbahndaten des Personals müssen nicht gespeichert werden) und kann später implementiert werden. Um die Auftragsverfolgung und Standortinformationen zu implementieren muss alle paar Sekunden gesendet werden (dies kann zwischengespeichert oder dauerhaft gespeichert werden) (um zu sehen, ob es für zukünftige Analysen benötigt wird. Sie können Redis oder Mongodb zum Caching verwenden, was auch immer), und dann aktualisiert der Server die Standortinformationen.

Die verwendete Technologie kann nun grundsätzlich durch Aufruf der Karten-API ausgewählt werden. Wenn Sie das Prinzip kennen möchten, können Sie nach Abschluss des Projekts selbst recherchieren.

Die Logik ist einfach und die in der ersten Phase verwendete Technologie ist nicht zu kompliziert. Wenn Sie zu kompliziert denken, wird es zu einem Überdesign Tabu.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn