ponzu-cms / ponzu

Headless CMS with automatic JSON API. Featuring auto-HTTPS from Let's Encrypt, HTTP/2 Server Push, and flexible server framework written in Go.
https://docs.ponzu-cms.org
BSD 3-Clause "New" or "Revised" License
5.7k stars 385 forks source link

Does it uses "fasthttp" router ? or "net/http" ? Any Benchmark ? #175

Closed rebootcode closed 7 years ago

rebootcode commented 7 years ago

Hi, I wanted to know if this project uses "fasthttp" router or default "net/http"

Also, is there any benchmark against other framework like "golang gramework" or "golang kataras/iris" ?

Thanks

nilslice commented 7 years ago

Hi, I wanted to know if this project uses "fasthttp" router or default "net/http"

Only net/http is used throughout the codebase, but it would be possible to change it out for fasthttp in performance critical parts. Though, I'm sure there will be issues where Ponzu uses HTTP/2 and where certain type assertions are made that fasthttp may not support.

Also, is there any benchmark against other framework like "golang gramework" or "golang kataras/iris" ?

There are currently no benchmarks, but if you'd like to build a project and run some against a reasonable query of data, I'd like to see them. I am waiting to do any until a 1.0.0 release since there are likely portions of the request/response lifecycle that will change and could effect benchmarks.

Just in case you are curious, Godoc provides a nice way to quickly see which packages a Go package imports. For example, click any of the packages within the Ponzu project's Godoc and scroll to the bottom. You'll see a link in the footer that looks like this:

imports-godoc

Clicking the 21 packages link will show you all the packages imported. Helpful and cool!

Are you currently using Ponzu in any projects? Do you find its performance to be an issue? Thanks!

rebootcode commented 7 years ago

I am not using them now. ponzu looks promising , just worried about , if it can handle few hundred thousand visitors or not.

nilslice commented 7 years ago

If it is mainly read-only, then yes, I'm sure it can. You're likely more limited by the fact that Ponzu currently is bound to a single node since the database is BoltDB - but with the easy backups, you could certainly keep a replica running in case your master node goes down.

I run a mostly read-only website which is powered by Ponzu that averages over a million requests a day.

If you'd like to describe the project you're planning in more detail, I would be glad to help you decide if Ponzu is a good fit.