Some explanations about netlibre.
parent
c7a3115937
commit
b7ba23827f
|
@ -1031,10 +1031,47 @@ No authorization mechanism prevents the application to access un-authorized data
|
||||||
Since this implementation of DODB is related to the Crystal language (which isn't fully ported to the OpenBSD plateform at-the-moment), this is a problem.
|
Since this implementation of DODB is related to the Crystal language (which isn't fully ported to the OpenBSD plateform at-the-moment), this is a problem.
|
||||||
.
|
.
|
||||||
.
|
.
|
||||||
|
.SECTION Real-world usage: netlib.re
|
||||||
|
|
||||||
|
Netlibre is a service providing free domain names and a website to manage DNS zones.
|
||||||
|
Domains can be shared and transfered between users, so organizations do not have to rely on a single person.
|
||||||
|
Resource records are managed with dedicated interfaces, users are helped as much as possible through many automatic zone verifications.
|
||||||
|
Resource records can be automatically updated via
|
||||||
|
.I tokens ,
|
||||||
|
enabling users to host a service despite having a dynamic IP address.
|
||||||
|
The resource can be updated with a trivial command:
|
||||||
|
.SOURCE Ruby ps=9 vs=10
|
||||||
|
wget "https://netlib.re/token-update/<token>"
|
||||||
|
.SOURCE
|
||||||
|
|
||||||
|
.B "The technical parts" .
|
||||||
|
The service is split into two main components: a user interface (website written in purescript) and a daemon (dnsmanagerd) handling all the server operations.
|
||||||
|
Several "databases" are maintained
|
||||||
|
|
||||||
|
.BULLET Common and RAM-only databases
|
||||||
|
.BULLET database: users, domains, tokens, connected users (for collaborative work)
|
||||||
|
.ENDBULLET
|
||||||
|
|
||||||
|
Performance-wise, netlibre handles between 2 to 3k req/s with a single core, without any optimization.
|
||||||
|
Code is written in an almost naive\*[*] way and still performing fine.
|
||||||
|
.FOOTNOTE1
|
||||||
|
Keep in mind that netlibre uses poll(2), a very old syscall to handle its event loop (from the 80's!); not newest and way faster event facilities such as epoll(2) and the like.
|
||||||
|
.FOOTNOTE2
|
||||||
|
|
||||||
|
Indexes with file-system representation enables quick debugging sessions and to perform a few basic tasks such as listing all the domains of a user which, in practice, is great to have at our fingertips with simple unix tools.
|
||||||
|
|
||||||
.SECTION Conclusion
|
.SECTION Conclusion
|
||||||
The
|
The
|
||||||
.I common
|
.I common
|
||||||
database should be an acceptable choice for most applications.
|
database should be an acceptable choice for most applications.
|
||||||
|
|
||||||
|
.BULLET talk about netlib.re
|
||||||
|
.BULLET triggers are available and can be adapted to do anything, indexes are a simple use of triggers
|
||||||
|
.BULLET common db is great for most applications
|
||||||
|
.BULLET indexes can provide a view of the current state of the database
|
||||||
|
.BULLET ramdb is a great tool, same API than the rest so you can attach indexes to it
|
||||||
|
.ENDBULLET
|
||||||
|
|
||||||
.TBD
|
.TBD
|
||||||
|
|
||||||
.APPENDIX FIFO vs Efficient FIFO
|
.APPENDIX FIFO vs Efficient FIFO
|
||||||
|
|
Loading…
Reference in New Issue