SteemWorld News ~ Big Server-Update ahead!

in #steemworld7 years ago (edited)

I have made many major changes/optimizations on the SteemWorld API in the recent week and I will transfer them to the main server in the coming days. The implementation process may lead to some hours of downtime for a few features on SteemWorld. Just in case there should occur issues for some time, you now know the reason for it.

As mentioned before, I have built my own solution for handling and saving blocks without the need of running a steemd instance on my server. Since I have very limited RAM and disk space available and no money for a high performance server, I was on a mission to find a better way for accessing and storing the block transactions and I am very happy with the results.

New Compression Technique

A regular steemd instance uses a 'block_log' file to store the raw blocks in an uncompressed way. Additionally it needs to keep the parsed operations in RAM (or shared memory file on disk, if you can't shit RAM) which is not possible for me with my available hardware (I would need to run a full node for the things that I want to implement in the coming months). I am thinking about storing also some of the 'virtual operations' on disk but that is a different topic and it might get a bit to technically for most of you to talk about this stuff here.

Steemd block_log : ~ 95 GB
My solution takes : ~ 11 GB

Dude, how did you compress a 95 GB file to 11 GB when even the best compression tools like 'xz -z -9' come to a resulting file size of ~ 34 GB?

I will explain it more in detail in one of my next posts. Compressing redundant field identifiers is one of the major reasons for such a small file size and of course I am not saving data that is only being required for consensus features. Nevertheless my data sets contain all 'non-virtual' operations. My parsing routine decompresses only the data that is currently being needed so that my server will never run out of space. Compression takes place from a cronjob in a separate process (because it takes a while). More details soon ;)

Cached API Requests

One 'experimental' optimization that will be activated in the coming days is to make use of 'Cached API Requests' for the users on SteemWorld. Instead of requesting most of the general data directly from the public nodes for each client every 30 seconds, my server will do these requests only once, cache the results and send the cached data to the client. I am not sure if my server is able to handle the huge amount of requests but I think it is possible. If this works as expected, there will be much less requests to the public nodes from my tool.

I am glad to see that Steemit is working on solutions for the upcoming problems regarding to memory usage and (even if I have built my own data service) I think that SBDS (Steem Blockchain Data Service) is a big step in the right direction!

Multiple SteemWorld Tabs

I have thought about how to minimize the number of server requests even more and came to the idea of using browser cookies for request caching. Some users like to open 5 or more SteemWorld tabs for different accounts at the same time and this of course multiplies the number of requests for refreshing the data by the number of open tabs. For these cases I want to store the result of each (main) request in a cookie so that the scripts in the other tabs receive the data from there instead of making new requests all the time. This will also get implemented in the coming week.

Thanks for your support!

Now back to work... 'Delegation History' coming soon! I wish you could see how many things happen in background daily and how much work it is to build and provide such a stable tool.

STEEM to the moon! We are living in exciting times, friends ;)
Much love and peace to all of you ~

Sort:  

First of all I love your work and want you to continue steemworld forever! I use it daily and without it being a steemian would suck.

I think your reward pool percentage calculation might be wrong. You should contact @dragosroua , he fixed it on his steem.supply page.
It could be the same or a similar calculation error.

Thanks! I'm thinking about removing the reward fund percentage completely because I realized that it can't be calculated based on a value from which the reward has already been subtracted. Maybe it would be better to show a percentage for how much of the total pending rewards goes to the user.

The calculation of a correct value is a bit more difficult than one might think, because of the SBD payout. All rewards come in SBD (worth of 1 USD) but the totals in the blockchain are measured in STEEM. I will think about all this when I find time in the coming weeks... :)

I know, it is really complicated. I could not do it if I tried...

Klasse Arbeit lieber Chiller !
Wir leben allerdings in sehr interessanten Zeiten ;)
Mach nur weiter so, bald kommt niemand mehr drumrum dein Tool zu benutzen!
LG
Jan

@steemchiller for witness!!! a lot of people would vote for you. the time has come. go for it!

