fasthttp
MongoDB
Our great sponsors
fasthttp | MongoDB | |
---|---|---|
36 | 244 | |
20,882 | 25,295 | |
- | 1.1% | |
8.6 | 10.0 | |
9 days ago | 4 days ago | |
Go | C++ | |
MIT License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
fasthttp
-
Rob Pike: Gobs of data (2011)
Someone made a benchmark of serialization libraries in go [1], and I was surprised to see gobs is one of the slowest ones, specially for decoding. I suspect part of the reason is that the API doesn't not allow reusing decoders [2]. From my explorations it seems like both JSON [3], message-pack [4] and CBOR [5] are better alternatives.
By the way, in Go there are a like a million JSON encoders because a lot of things in the std library are not really coded for maximum performance but more for easy of usage, it seems. Perhaps this is the right balance for certain things (ex: the http library, see [6]).
There are also a bunch of libraries that allow you to modify a JSON file "in place", without having to fully deserialize into structs (ex: GJSON/SJSON [7] [8]). This sounds very convenient and more efficient that fully de/serializing if we just need to change the data a little.
--
1: https://github.com/alecthomas/go_serialization_benchmarks
2: https://github.com/golang/go/issues/29766#issuecomment-45492...
--
3: https://github.com/goccy/go-json
4: https://github.com/vmihailenco/msgpack
5: https://github.com/fxamacker/cbor
--
6: https://github.com/valyala/fasthttp#faq
--
-
FastHttp for Python (64k requests/s)
Fasthttp is one of the most powerful webservers written in Go, I'm working on a project that makes it possible to use it as a webserver for Python.
-
Tools besides Go for a newbie
IDE: use whatever make you productive. I personally use vscode. VCS: git, as golang communities use github heavily as base for many libraries. AFAIK Linter: use staticcheck for linting as it looks like mostly used linting tool in go, supported by many also. In Vscode it will be recommended once you install go plugin. Libraries/Framework: actually the standard libraries already included many things you need, decent enough for your day-to-day development cycles(e.g. `net/http`). But here are things for extra: - Struct fields validator: validator - Http server lib: chi router , httprouter , fasthttp (for non standard http implementations, but fast) - Web Framework: echo , gin , fiber , beego , etc - Http client lib: most already covered by stdlib(net/http), so you rarely need extra lib for this, but if you really need some are: resty - CLI: cobra - Config: godotenv , viper - DB Drivers: sqlx , postgre , sqlite , mysql - nosql: redis , mongodb , elasticsearch - ORM: gorm , entgo , sqlc(codegen) - JS Transpiler: gopherjs - GUI: fyne - grpc: grpc - logging: zerolog - test: testify , gomock , dockertest - and many others you can find here
-
fasthttp VS Don - a user suggested alternative
2 projects | 15 Mar 2023
-
Beginner ~ Intermediate Go programmer, how can I get better in go and get out of the "beginner" phase?
The best example I can give you is https://github.com/nutsdb/nutsdb it’s great project that got me started, one thing one should know is Go is different “yep” so there’re some coding habits that may bite you in Go and the Go compiler won’t correct you, you wanna learn about optimizations, unsafe usage check out https://github.com/valyala/fasthttp (note this is deep the rabbit hole), wanna learn concurrency check out ants https://github.com/panjf2000/ants with a little aid from “Go by example” you’re good to go
-
Log: A minimal, colorful Go logging library 🪵
As I said in another comment, I think net/http is a good cautionary tale here. It was designed to be easy to use, and then grew organically, but performance never seems to have been a goal. fasthttp solves this, but bifurcates the ecosystem and passes on those costs to everyone who uses it. If net/http had been designed with performance in mind, this could have been avoided. net/http can't be removed or optimized, so this is a situation the Go ecosystem is effectively stuck with forever. At best, a faster version may end up in the std lib, just like netip is more modern and faster than net but the ecosystem is still bifurcated and adoption of the new package has been slow.
- Anyone looking for developer to co-work on non-trivial opensource?
-
my office want to migrate to go programming language, what framework is recommended between chi or fiber?
Fiber, while has a lot of batteries included and decent for many use cases, is known for having corner cases (because of internals like fasthttp) like https://github.com/valyala/fasthttp/issues/622
- Ask HN: Slimvoice Alternative?
- Mongogram - Social media backend api using golang and mongodb
MongoDB
-
Build Your Own Uptime Monitor with MeteorJS + Fetch + Plotly.js ☄️🔭
MongoDB to store our data as documents, close to JS objects
-
How to choose the right type of database
MongoDB: Known for its ease of development and strong community support, MongoDB is effective in scenarios where flexible schema and rapid iteration are more critical than strict ACID compliance.
-
Mastering Microservices: A Hands-On Tutorial with Node.js, RabbitMQ, Nginx, and Docker
Ensure you have MongoDB installed for data storage. You can download MongoDB Community Server from MongoDB's official website or use the cloud cluster.
-
How to Build & Deploy Scalable Microservices with NodeJS, TypeScript and Docker || A Comprehesive Guide
We will be using MongoDB as a database on both the Auth microservice and notifications microservice, sign up for a MongoDB Atlas account here incase you donot have one and donot have its desktop application(mongodb campass) installed and would like to use mongodb atlas. This cloud-based database service offers a free tier and simplifies the process of managing MongoDB databases.
-
Build a GraphQL API with NodeJS and TypeScript || A Comprehensive Guide
Head over to MongoDB and create an account or login to grab your connection string.
-
Uploading and Serving Images from MongoDB in Golang
MongoDB, a document-oriented NoSQL database, will be our data powerhouse. We'll utilize the mongo-driver library to seamlessly connect our Golang application to MongoDB. This section will cover essential database interactions, including creating collections, storing metadata, and efficiently querying for image-related data. Understanding these fundamentals is crucial for building a robust image storage and retrieval system.
-
Database Fundamentals
Writes in MongoDB are persisted before the server returns acknowledgement. For a typical replica set deployment, this additionally means replicated and made durable on disk for a majority of nodes.
MongoDB has tunable durability guarantees; clients can opt-out of this behavior.
The layers are deep, but this is the function that handles waiting before acknowledgement:
https://github.com/mongodb/mongo/blob/20f42d9dc89999d119f35a...
-
Create your own AI voice assistant bot with Node.js using Google Bard
MongoDB — a database service
-
MongoDB Quick Start Guide 🍃⚡️
MongoDB is an open source NoSQL Document database which horizontally scales utilizing clustered servers in replica-sets. A great option for testing and performing local development with MongoDB is using Docker and Docker Compose. The following docker compose spec will create a local docker container running MongoDB with the data persisted to a docker volume.
- MongoDB’s New Query Engine
What are some alternatives?
Gin - Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin.
mongo-express - Web-based MongoDB admin interface, written with Node.js and express
Fiber - ⚡️ Express inspired web framework written in Go
Marten - .NET Transactional Document DB and Event Store on PostgreSQL
LiteDB - LiteDB - A .NET NoSQL Document Store in a single data file
gnet - 🚀 gnet is a high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go./ gnet 是一个高性能、轻量级、非阻塞的事件驱动 Go 网络框架。
quic-go - A QUIC implementation in pure Go
mux - A powerful HTTP router and URL matcher for building Go web servers with 🦍
LevelDB - LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values.
httprouter - A high performance HTTP request router that scales well
SQLAlchemy - The Database Toolkit for Python
Apache Ignite - Apache Ignite