Skip to content
mcyph edited this page Feb 4, 2020 · 3 revisions
  • It would be nice to be able to transparently call methods using REST, so as to allow services to use the same code. If this was to be implemented, it would likely allow requests via GET/POST only using the the encoding defined using server method decorators. Swagger/OpenAPI are interesting, but require a fair amount of boilerplate and would require maintaining documentation multiple times, so are not a goal of this project.
  • Docker integration would be useful. I've tried to keep this in mind for future refactors, making it so that the management interface is separate to the process managers/worker processes. The latter two would be ideally be individual containers communicating with the host (or a dedicated management interface container).
  • The ability to communicate with services using other languages, such as JavaScript, Java or Kotlin using TCP sockets. The reverse direction probably is a lower priority, as I only have so much time to maintain my existing python services. I suspect shared memory and named semaphore locks might be easier to do with something like Rust or GoLang, but would probably only attempt this if python is too slow/won't scale.
  • Currently the HybridLock only allows locking for whole seconds, but it should be easy to support floating point numbers. It also would be nice to allow for setting the maximum "spin" time.
  • Possibly improve spinlock performance. https://probablydance.com/2019/12/30/measuring-mutexes-spinlocks-and-how-bad-the-linux-scheduler-really-is/ https://matklad.github.io/2020/01/04/mutexes-are-faster-than-spinlocks.html and https://www.realworldtech.com/forum/?threadid=189711&curpostid=189723 may be worth referring to. Currently the spinlock is just a simple variable (not atomic/volatile) and it falls back to named semaphores whether it's acquired in time or not. The current one is relatively simple in implementation which in my opinion is a big advantage, and I'm not sure much performance would be gained, except when there are lots of servers for a single service (as each client has its own spinlock/ named semaphore).
Clone this wiki locally