Thanks @pawos! I've spent days to get steemd working and came to the conclusion that it sucks (sometimes). I don't like to run software on my server that comes with unforeseeable behaviour and sometimes stops working without informing me about it. The mission not to miss blocks is a stress factor I don't want to have in my life and the resources it currently takes would definitely require a new server. I'm waiting for a more stable version and a possibility to create kind of 'checkpoints' automatically so that I don't need to wait a day for the blockchain replay if steemd got stuck for some unknown reasons.

Lieber @steemchiller,

kann es sein, dass die Mentions nicht mehr funktionieren?

Lieben Gruß, double-u

Danke für den Hinweis @double-u! Ich habe die Ursache gefunden und wie es aussieht, muss ich doch die Texte manuell nach @ durchsuchen, da in z.B. auf busy.org erfassten Kommentaren das Feld "users" nicht mit den verknüpften Usern gefüllt wird. Eigentlich ist das Feld dafür vorgesehen, damit der Zugriff auf diese Information schneller ablaufen kann und nicht jeder Entwickler eine Routine für die Ermittlung der Namen aus dem reinen Text erstellen muss...

Auf Steemit funktioniert das, daher wirst du meine Mention mit Sicherheit auch erhalten. Bin gerade etwas ratlos, aber ich denke, es führt für mich kein Weg daran vorbei, das auch manuell zu ermitteln. Ich werde das aber in meinem nächsten Post mal ansprechen, da ich finde, dass die verschiedenen Frontends wenigstens die Daten einheitlich erfassen sollten.

LG, Chiller

Danke für deine so schnelle Reaktion, lieber Chiller!

Ja, die Erwähnung von dir von eben wurde mir gemeldet.

Schönes Wochenende!

Und lieben Gruß, double-u

Lieber Chiller,

ich hoffe, deine Arbeiten gelingen dir gut!

Nur für den Fall, dass du es noch nicht selbst schon bemerkt hast, möchte ich dir sagen:
Die "Recent Posts" gehen seit heute Nachmittag nicht auf.

Lieben Gruß

Danke dir für die Info double-u! Ich habe auch schon bemerkt, dass einige (aktuell fast alle) Nodes wieder nicht zuverlässig funktionieren. Da habe ich leider keinen Einfluss drauf, ich bekomme nicht mal einen Fehler zurück. Der Request scheint einfach unendlich lange zu dauern, so dass ich es nicht ohne weiteres abfangen kann.

Wechsle mal zu pevo.science oder api.steemit. Dort sollte es funktionieren. Allerdings werden bei pevo die alten Votes nicht angezeigt, weil die Node diese nicht bereitstellt. Wenn das so weitergeht, werde ich früher oder später alle Daten von meinem Server laden, denn dann läuft es wenigstens zuverlässig...

LG, Chiller

Danke für deine Antwort!

Das hört sich verständlicherweise ein wenig verärgert an :(

Ich kann es auch oft nicht fassen, dass manche "Hänger" auf Steemit sooo lange bestehen. Ich befürchte, das kann einem auch niemand erklären.

Wenn das so weitergeht, werde ich früher oder später alle Daten von meinem Server laden, denn dann läuft es wenigstens zuverlässig...

Ich vermute auch ... so wird es enden ;-)

Hast du deinen Sonntags-Job eigentlich noch?

Lieben Gruß

PS: Mit api.steemit sind sie wieder da. Auf diese Idee hätte ich ja auch selbst kommen können, die Quelle mal zu wechseln. Aber immerhin beherzige ich seit deinen Hilfen in der Vergangenheit immer, bei allen Funktionsbeeinträchtigungen erst mal die Browserdaten zu löschen und deine SteemWorld neu zu starten ;-)

Ich befürchte, das kann einem auch niemand erklären.

Wir brauchen definitiv mehr Full Nodes, um die wachsende Anzahl an Anfragen bewältigen zu können. Das Problem ist, dass man kein Geld damit verdient eine solche Node bereitzustellen und man einen super schnellen Server dafür braucht, der monatlich ein paar Hunderter mehr kostet. Eine Witness Node braucht nicht so viel Speicher und ist daher günstiger, aber kann halt auch nicht für solche Tools wie SteemWorld verwendet werden. Normalerweise müsste sich jemand der 'oberen' Schicht mal darum kümmern und Gelder dafür bereitstellen, denn freiwillig wird kaum jemand eine solche 'Power Node' kostenlos zur Verfügung stellen wollen. Selbst viele der Top Witnesses, die ja bereits in Geld schwimmen, scheint das nicht wirklich zu kümmern, obwohl sie das locker bezahlen könnten.

