


Hardcore-Sachen: eine Reise zur Rekonstruktion von mehr als 30.000 Codezeilen in einem Kernsystem
01 Lassen Sie uns zunächst über den historischen Ballast dieses Systems sprechen
Unsere Werbemaschine durchlief vor dieser Rekonstruktion etwa eineinhalb Jahre der Iteration. In der Anfangsphase war sie auf Suchszenarien ausgerichtet, mit einem Einzelgeschäft und klare Prozesse.
1. Die Geschäftsszenarien wurden zunehmend komplexer. Zusätzlich zur Suchmaschinenwerbung musste sie auch Informationsflussempfehlungen und ähnliche Empfehlungsszenarien unterstützen.
2. Der Werbeverkehr beginnt rasant zuzunehmen. Neben der Erfüllung der funktionalen Anforderungen muss auch die Leistung berücksichtigt werden.
Nach dem Aussortieren kann der größte Teil der Logik der gesamten Engine gemeinsam genutzt werden, daher haben wir ein Hauptgerüst definiert und die erweiterbaren Teile abstrahiert. Auf diese Weise kann jedes Szenario entsprechend den Besonderheiten seines eigenen Unternehmens bestimmte öffentliche Schnittstellen implementieren. Darüber hinaus haben wir aus Performance-Sicht die Lesbarkeit des Codes geopfert und einige Logik parallelisiert.
Mit der Geschäftsentwicklung begann das Suchszenario in eine Phase schneller Iteration einzutreten, in der immer mehr neue Strategien hinzugefügt wurden und unser Hauptrahmen zu diesem Zeitpunkt allmählich unflexibel wurde.
1 Um mit der speziellen Suchlogik kompatibel zu sein, müssen wir in anderen Szenarien verschiedene Wenn-Urteile hinzufügen, um diese Logiken zu umgehen.
2. Es gibt immer mehr Werbestrategien, insgesamt Dutzende. Wenn das Framework seine klare Struktur verliert, beginnt die Umsetzung einiger Strategien, es mangelt an hierarchischer Unterteilung und einem steckbaren abstrakten Design.

