gcgrpcpool

package module
v0.0.0-...-64e6326 Latest Latest
Warning

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

Go to latest
Published: May 7, 2019 License: Apache-2.0 Imports: 9 Imported by: 0

README

GRPC pool for groupcache

A replacement for groupcache HTTPPool that uses GRPC to communicate with peers.

Usage

server := grpc.NewServer()

p := NewGRPCPool("127.0.0.1:5000", server)
p.Set(peerAddrs...)

getter := groupcache.GetterFunc(func(ctx groupcache.Context, key string, dest groupcache.Sink) error {
	dest.SetString(...)
	return nil
})

groupcache.NewGroup("grpcPool", 1<<20, getter)
lis, err := net.Listen("tcp", "127.0.0.1:5000")
if err != nil {
	log.Fatalf("Failed to start server")
}

server.Serve(lis)

Use GRPCPoolOptions to set the GRPC client dial options such as using compression, authentication etc.

To Do

  • Use GRPC Balancer to manage the peer connections
  • Peer discovery mechanism for Kubernetes

Documentation

Overview

* Copyright 2016 Charith Ellawala * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type GRPCPool

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

func NewGRPCPool

func NewGRPCPool(self string, server *grpc.Server) *GRPCPool

func NewGRPCPoolOptions

func NewGRPCPoolOptions(self string, server *grpc.Server, opts *GRPCPoolOptions) *GRPCPool

func (*GRPCPool) AddPeers

func (gp *GRPCPool) AddPeers(ctx context.Context, peers *gcgrpc.Peers) (*gcgrpc.Ack, error)

func (*GRPCPool) PickPeer

func (gp *GRPCPool) PickPeer(key string) (groupcache.ProtoGetter, bool)

func (*GRPCPool) RemovePeers

func (gp *GRPCPool) RemovePeers(ctx context.Context, peers *gcgrpc.Peers) (*gcgrpc.Ack, error)

func (*GRPCPool) Retrieve

func (*GRPCPool) Set

func (gp *GRPCPool) Set(peers ...string)

func (*GRPCPool) SetPeers

func (gp *GRPCPool) SetPeers(ctx context.Context, peers *gcgrpc.Peers) (*gcgrpc.Ack, error)

type GRPCPoolOptions

type GRPCPoolOptions struct {
	Replicas        int
	HashFn          consistenthash.Hash
	PeerDialOptions []grpc.DialOption
}

Directories

Path Synopsis
Package gcgrpc is a generated protocol buffer package.
Package gcgrpc is a generated protocol buffer package.

Jump to

Keyboard shortcuts

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