docs: replenish config/apollo and registry/discovery readme (#1625)
* docs(config/apollo): replenish config/apollo readme * docs(registry/discovery): replenish registry/discovery readme * docs: complete docs of config/apollo and registry/discoverypull/1630/head
parent
0f423be434
commit
c392528e11
@ -0,0 +1,104 @@ |
||||
## Apollo config centry |
||||
|
||||
This module implements the `config.Source` interface in kratos based apollo config management center. |
||||
|
||||
[![go.dev reference](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go&logoColor=white&style=flat-square)](https://pkg.go.dev/github.com/go-kratos/kratos/contrib/config/apollo/v2) |
||||
|
||||
### Quick start |
||||
|
||||
```go |
||||
import ( |
||||
"fmt" |
||||
"log" |
||||
|
||||
"github.com/go-kratos/kratos/contrib/config/apollo/v2" |
||||
"github.com/go-kratos/kratos/v2/config" |
||||
) |
||||
|
||||
func main() { |
||||
c := config.New( |
||||
config.WithSource( |
||||
apollo.NewSource( |
||||
apollo.WithAppID("kratos"), |
||||
apollo.WithCluster("dev"), |
||||
apollo.WithEndpoint("http://localhost:8080"), |
||||
apollo.WithNamespace("application,event.yaml,demo.json"), |
||||
apollo.WithEnableBackup(), |
||||
apollo.WithSecret("ad75b33c77ae4b9c9626d969c44f41ee"), |
||||
), |
||||
), |
||||
) |
||||
var bc bootstrap |
||||
if err := c.Load(); err != nil { |
||||
panic(err) |
||||
} |
||||
|
||||
// use value and watch operations,help yourself. |
||||
} |
||||
``` |
||||
|
||||
### Options list |
||||
|
||||
> You get what you see. |
||||
|
||||
```go |
||||
// specify the app id |
||||
func WithAppID(appID string) Option |
||||
// specify the cluster of application |
||||
func WithCluster(cluster string) Option |
||||
|
||||
// enable backup or not, and where to back up them. |
||||
func WithBackupPath(backupPath string) Option |
||||
func WithDisableBackup() Option |
||||
func WithEnableBackup() Option |
||||
|
||||
// specify apollo endpoint, such as http://localhost:8080 |
||||
func WithEndpoint(endpoint string) Option |
||||
|
||||
// inject a logger to debug |
||||
func WithLogger(logger log.Logger) Option |
||||
|
||||
// namespaces to load, comma to separate. |
||||
func WithNamespace(name string) Option |
||||
|
||||
// secret is the apollo secret key to access application config. |
||||
func WithSecret(secret string) Option |
||||
``` |
||||
|
||||
### Notice |
||||
|
||||
apollo config center use `Namespace` to be part of the key. For example: |
||||
|
||||
***application.json*** |
||||
|
||||
```json |
||||
{ |
||||
"http": { |
||||
"address": ":8080", |
||||
"tls": { |
||||
"enable": false, |
||||
"cert_file": "", |
||||
"key_file": "" |
||||
} |
||||
} |
||||
} |
||||
``` |
||||
|
||||
you got them in kratos config instance maybe look like: |
||||
|
||||
```go |
||||
config := map[string]interface{}{ |
||||
// application be part of the key path. |
||||
"application": map[string]interface{}{ |
||||
"http": map[string]interface{}{ |
||||
"address": ":8080", |
||||
"tls": map[string]interface{}{ |
||||
"enable": false, |
||||
"cert_file": "", |
||||
"key_file": "" |
||||
} |
||||
} |
||||
} |
||||
} |
||||
_ = config |
||||
``` |
@ -1,4 +1,97 @@ |
||||
# Discovery Registry |
||||
## Discovery Registry |
||||
|
||||
## [discovery](https://github.com/bilibili/discovery) |
||||
This module implements a `registry.Registrar` and `registry.Discovery` interface in kratos based `bilibili/discovery`. |
||||
|
||||
[![go.dev reference](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go&logoColor=white&style=flat-square)](https://pkg.go.dev/github.com/go-kratos/kratos/contrib/registry/discovery/v2) |
||||
|
||||
### Quick Start |
||||
|
||||
**_Register a service_** |
||||
|
||||
```go |
||||
import ( |
||||
"github.com/go-kratos/kratos/contrib/registry/discovery/v2" |
||||
) |
||||
|
||||
func main() { |
||||
logger := log.NewStdLogger(os.Stdout) |
||||
logger = log.With(logger, "service", "example.registry.discovery") |
||||
|
||||
// initialize a registry |
||||
r := discovery.New(&discovery.Config{ |
||||
Nodes: []string{"0.0.0.0:7171"}, |
||||
Env: "dev", |
||||
Region: "sh1", |
||||
Zone: "zone1", |
||||
Host: "hostname", |
||||
}, logger) |
||||
|
||||
// construct srv instance |
||||
// ... |
||||
|
||||
app := kratos.New( |
||||
kratos.Name("helloworld"), |
||||
kratos.Server( |
||||
httpSrv, |
||||
grpcSrv, |
||||
), |
||||
kratos.Metadata(map[string]string{"color": "gray"}), |
||||
// use Registrar |
||||
kratos.Registrar(r), |
||||
) |
||||
|
||||
if err := app.Run(); err != nil { |
||||
log.NewHelper(logger).Fatal(err) |
||||
} |
||||
} |
||||
``` |
||||
|
||||
**_Discover a service_** |
||||
|
||||
```go |
||||
import ( |
||||
"github.com/go-kratos/kratos/contrib/registry/discovery/v2" |
||||
"github.com/go-kratos/kratos/v2/transport/grpc" |
||||
) |
||||
|
||||
func main() { |
||||
// initialize a discovery |
||||
r := discovery.New(&discovery.Config{ |
||||
Nodes: []string{"0.0.0.0:7171"}, |
||||
Env: "dev", |
||||
Region: "sh1", |
||||
Zone: "zone1", |
||||
Host: "localhost", |
||||
}, nil) |
||||
|
||||
conn, err := grpc.DialInsecure( |
||||
context.Background(), |
||||
grpc.WithEndpoint("discovery:///appid"), |
||||
// use discovery |
||||
grpc.WithDiscovery(r), |
||||
) |
||||
if err != nil { |
||||
log.Fatal(err) |
||||
} |
||||
defer conn.Close() |
||||
|
||||
// request and log |
||||
} |
||||
``` |
||||
|
||||
### Config explain |
||||
|
||||
```go |
||||
type Config struct { |
||||
Nodes []string // discovery nodes address |
||||
Region string // region of the service, sh |
||||
Zone string // zone of region, sh001 |
||||
Env string // env of service, dev, prod and etc |
||||
Host string // hostname of service |
||||
} |
||||
``` |
||||
|
||||
### References |
||||
|
||||
- [bilibili/discovery](https://github.com/bilibili/discovery) |
||||
|
||||
|
Loading…
Reference in new issue