rpcx

package
v1.0.160 Latest Latest
Warning

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

Go to latest
Published: Dec 19, 2024 License: MIT Imports: 28 Imported by: 0

README

1.

go get -u google.golang.org/grpc go get -u google.golang.org/protobuf

2.

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

3.

protoc --go_out=. ./rpcx/proto/pub_worker.proto protoc --go-grpc_out=. ./rpcx/proto/pub_worker.proto

4. 生成TLS证书

生成ca私钥

openssl genrsa -out ca.key 4096

自签名生成ca.crt 证书文件

如果在 Windows 使用 Git Bash 出现错误

name is expected to be in the format /type0=value0/type1=value1/type2=... where characters may be escaped by . This name is not in that format: ...

则需要在命令前加上

MSYS_NO_PATHCONV=1

例如 MSYS_NO_PATHCONV=1 openssl ...

MSYS_NO_PATHCONV=1 openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/CN=localhost"

生成server/client key file

openssl genrsa -out server.key 2048 openssl genrsa -out client.key 2048

生成server/client csr file

openssl req -new -key server.key -out server.csr -config TLS.md -extensions SAN openssl req -new -key client.key -out client.csr -config TLS.md -extensions SAN

生成server/client crt file

Generates server.crt which is the certChainFile for the server

openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt -extfile TLS.md -extensions SAN openssl x509 -req -days 3650 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt -extfile TLS.md -extensions SAN

Generates server.pem which is the privateKeyFile for the Server

openssl pkcs8 -topk8 -nocrypt -in server.key -out server.pem

独立server.key进行SAN自签

openssl genrsa -out server.key 2048 openssl req -new -key server.key -out server.csr -config TLS.md -extensions SAN openssl x509 -req -days 3650 -in server.csr -set_serial 01 -signkey server.key -out server.crt -extfile TLS.md -extensions SAN

Documentation

Index

Constants

View Source
const (
	DefaultConsulDockerHost = "172.17.0.1:8500"
	DefaultConsulLocalHost  = "127.0.0.1:8500"
	DefaultConsulDomainHost = "consulx.com:8500"
)

Variables

This section is empty.

Functions

func CreateClientOpts added in v1.0.160

func CreateClientOpts(serverAddr string, interceptor grpc.UnaryClientInterceptor)

CreateClientOpts serverAddr: 服务端地址 interceptor: 客户端拦截器

func GetAuthorizeTLS

func GetAuthorizeTLS() (*crypto.RsaObj, error)

func GetGRPCJwtConfig

func GetGRPCJwtConfig() (*jwt.JwtConfig, error)

func InitDefaultConsul added in v1.0.13

func InitDefaultConsul()

func InitHostConsul added in v1.0.95

func InitHostConsul(host string)

func NewClientConn

func NewClientConn(object GRPC) (pool.Conn, error)

func NewOnlyClientConn added in v1.0.160

func NewOnlyClientConn() (pool.Conn, error)

func RunClient

func RunClient(appId ...string)

RunClient Important: ensure that the service starts only once JWT Token expires in 1 hour The remaining 1200s will be automatically renewed and detected every 15s

func RunOnlyServer added in v1.0.160

func RunOnlyServer(param InitParam)

func RunServer

func RunServer(consulDs string, authenticate bool, objects ...*GRPC)

Types

type AppConfig

type AppConfig struct {
	AppId    string
	AppKey   string
	Status   int64
	LastTime int64
}

func GetGRPCAppConfig

func GetGRPCAppConfig(appid string) (AppConfig, error)

type AuthObject

type AuthObject struct {
	AppId     string
	Nonce     string
	Time      int64
	Signature string
}

type ClientConnPool

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

type ConsulConfig

type ConsulConfig struct {
	DsName       string // 数据源名
	Host         string // consul host
	CheckPort    int    // 健康监测端口
	RpcPort      int    // RPC调用端口
	Protocol     string // RPC协议, tcp
	Timeout      string // 请求超时时间, 3s
	Interval     string // 健康监测时间, 5s
	DestroyAfter string // 销毁服务时间, 600s
	CheckPath    string // 健康检测path /xxx/check
	LogPath      string // 日志输出路径
	SlowQuery    int64  // 0.不开启筛选 >0开启筛选查询 毫秒
	SlowLogPath  string // 慢查询写入地址
}

Consulx配置参数

type ConsulManager

