loadbalance

package
v0.0.0-...-aa36858 Latest Latest
Warning

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

Go to latest
Published: Jan 9, 2023 License: MIT Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const Name = "proglog"

Variables

This section is empty.

Functions

This section is empty.

Types

type Picker

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

Picker はRPCをバランスさせる処理 (リゾルバが発見したサーバアドレスの中から各RPCを処理するサーバを選択) を行う。 Consume, ConsumeStream のRPCをフォロワーサーバに、Produce, ProduceStream のRPCをリーダーサーバに送信する。

NOTE:
 ピッカーの役割として呼び出しの送信先決定を行うが、gRPCにはデフォルトのバランサ (※) があるため、今回は独自実装が不要となる。
 ※サブコネクションを管理し、接続状態を収集および集約する balancer.Balancer のこと。

func (*Picker) Build

func (p *Picker) Build(buildInfo base.PickerBuildInfo) balancer.Picker

Build は引数のサブコネクションから取得したフォロワーの集合を設定したピッカーを生成する。

NOTE:
 gRPCは当メソッドにサブコネクションのマップと、それらサブコネクションに関する情報を渡してピッカーを生成する。

func (*Picker) Pick

func (p *Picker) Pick(info balancer.PickInfo) (balancer.PickResult, error)

Pick はRPC呼び出しを行うべきサブコネクションを含む情報を返却する。

NOTE:
 balancer.PickInfo は Ctx フィールドを持っており、ヘッダーのメタデータがある場合はここから読み取る。
 balancer.PickResult のオプションとして、Doneコールバック関数を設定可能。
 この関数には、RPCエラー, trailerのメタデータ, サーバとの間で送受信されたバイト数があったかどうかを含む情報が渡される。

type Resolver

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

Resolver はgRPCの resolver.Builder インタフェースと resolver.Resolver インタフェースを実装する。

func (*Resolver) Build

Build はサーバを発見できるリゾルバ構築に必要なデータと、リゾルバが発見したサーバで更新するクライアントコネクション を受け取り、リゾルバが GetServers API を呼び出せるように、サーバへのクライアントコネクションを設定する。

func (*Resolver) Close

func (r *Resolver) Close()

Close はBuildで作成したサーバへのコネクション (リゾルバ) を閉じる。

func (*Resolver) ResolveNow

func (r *Resolver) ResolveNow(resolver.ResolveNowOptions)

ResolveNow はターゲットを解決し、サーバを発見し、ロードバランサが選択できるサーバを知らせるために サーバとのクライアントコネクションを更新する。

func (*Resolver) Scheme

func (r *Resolver) Scheme() string

Scheme はリゾルバのスキーム識別子を返却する。

NOTE:
 gRPC.Dial を呼び出すと、gRPCは与えられたターゲットアドレスからスキームを解析し、一致するリゾルバ (※) を探す。
 ※デフォルトはDNSリゾルバ
 当該システムの場合、ターゲットアドレスの形式は proglog://own-service-address のようになる。

Jump to

Keyboard shortcuts

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