https://github.com/yankeguo-deprecated/summer
golang application framework
https://github.com/yankeguo-deprecated/summer
Last synced: about 2 months ago
JSON representation
golang application framework
- Host: GitHub
- URL: https://github.com/yankeguo-deprecated/summer
- Owner: yankeguo-deprecated
- License: mit
- Created: 2022-12-20T02:58:13.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-10-16T14:13:35.000Z (over 1 year ago)
- Last Synced: 2025-02-14T16:58:26.628Z (3 months ago)
- Language: Go
- Size: 109 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# summer
A Minimalist Mesh-Native Microservice Framework for Golang
## Core Concept
By using generics, `summer` allows you to use the basic `summer.Context`, or create your own `Context` type, without changing programming paradigm.
## Features
* Support `opentelemetry-go`
* Support standard `OTEL_` environment variables
* Using `zipkin` as default exporter
* Support `TraceContext`, `Baggage` and `B3` propagation
* Support `otelhttp` instrument
* Support `prometheus/promhttp`
* Expose at `/debug/metrics`
* Support `Readiness Check`
* Expose at `/debug/ready`
* Component readiness registration with `App#Check()`
* Support `Liveness Check`
* Expose at `/debug/alive`
* Cascade `Liveness Check` failure from continuous `Readiness Check` failure
* Support `debug/pprof`
* Expose at `/debug/pprof`
* Bind request data
* Unmarshal `header`, `query`, `json body` and `form body` into any structure with `json` tag## Setup Tracing
`OpenTelemetry` setup is left to end-user
Example:
```golang
package summerimport (
"github.com/guoyk93/rg"
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
"go.opentelemetry.io/contrib/propagators/b3"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/exporters/zipkin"
"go.opentelemetry.io/otel/propagation"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
"net/http"
)// BootTracing setup OpenTelemetry tracing best practice
func BootTracing() {
otel.SetTracerProvider(sdktrace.NewTracerProvider(
sdktrace.WithBatcher(rg.Must(zipkin.New(""))),
))
otel.SetTextMapPropagator(
propagation.NewCompositeTextMapPropagator(
propagation.TraceContext{},
propagation.Baggage{},
b3.New(b3.WithInjectEncoding(b3.B3MultipleHeader|b3.B3SingleHeader)),
),
)
// re-initialize otelhttp.DefaultClient and http.DefaultClient
otelhttp.DefaultClient = &http.Client{
Transport: otelhttp.NewTransport(http.DefaultTransport),
}
http.DefaultClient = otelhttp.DefaultClient
}
```## Donation
See https://guoyk.xyz/donation
## Credits
Guo Y.K., MIT License