Giter Site home page Giter Site logo

kratos's Introduction

kratos

Language Build Status GoDoc Go Report Card Discord

Translations: English | 简体中文

Kratos

Kratos is a microservice-oriented governance framework implements by golang, which offers convenient capabilities to help you quickly build a bulletproof application from scratch.

The name is inspired by the game God of War which is based on Greek myths, tells the Kratos from mortals to become a God of War and launches the adventure of killing god.

Goals

Kratos boosts your productivity. With the integration of excellent resources and further support, you can get rid of most issues you might encounter in the field of distributed systems and software engineering, so that you can focus on business delivery. For each developer, Kratos is an ideal one for learning as well. You can navigate the diverse knowledge of microservice and accumulate engineering experience.

Principles

  • Simple: Appropriate design, plain and simple code.
  • General: Cover the various utilities for business development.
  • Reliable: Higher testability and greater test coverage of base libs validated in the production environment.
  • Robust: Base libs are designed reasonably to reduce misuse.
  • High-performance: We give you optimal performance without using the hack-way approach like adding the unsafe package and guarantee compatibility and stability at the same time.
  • Expandable: Appropriate API design, you can expand utilities such as base libs to meet your further requirements.
  • Fault-tolerance: Designed against failure, enhance the understanding and exercising of SRE within Kratos to achieve more robustness.
  • Toolchain: Includes an extensive toolchain, such as cache code generation, lint tools, etc.

Features

  • APIs: HTTP/gRPC based transport and Protobuf defined communication protocol.
  • Errors: We use ProtoBuf Enum to define error code and generate error handle code.
  • Metadata: Normalize the service metadata transmission by excellent middleware.
  • Config: Multi-data source Support, well arranged, dynamic configuration via Atomic package.
  • Logger: Standard log API, easily integrate with third-party log lib, Fluentd logs collection.
  • Metrics: Prometheus integration by default. Furthermore, with the unified Metrics interface, you can implement your metrics system more flexible
  • Tracing: Complete micro-service link tracing followed by OpenTracing specification.
  • Encoding: Support Accept and Content-Type for auto content encoding.
  • Transport: Common HTTP/ GRPC transport layer offers you powerful Middleware support.
  • Registry: One pluggable API for the different registry.

Getting Started

Required

Installing

go get github.com/go-kratos/kratos/cmd/kratos/v2@latest

Create a service

# create project template
kratos new helloworld

cd helloworld
# generate Proto template
kratos proto add api/helloworld/helloworld.proto
# generate Proto source code
kratos proto client api/helloworld/helloworld.proto
# generate server template
kratos proto server api/helloworld/helloworld.proto -t internal/service

# Generate all proto source code, wire, etc.
go generate ./...
# compile
go build -o ./bin/ ./...
# run
./bin/helloworld -conf ./configs

Kratos Boot

import "github.com/go-kratos/kratos/v2"
import "github.com/go-kratos/kratos/v2/transport/grpc"
import "github.com/go-kratos/kratos/v2/transport/http"

httpSrv := http.NewServer(http.Address(":8000"))
grpcSrv := grpc.NewServer(grpc.Address(":9000"))

app := kratos.New(
    kratos.Name("kratos"),
    kratos.Version("latest"),
    kratos.Server(httpSrv, grpcSrv),
)
app.Run()

Related

Community

License

Kratos is MIT licensed. See the LICENSE file for details.

kratos's People

Contributors

felixhao avatar terry-mao avatar tonybase avatar windfarer avatar longxboy avatar xyuwang avatar zhaoshichen1 avatar wuxingzhong avatar devxiaolan avatar libi avatar tomwei7 avatar faycheng avatar lintanghui avatar shunza avatar kevwan avatar godsoul avatar realityone avatar jiankuny-zz avatar sdttttt avatar yuanfeng0905 avatar undertreetech avatar huofuxiang avatar colstuwjx avatar wangrzneu avatar minglewong avatar fuwensun avatar miaojiuchen avatar netroby avatar zenger-sun avatar dangerous1990 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.