Der Wendepunkt kam Ende 2019. Aufgrund der Besonderheiten des Werbegeschäfts begann der Verkehr natürlich zu sinken. Darüber hinaus konzentrierte sich das Produktbetriebsteam auf die Arbeitsplanung für das zweite Jahr , was uns sehr geholfen hat, mit dem Wiederaufbau zu beginnen.
Wir haben die Bauzeit auf 1 Monat festgelegt und am Ende war es nur einen Tag später als erwartet online. Obwohl zwei Online-Probleme auftraten, wurden diese rechtzeitig während der Graustufenphase entdeckt und behoben, und es gab keine Offline-Probleme Unfall verursacht wurden.
02 Welche Vorbereitungen haben wir vor dem Refactoring getroffen?
Die Menge des dieses Mal überarbeiteten Codes ist sehr groß, mehr als 30.000 Zeilen, und es handelt sich um den Kernmotor des Werbesystems. Vor dem Start können wir mit folgenden Schwierigkeiten rechnen:
1. Widerstand auf der Unternehmensseite: Diese Umstrukturierung kann zwar langfristige F&E-Effizienz bringen Das Geschäftseinkommen kann nicht direkt verbessert werden, und der Entwicklungszyklus wird nicht zu kurz sein. Wie können wir Unterstützung von Kommilitonen aus der Wirtschaft erhalten?
▍Lassen Sie alle die Schmerzpunkte sehen
Wie bereits erwähnt: Mit der Geschäftsiteration ist das Hauptgerüst unserer Werbemaschine verschwommen und Dutzende Werbestrategien sind in verschiedenen Geschäftsszenarien mit chaotischen Konfigurationen verstreut.
Als Reaktion auf diese beiden Schwachstellen haben wir einen Monat im Voraus begonnen, das bestehende Geschäft zu sortieren, alte Codes zu lesen und frühere Anforderungsdokumente durchzusehen. Schließlich haben wir die Kernprozesse und Werbestrategien verschiedener Szenarien in ein A eingeteilt klare Form.
Diese Tabelle ermöglicht es Technologie und Produkten zum ersten Mal, das Gesamtbild unseres Motorteils klar zu erkennen und die Komplexität des Geschäfts und die aktuellen technischen Engpässe zu verstehen.
▍Nachdem wir die Ziele und Werte des Refactorings geklärt hatten und jedem die Schwachstellen bewusst gemacht hatten, planten wir zwei Kernziele für dieses Refactoring:
1 des Hauptrahmens: Modularisieren Sie den Hauptprozess, definieren Sie die Protokolle der oberen und unteren Schicht neu und stellen Sie sicher, dass jede Ebene auch intern abstrahiert werden muss und eine gute Skalierbarkeit aufweist.
2. Flexible und konfigurierbare Strategien: Werbestrategien werden nach Geschäftsabsichten klassifiziert und abstrahiert, die Ausführungsbedingungen der Strategien sind dynamisch konfigurierbar und die Strategien können nach Belieben ein- und ausgeschaltet werden.
Darüber hinaus haben wir die erwarteten Vorteile verfeinert, die nach Erreichen dieser beiden Kernziele erzielt werden können:
1. Technische Vorteile: Die Codestruktur ist klarer, einfacher zu verstehen und zu warten; die Skalierbarkeit wird verbessert und die Effizienz der Engine-Entwicklung wird weiter verbessert.
2. Geschäftsvorteile: Strategien können eine detailliertere Konfiguration und Erweiterung ermöglichen und sind geschäftsfreundlicher. Eine verbesserte F&E-Effizienz kann die Geschäftsiteration weiter beschleunigen.
Nachdem der Wert des Wiederaufbaus für alle synchronisiert wurde, steigert er die Begeisterung aller weiter und gibt allen eine stärkere Motivation zur Teilnahme. ▍Kontrolle des Gesamtrhythmus
Die Kontrolle des Gesamtrhythmus ist ebenfalls ein sehr wichtiger Teil, damit jeder eine Zeitvorstellung für diese Angelegenheit haben kann.
Zunächst haben wir die Bauzeit auf 1 Monat festgelegt, einerseits auf die maximal akzeptable Durchlaufzeit, andererseits auf eine schnelle Lösung aus technischer Sicht Das Frühlingsfest rückt näher und wir müssen uns beeilen, bevor das Unternehmen geschlossen wird. Gehen Sie online, bevor Sie online gehen, und reservieren Sie einen Puffer von 1-2 Wochen, um unerwartete Situationen zu vermeiden.
Darüber hinaus haben wir mit der Unternehmensseite eine Vereinbarung getroffen: Während der Umbauzeit werden nicht dringende Anforderungen für den Motorteil nicht akzeptiert. Dadurch können parallele Entwicklungs- und Codekonflikte minimiert werden und das Team kann sich stärker konzentrieren. 03 Welche Erfahrungen können Sie während des Implementierungsprozesses teilen?
Dieses Refactoring verlief so reibungslos, dass ich 4 wertvolle Erfahrungen mit Ihnen teilen kann. 1. Hochwertige technische Designlösungen
Dies ist auf die täglichen Anforderungen zurückzuführen. Wir entwerfen technische Lösungen für Projekte mit einem Entwicklungszyklus von mehr als 3 Tagen. Diese Rekonstruktion ist sicherlich keine Ausnahme.
Die Gesamtarchitektur des Frameworks, das Protokolldesign zwischen Modulen und das Skalierbarkeitsdesign der Strategie stehen im Mittelpunkt dieser technischen Lösung, die das Team nicht weniger als dreimal besprach.
Nachdem der große Plan fertiggestellt war, verfeinerte das Team die öffentlichen Teile wie Datenbank, Schnittstellenfelder, Cache-Struktur, vergrabene Protokollpunkte usw. weiter. Da es sich um eine kollaborative Entwicklung mit mehreren Personen handelt, stimmte das Team zu, Dokumente als zu verwenden Die Kommunikationsschnittstelle und Dokumente bleiben immer mit Ihrem Code synchron.
Unter solch hohen Anforderungen erstellte das Team ein technisches Lösungsdokument mit mehr als 5.000 Wörtern und insgesamt 36 Seiten, das eine gute Grundlage für die allgemeine Qualitätssicherung legte. 2. Refactoring des Framework-Codes
Dieser PR ist sehr wichtig und der wichtigste Schritt von der Implementierung unserer technischen Lösung bis zum Code. Wir haben die rekonstruierte Paketstruktur, die Modulaufteilung, die API-Definition zwischen den einzelnen Schichten und die Abstraktion verschiedener Werbestrategien geklärt und dabei zunächst die Implementierungsdetails ignoriert.
Auf diese Weise wird im Grunde der Hauptcode gebildet, der unser ideales Framework klar darstellen kann. Anschließend organisierten wir mehrere zentrale Codeüberprüfungen und bildeten schließlich eine einheitliche Meinung.
Mit diesem Schritt kann sehr gut vermieden werden, dass man sich zu früh mit den Implementierungsdetails beschäftigt, was zu einer unzureichenden Aufmerksamkeit für das Hauptframework führt und eine spätere Überarbeitung tatsächlich die Effizienz beeinträchtigt.
3. Häufige Kommunikation und gepaarter Codeüberprüfungsmechanismus
Nach Eintritt in die detaillierte Implementierungsphase ist ein sehr wichtiger Punkt: Verständnis der vorhandenen Logik. Der Motorcode wurde anderthalb Jahre lang von vielen Menschen in der Geschichte entwickelt, aber dieses Mal beteiligten sich nur drei Studenten an der Rekonstruktion.
Wenn wir während des gesamten Prozesses auf unklare Codelogik stießen, haben wir wiederholt kommuniziert und überprüft und keine subjektiven Vermutungen angestellt. Diese Vorsicht ist tatsächlich sehr wichtig.
Darüber hinaus haben wir für die Codeüberprüfung Studenten zugewiesen, die mit diesem Geschäft vertraut sind und für jedes Modul verantwortlich sind. Sie werden paarweise gebildet und der Mechanismus ist flexibel.
4. Effektiver Testplan
Refactoring wurde nicht durchgeführt, zuerst testen. Dieses Prinzip wird im Buch „Refactoring“ hervorgehoben und steht auch im Mittelpunkt unserer Diskussion dieser technischen Lösung. Ich werde es hier im Detail hervorheben.
Zunächst haben wir in der Anfangsphase eine Vereinbarung getroffen: keinen alten Code anzufassen und ein komplett neues Paket für den Wiederaufbau zu erstellen. Dadurch ist es einfach, die Ergebnisse vor und nach der Rekonstruktion zu vergleichen und gleichzeitig Online-Graustufenexperimente durchzuführen.
In Bezug auf den Testplan lohnt es sich, aus den folgenden 4 Punkten zu lernen:
1. Durch dieses Refactoring werden keine funktionalen Anpassungen vorgenommen, also das Verhalten des Äußeren Wenn sich die API ändert, ist diese End-to-End-Testmethode die wichtigste Methode für F&E- und QS-Tests.
2. Rauchtest: QA-Studenten stellen Rauchfälle zur Verfügung und F&E-Studenten führen den Rauchtest durch. Vor dem F&E-Test müssen alle Rauchfälle bestanden werden. Das ist in den meisten Internetunternehmen nicht üblich, bei großen Projekten aber absolut effektiv.
3. Dual-Prozess-Überprüfung der Sandbox-Umgebung: Wie bereits erwähnt, bleibt der Code vor und nach unserer Rekonstruktion erhalten, sodass die Eingabeparameter der Online-Umgebung über Skripte als Fälle erfasst werden können und dann die API-Rückgaben zurückgegeben werden Auf automatisierte Weise werden die Felder einzeln verglichen.
4. Graustufenexperiment in der Online-Umgebung: Graustufen sind für die Rekonstruktion sehr wichtig. Wir verwenden die vorhandene ABTest-Plattform, um den Graustufenverkehr schrittweise von 5 % über 10 % auf 30 % und schließlich auf 100 % freizugeben Es wurde ein sehr vorsichtiges Tempo der Volumenexpansion festgelegt und anschließend durch Protokolle und die Überwachung von Geschäftsindikatoren überprüft.
Am Ende geschrieben
Überprüfung des gesamten Wiederaufbauprozesses, zusammengefasst in den folgenden 7 Schlüsselpunkten:
1. Nutzen Sie die Gelegenheit zur Umstrukturierung 2. Frühzeitiges Sortieren ist sehr wichtig, finden Sie zuerst die Ziele und Werte, um alle zu begeistern ist nicht für den Langzeitbetrieb geeignet, es ist nicht geeignet. Parallel zum Geschäft sind hochwertige technische Lösungen erforderlich Seien Sie sorgfältig und verantwortlich für jede Codezeile. Der wichtigste Faktor sind natürlich die Menschen. Bei der Umgestaltung von Großprojekten wird die Zusammenarbeitsfähigkeit des Teams extrem auf die Probe gestellt .
Das obige ist der detaillierte Inhalt vonHardcore-Sachen: eine Reise zur Rekonstruktion von mehr als 30.000 Codezeilen in einem Kernsystem. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Die allgemeine Matrixmultiplikation (GEMM) ist ein wesentlicher Bestandteil vieler Anwendungen und Algorithmen und außerdem einer der wichtigen Indikatoren zur Bewertung der Leistung der Computerhardware. Eingehende Forschung und Optimierung der Implementierung von GEMM können uns helfen, Hochleistungsrechnen und die Beziehung zwischen Software- und Hardwaresystemen besser zu verstehen. In der Informatik kann eine effektive Optimierung von GEMM die Rechengeschwindigkeit erhöhen und Ressourcen einsparen, was für die Verbesserung der Gesamtleistung eines Computersystems von entscheidender Bedeutung ist. Ein tiefgreifendes Verständnis des Funktionsprinzips und der Optimierungsmethode von GEMM wird uns helfen, das Potenzial moderner Computerhardware besser zu nutzen und effizientere Lösungen für verschiedene komplexe Computeraufgaben bereitzustellen. Durch Optimierung der Leistung von GEMM

