chassis

package module
v0.7.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 16, 2018 License: Apache-2.0 Imports: 39 Imported by: 0

README

Go-Chassis

Build Status Coverage Status Go Report Card GoDoc HitCount Join Slack

Go-Chassis is a Software Development Kit(SDK) for rapid development of microservices in Go

Go-chassis is based on Go-Micro A pluggable RPC framework

Features

  • Pluggable registrator and discovery service: Support Service center,istio pilot and file based registry, fit both client side discovery and server side discovery pattern
  • Pluggable Protocol: You can custom your own protocol, by default support http and highway(RPC)
  • Circuit breaker: Protect your service in runtime or on-demand
  • Route management: Able to route to different service based on weight and match rule to achieve Canary Release easily
  • Load balancing: Able to custom strategy and filter
  • Rate limiting: Both client side and server side rate limiting
  • Pluggable Cipher: Able to custom your own cipher for AKSK and TLS certs
  • Handler Chain: Able to add your own code during service calling for client and server side
  • Metrics: Able to expose Prometheus metric API automatically and custom metrics reporter
  • Tracing: Integrate with Zipkin to sink tracing data
  • Logger: You can custom your own writer to sink log, by default support file and stdout
  • Hot-reconfiguraion: A lot of configuration can be reload in runtime, like loadbalancing, circuit breaker, rate limiting
  • Dynamic Configuration framework: Able to develop a service which has hot-reconfiguration feature easily
  • Fault Injection: In consumer side, you can inject faults to bring chaos testing into your system

You can check plugins to see more features

Quick Start

You can see more documentations in here

  1. Install go 1.8+

  2. Clone the project

git clone git@github.com:go-chassis/go-chassis.git
  1. Use glide to download dependencies
cd go-chassis 
glide install
  1. Install service-center

  2. Write your first http micro service

Examples

You can check examples here

Communication Protocols

Go-Chassis supports two types of communication protocol.

  1. Rest - REST is an approach that leverages the HTTP protocol for communication.
  2. Highway - This is a high performance communication protocol originally developed by Huawei.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Init

func Init() error

Init prepare the chassis framework runtime

func RegisterSchema

func RegisterSchema(serverName string, structPtr interface{}, opts ...server.RegisterOption)

RegisterSchema Register a API service to specific server by name You must register API first before Call Init

func Run

func Run()

Run bring up the service,it will not return error,instead just waiting for os signal,and shutdown gracefully

func SetDefaultConsumerChains

func SetDefaultConsumerChains(c map[string]string)

SetDefaultConsumerChains your custom chain map for Consumer,if there is no config, this default chain will take affect

func SetDefaultProviderChains

func SetDefaultProviderChains(c map[string]string)

SetDefaultProviderChains set your custom chain map for Provider,if there is no config, this default chain will take affect

Types

type Schema

type Schema struct {
	// contains filtered or unexported fields
}

Schema struct for to represent schema info

Directories

Path Synopsis
benchmark
helpers/helloworld/protobuf
Package helloworld is a generated protocol buffer package.
Package helloworld is a generated protocol buffer package.
client
highway/pb
Package highway is a generated protocol buffer package.
Package highway is a generated protocol buffer package.
client
Package client is an interface for any protocol's client
Package client is an interface for any protocol's client
lager
Package lager is the package for lager
Package lager is the package for lager
loadbalancer
Package loadbalancer is client side load balancer
Package loadbalancer is client side load balancer
metadata
Package metadata provides framework info registered to registry.
Package metadata provides framework info registered to registry.
router
Package router expose API for user to get or set route rule
Package router expose API for user to get or set route rule
server
Package server is a package for protocol of a micro service
Package server is a package for protocol of a micro service
tls
examples
schemas/employ
Package employ is a generated protocol buffer package.
Package employ is a generated protocol buffer package.
schemas/helloworld
Package helloworld is a generated protocol buffer package.
Package helloworld is a generated protocol buffer package.
healthz
client
Package client is a generated protocol buffer package.
Package client is a generated protocol buffer package.
Package metrics bootstrap metrics reporter, and supply 2 metrics registry native prometheus registry and rcrowley/go-metrics registry system registry is the place where go-chassis feed metrics data to you can get system registry and report them to varies monitoring system
Package metrics bootstrap metrics reporter, and supply 2 metrics registry native prometheus registry and rcrowley/go-metrics registry system registry is the place where go-chassis feed metrics data to you can get system registry and report them to varies monitoring system
pkg
Package security created on 2017/6/22
Package security created on 2017/6/22
plugins/plain
Package plain created on 2017/6/22
Package plain created on 2017/6/22
server
third_party
forked/afex/hystrix-go/hystrix
Package hystrix is a latency and fault tolerance library designed to isolate points of access to remote systems, services and 3rd party libraries, stop cascading failure and enable resilience in complex distributed systems where failure is inevitable.
Package hystrix is a latency and fault tolerance library designed to isolate points of access to remote systems, services and 3rd party libraries, stop cascading failure and enable resilience in complex distributed systems where failure is inevitable.
forked/afex/hystrix-go/loadtest/service
Package main implements an http server which executes a hystrix command each request and sends metrics to a statsd instance to aid performance testing.
Package main implements an http server which executes a hystrix command each request and sends metrics to a statsd instance to aid performance testing.
forked/afex/hystrix-go/plugins
Plugins allows users to operate on statistics recorded for each circuit operation.
Plugins allows users to operate on statistics recorded for each circuit operation.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL