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?
Um ein Projekt wie dieses durchzuführen, ähnlich wie Didi Taxi und Meituan Crowdsourcing
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 verbundenWebSocket
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:Ich weiß nicht, welche Kenntnisse hier erforderlich sind. Ich denke, es sollte diese Technologien geben:
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
- Verwendet der Server Speicherdaten, um die Standortinformationen des Zustellpersonals zu speichern, unterstützt er aber
Wird dadurch eine Menge Daten generiert?, 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
地理位置索引
- Ist das möglich?
内存数据库
, In-Memory-Datenbank
2: Echtzeitkommunikation, Multiprozess, Multi -Thread, Parallelitätnosql
3:
,
, 队列
, Hintergrundresidenter Dienst 定时程序
4: Räumlicher Index, räumliche Berechnung, Berechnung des geografischen Standortindex CLI
5:
,
, Socket Push, Socket编程
Socket通信
6: APP-Entwicklung, aber kann ich H5 Socket
s
verwenden? Das Lieferpersonal muss nicht unbedingt web H5
verwenden, solange Socket
stabil ist ( egal wie schwach ich frage) Ein Satz, APP
OK oder nicht) WebSocket
ajax
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):
Vielen Dank an alle^_^
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.
weiß ich nicht, wo ich anfangen soll. Das erste, was mir einfiel, war:Es scheint sehr einfach, aber für mich
web开发
Mobiltelefon des Zustellpersonals ist direkt mit dem Server verbundenund der geografische Standort sowie der Längen- und Breitengrad werden in Echtzeit auf den Server hochgeladen Speichern Sie den Standort (
Die Idee ist sehr einfach, aber es gibt mehrere Probleme: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.WebSocket
redis/mongodb
Wie erhält das Zustellpersonal den Standort und übermittelt ihn alle paar Sekunden an den Server? Das ist nicht dasselbe wie
- , um ihn stabiler zu machen . Das Lieferpersonal ist immer mit dem Fahrrad unterwegs.
, 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.Verwendet der Server Speicherdaten, um die Standortinformationen des Zustellpersonals zu speichern, unterstützt er aber
ajax
WebSocket
Kann es erreicht werden
redis
地理位置索引
Wird dadurch eine Menge Daten generiert
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 H5
s Socket
verwenden? Das Lieferpersonal muss nicht unbedingt APP
verwenden, solange WebSocket
stabil ist ( egal wie schwach ich frage) Ein Satz, ajax
OK 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):
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
Webserver
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 >
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.