Am 29. Juli nahm Yu Chengdong, Huawei-Geschäftsführer, Vorsitzender von Terminal BG und Vorsitzender von Smart Car Solutions BU, an der Übergabezeremonie des 400.000sten Neuwagens von AITO Wenjie teil, hielt eine Rede und kündigte an, dass die Modelle der Wenjie-Serie dies tun werden Dieses Jahr auf den Markt kommen Im August wurde die Huawei Qiankun ADS 3.0-Version auf den Markt gebracht und es ist geplant, die Upgrades sukzessive von August bis September voranzutreiben. Das Xiangjie S9, das am 6. August auf den Markt kommt, wird erstmals mit dem intelligenten Fahrsystem ADS3.0 von Huawei ausgestattet sein. Mit Hilfe von Lidar wird Huawei Qiankun ADS3.0 seine intelligenten Fahrfähigkeiten erheblich verbessern, über integrierte End-to-End-Funktionen verfügen und eine neue End-to-End-Architektur von GOD (allgemeine Hinderniserkennung)/PDP (prädiktiv) einführen Entscheidungsfindung und Kontrolle), Bereitstellung der NCA-Funktion für intelligentes Fahren von Parkplatz zu Parkplatz und Aktualisierung von CAS3.0

Die beste Version des Apple 16-Systems ist iOS16.1.4. Die beste Version des iOS16-Systems kann von Person zu Person unterschiedlich sein. Die Ergänzungen und Verbesserungen im täglichen Nutzungserlebnis wurden auch von vielen Benutzern gelobt. Welche Version des Apple 16-Systems ist die beste? Antwort: iOS16.1.4 Die beste Version des iOS 16-Systems kann von Person zu Person unterschiedlich sein. Öffentlichen Informationen zufolge gilt iOS16, das 2022 auf den Markt kam, als eine sehr stabile und leistungsstarke Version, und die Benutzer sind mit dem Gesamterlebnis recht zufrieden. Darüber hinaus wurden die neuen Funktionen und Verbesserungen des täglichen Nutzungserlebnisses in iOS16 von vielen Benutzern gut angenommen. Insbesondere in Bezug auf die aktualisierte Akkulaufzeit, Signalleistung und Heizungssteuerung war das Feedback der Benutzer relativ positiv. Betrachtet man jedoch das iPhone14