Dieses "warten wir mal ab wie langsam wir noch werden, bevor wir etwas unternehmen" stört mich auch gerade ein bisschen, da es unter anderem auch große Investoren abschrecken könnte. Aber hoffen wir mal das Beste und wenn es bald nicht stabiler wird, muss ich mir selbst etwas überlegen. Ich kann aktuell jede Woche die Reihenfolge der Nodes für SteemWorld ändern und es dauert nur ein paar Tage bis einige wieder nicht funktionieren. So gut wie immer direkt nachdem ich einen neuen Post erstellt habe...

Hast du deinen Sonntags-Job eigentlich noch?

Noch ja, aber ich werde ihn in den nächsten Tagen kündigen. Muss das dann aber noch ca. 4 Wochen lang machen wegen der Kündigungsfrist. Auch wenn ich den Job eigentlich gerne gemacht habe, bin ich zu dem Entschluss gekommen, dass feste Termine einfach nichts für mich sind. Da Freunde und der Großteil meiner Familie meistens nur am Wochenende Zeit haben, ist es doch besser in dieser Zeit flexibel zu sein, da man sonst so gut wie niemanden mehr sieht (was bei mir jetzt schon seit längerem der Fall war).

Liebe Grüße

... und man einen super schnellen Server dafür braucht, der monatlich ein paar Hunderter mehr kostet.

Ich möchte dich nicht aufhalten. Daher nur kurz der Gedanke.

Das wäre doch sicher inzwischen möglich bei der hohen Nutzerzahl, die du hast, wenn jeder Nutzer monatlich eine Nutzungsgebühr zahlen würde.

Lieben Gruß

Great resource. I use it every day.

I'm curious if the recent @steemitblog announcement concerning Hivemind has any relevance to the direction you are taking with an external database.

https://busy.org/@steemitblog/update-communities-hivemind

Hivemind may be a step in the right direction but I don't think that it will change much for me and my databases. It seems to store a lot of community data in the 'custom_json' operation and this proves that there is much more possible with the steem blockchain than many people might have thought before.

Since I'm already indexing the data in my own way, I'm currently not in the need of using Hivemind, but it is indeed a very interesting 'project' for many developers out there. I'm curious to see where the journey will take us to :)

Sounds awesome! Even though I'm not that familiar with all the tech stuff;)
Thanks for your work for the community and your tool is always open in a tab, so I can check all ongoing activity right away.

Thanks! Yes, this one really contains much tech stuff. That's what I'm going through currently :) There is not much to show when most of my work is happening on the server side but I think my next post will be more about the front-end and I then can show a few nice screenshots again ;)

I wish you could see how many things happen in background daily and how much work it is to build and provide such a stable tool.

I have often thought this exact same thing!

I can run my laptop just fine, but when it comes to doing what you do, I have no damn clue :) So to me, you are a superstar and I totally appreciate that you do all of this to make everyone else's life easier on steemit! There should be awards for that. I'm always telling anyone who'll listen how awesome @steemworld is, and I've noticed that you always come around when you see your name mentioned and give me a sweet upvote. Seriously, it's something I never expect and I really do appreciate that. It shows me you are a real guy!

Cheers and thank you again for all you do!

Thank you for what you're doing with SteemWorld. Great tool and I love it. Keep up the good work! Upvoted!

Nice work man! its very impressive all of what you're doing in the back-end. Even though I'm quite new to the space, I have already been using your tool. Thanks for your that contribution and all of the other tools and knowledge that I'll be able to engage with through your page. Already following you. Hope we can keep in touch, as I am interested in learning from all of your great content.
Cheers!

@DeXvid

Thank you for providing such a details analysis especially the pie chart on SteemWorld[dot]org. I have been using it daily. A witness vote as my appreciation for your hard work. Cheers.