A solid Distributed System Awaits.
Ein Rückblick von Mark Miller wie die heutige SolrCloud einst das Licht der Welt erblickte und welche neuen Features uns in den kommenden Releases erwarten wird.
Der Grundstock für die heutige SolrCloud wurde 2009 von Mark Miller zusammen mit Yonik Seeley gelegt. Sie entschieden sich, die bewerte Master-Slave Architektur durch eine robuste Cloud Architektur zu erweitern.
Doch die Entwicklungen gingen nur stockend voran. Zwar konnten notwendige Features auf Suchseite rasch vorangetrieben werden, die notwendigen Anpassungen auf Indexseite gingen nur zäh von der Hand.
2011 wurde der Fokus verstärkt auf die Fertigstellung der Indexseite gelegt um schnellstmöglich ein funktionierendes System zu releasen, damit Feedback der bestehenden Community in die weiteren Entwicklungen mit einfließen konnte.
Dies gelang 2012 mit der ersten Solr Version 4.0.
Leider waren die kommenden Jahre aus Entwicklersicht eher einsame Jahre. Die Entwicklergemeinde um das SolrCloud-Projekt war eher überschaubar und vielmehr war die kleine Community damit beschäftigt neue Features zu adressieren, als bestehende arbeiten letztlich abzuschließen.
Mark Miller arbeitete von 2012-2016 aktive an den SolrCloud Erweiterungen. Er legte nicht nur den Grundstock für die heutige SolrCloud, er war auch die treibende Kraft bezüglich Features wie MapReduce und HDFS-Index-Integration.
Nach dem Solr 4.0 Release und der damit verbundene Einlaufphase ging die Anzahl der Committer stetig nach oben. Ausstehende Arbeiten sowie neue Features konnten nun mit „neuer“ Hilfe schneller vorangetrieben werden und für Mark wurde es Zeit sich neuen Aufgaben zu widmen.
Er beschreibt das Ganze mit folgenden Worten:
„I had Solr coming out of my ears. The stars had aligned for me to take a back seat for a while and so I did.“
Zurück im Jetzt – Wir schreiben das Jahr 2018 und Mark Miller ist wieder an seiner alten Wirkungsstätte zurückgekehrt!
Voller Motivation beschreibt er folgende zukünftige Weiterentwicklungen, die die SolrCloud performanter, stabiler und vor allem besser machen sollen:
Asynchroner Java Client
Die aktuelle SolrJ Implementierung soll um asynchrone Request-Features erweitern werden.
HTTP/2 Support
Mittels HTTP/2 ist es mögliche parallele Requests über eine einzelne Verbindung zu senden.
Damit können Features wie Futures und asynchrone Callbacks realisiert werden.
SolrCloudClient – Es kann nur Einen geben
Der SolrCloudClient soll alle anderen Clients ablösen. Darüber hinaus soll dieser mit mehr Fokus auf Performance neuimplementiert werden.
ConcurrentUpdateSolrClient soll entfernt werden
Der aktuell verwendete CUSC ist single threaded. Dieser soll zukünftig mit dem neuen, obigen Http2SolrClient ersetzt werden. Somit können Updates effizienter und mit mehr Optionen ausgestattet werden.
Sensible Resource Usage
Zukünftig sollen resource-pools besser verwaltet werden. Dies beugt memory-leaks vor und lässt Spielraum für mehr application-tuning.
Unnötige Recoveries entfernen
Recoveries sind sehr kostspielige Operationen und sollen deshalb nur noch dann stattfinden, wenn diese wirklich notwendig sind. Zusätzliche Verbesserungen bezüglich Recovery-Performance sind ebenfalls geplant.
Request Throttling und Management
Zukunftsmusik, aber dennoch auf der Wunschliste, ist ein intelligenter Request-Layer um eingehende Requests zu priorisieren, zu throtteln, oder sogar ganz zu entfernen (drop). Dies hat positive Auswirkungen auf die generelle Stabilität und fördert ein besseres Ressourcenmanagement!
Mark Miller is back und ich freue mich schon jetzt auf all seine Verbesserungen die Er im Gepäck hat!
Vielen Danke fürs lesen und wen es interessiert, hier geht’s noch zum Originalartikel.