Am 11. April kündigte Huawei erstmals offiziell den 100-Maschinen-Upgradeplan für HarmonyOS 4.2 an. Dieses Mal werden mehr als 180 Geräte an dem Upgrade teilnehmen, darunter Mobiltelefone, Tablets, Uhren, Kopfhörer, Smart-Screens und andere Geräte. Im vergangenen Monat haben mit dem stetigen Fortschritt des HarmonyOS4.2-Upgradeplans für 100 Maschinen auch viele beliebte Modelle, darunter Huawei Pocket2, Huawei MateX5-Serie, Nova12-Serie, Huawei Pura-Serie usw., mit der Aktualisierung und Anpassung begonnen, was bedeutet, dass dass es mehr Benutzer von Huawei-Modellen geben wird, die das gemeinsame und oft neue Erlebnis von HarmonyOS genießen können. Den Rückmeldungen der Benutzer zufolge hat sich das Erlebnis der Modelle der Huawei Mate60-Serie nach dem Upgrade von HarmonyOS4.2 in allen Aspekten verbessert. Vor allem Huawei M

Ein Computerbetriebssystem ist ein System zur Verwaltung von Computerhardware und -software. Es ist auch ein Betriebssystemprogramm, das auf allen Softwaresystemen basiert. Welche Computersysteme gibt es also? Im Folgenden erklärt Ihnen der Herausgeber, was Computer-Betriebssysteme sind. Das sogenannte Betriebssystem dient der Verwaltung von Computerhardware und Softwareprogrammen. Sämtliche Software wird auf Basis von Betriebssystemprogrammen entwickelt. Tatsächlich gibt es viele Arten von Betriebssystemen, darunter solche für den industriellen Einsatz, den kommerziellen Einsatz und den persönlichen Gebrauch, die ein breites Anwendungsspektrum abdecken. Im Folgenden erklärt Ihnen der Herausgeber, was Computer-Betriebssysteme sind. Welche Computer-Betriebssysteme sind Windows-Systeme? Das Windows-System ist ein Betriebssystem, das von der Microsoft Corporation in den Vereinigten Staaten entwickelt wurde. als die meisten