type ConsulManager struct {
	Host    string
	Token   string
	Consulx *consulapi.Client
	Config  *ConsulConfig
}

func NewConsul

func NewConsul(ds ...string) (*ConsulManager, error)

func (*ConsulManager) CheckService

func (self *ConsulManager) CheckService(services []*consulapi.AgentService, srvName, addr string) bool

func (*ConsulManager) Client

func (self *ConsulManager) Client(ds ...string) (*ConsulManager, error)

func (*ConsulManager) GetAesJsonValue added in v1.0.8

func (self *ConsulManager) GetAesJsonValue(key, encKey string, result interface{}) error

通过Consul中心获取指定加密JSON配置数据

func (*ConsulManager) GetAllService

func (self *ConsulManager) GetAllService(service string) ([]*consulapi.AgentService, error)

根据服务名获取可用列表

func (*ConsulManager) GetCacheService

func (self *ConsulManager) GetCacheService(service, tag string, cacheSecond int) ([]*consulapi.ServiceEntry, error)

func (*ConsulManager) GetHealthService

func (self *ConsulManager) GetHealthService(service, tag string) ([]*consulapi.ServiceEntry, error)

func (*ConsulManager) GetJsonValue

func (self *ConsulManager) GetJsonValue(key string, result interface{}) error

通过Consul中心获取指定JSON配置数据

func (*ConsulManager) GetSlowLog

func (self *ConsulManager) GetSlowLog() *zap.Logger

func (*ConsulManager) GetTextValue

func (self *ConsulManager) GetTextValue(key string) ([]byte, error)

func (*ConsulManager) HealthCheck

func (self *ConsulManager) HealthCheck(w http.ResponseWriter, r *http.Request)

接口服务健康检查

func (*ConsulManager) InitConfig

func (self *ConsulManager) InitConfig(input ...ConsulConfig) (*ConsulManager, error)

func (*ConsulManager) RemoveService

func (self *ConsulManager) RemoveService(serviceIDs ...string)

type GRPC

type GRPC struct {
	Ds      string                    // consul数据源ds
	Tags    []string                  // 服务标签名称
	Address string                    // 服务地址,为空时自动填充内网IP
	RpcPort int                       // 服务地址端口
	Service string                    // 服务名称
	Cache   int                       // 服务缓存时间/秒
	Timeout int                       // context timeout/毫秒
	AddRPC  func(server *grpc.Server) // grpc注册proto服务
	Center  bool                      // false: 非注册中心 true: consul注册中心获取
}

type GRPCManager

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

func (*GRPCManager) ClientInterceptor

func (self *GRPCManager) ClientInterceptor(ctx context.Context, method string, req, reply interface{}, conn *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) (err error)

func (*GRPCManager) CreateAppConfigCall

func (self *GRPCManager) CreateAppConfigCall(fun func(appId string) (AppConfig, error))

func (*GRPCManager) CreateAuthorizeTLS

func (self *GRPCManager) CreateAuthorizeTLS(keyPath string)

CreateAuthorizeTLS If server TLS is used, the certificate server.key is used by default Otherwise, the method needs to be explicitly called to set the certificate

func (*GRPCManager) CreateClientTLS

func (self *GRPCManager) CreateClientTLS(tlsConfig TlsConfig)

func (*GRPCManager) CreateJwtConfig

func (self *GRPCManager) CreateJwtConfig(tokenKey string, tokenExp ...int64)

func (*GRPCManager) CreateRateLimiterCall

func (self *GRPCManager) CreateRateLimiterCall(fun func(method string) (rate.Option, error))

func (*GRPCManager) CreateSelectionCall

func (self *GRPCManager) CreateSelectionCall(fun func([]*consulapi.ServiceEntry, GRPC) *consulapi.ServiceEntry)

func (*GRPCManager) CreateServerTLS

func (self *GRPCManager) CreateServerTLS(tlsConfig TlsConfig)

func (*GRPCManager) ServerInterceptor

func (self *GRPCManager) ServerInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error)

type InitParam added in v1.0.160

type InitParam struct {
	Addr   string
	Port   int
	Auth   bool
	Object []*GRPC
}

type TlsConfig

type TlsConfig struct {
	UseTLS    bool
	UseMTLS   bool
	CACrtFile string
	CAKeyFile string
	KeyFile   string
	CrtFile   string
	HostName  string
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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