Linux und Windows sind zwei gängige Betriebssysteme, die das Open-Source-Linux-System bzw. das kommerzielle Windows-System darstellen. In beiden Betriebssystemen gibt es eine Befehlszeilenschnittstelle, über die Benutzer mit dem Betriebssystem interagieren können. In Linux-Systemen verwenden Benutzer die Shell-Befehlszeile, während Benutzer in Windows-Systemen die cmd-Befehlszeile verwenden. Die Shell-Befehlszeile im Linux-System ist ein sehr leistungsfähiges Tool, das fast alle Systemverwaltungsaufgaben erledigen kann.

Ausführliche Erläuterung der Methode zum Ändern des Systemdatums in der Oracle-Datenbank. In der Oracle-Datenbank umfasst die Methode zum Ändern des Systemdatums hauptsächlich das Ändern des Parameters NLS_DATE_FORMAT und die Verwendung der Funktion SYSDATE. In diesem Artikel werden diese beiden Methoden und ihre spezifischen Codebeispiele ausführlich vorgestellt, um den Lesern zu helfen, den Vorgang zum Ändern des Systemdatums in der Oracle-Datenbank besser zu verstehen und zu beherrschen. 1. Ändern Sie die NLS_DATE_FORMAT-Parametermethode. NLS_DATE_FORMAT sind Oracle-Daten

Nach der Installation des Win10-Betriebssystems auf unseren Computern kann es bei einigen Freunden zu einem System-Bluescreen und der Fehlermeldung 0xc0000428 kommen, wenn sie den Computer verwenden. Machen Sie sich über solche Probleme keine Sorgen. Der Redakteur ist der Meinung, dass wir das Problem zunächst auf dem System beheben können, um festzustellen, ob es durch Hardware oder Software verursacht wird, und das Problem dann gezielt lösen können. Schauen wir uns an, was der Editor für die spezifischen Details getan hat ~ So lösen Sie das Problem von 0xc0000428 im Win10-System 1. Starten Sie kontinuierlich neu und erzwingen Sie dann dreimal das Herunterfahren, damit das Win10-System automatisch in die erweiterten Startoptionen wechselt. 2. Öffnen Sie in der Benutzeroberfläche der erweiterten Startoptionen des Win10-Systems nacheinander: Fehlerbehebung – Erweiterte Optionen – Starteinstellungen in den Starteinstellungen
