Documentation
¶
Index ¶
- type AdminServer
- type Application
- type ApplicationInstance
- type ApplicationRegistry
- func (r *ApplicationRegistry) Deregister(instanceID string)
- func (r *ApplicationRegistry) GetApplication(appID string) (*Application, error)
- func (r *ApplicationRegistry) GetApplicationCount() int
- func (r *ApplicationRegistry) GetDownInstanceCount() int
- func (r *ApplicationRegistry) GetInstance(instanceID string) (*ApplicationInstance, error)
- func (r *ApplicationRegistry) GetInstanceCount() int
- func (r *ApplicationRegistry) GetUpInstanceCount() int
- func (r *ApplicationRegistry) ListApplications() []*Application
- func (r *ApplicationRegistry) ListInstances() []*ApplicationInstance
- func (r *ApplicationRegistry) Register(instance *ApplicationInstance)
- func (r *ApplicationRegistry) UpdateHealth(instanceID string, health *HealthInfo) error
- func (r *ApplicationRegistry) UpdateMetrics(instanceID string, metrics map[string]float64) error
- type ApplicationStatus
- type ComponentHealth
- type HealthInfo
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AdminServer ¶
type AdminServer struct {
// contains filtered or unexported fields
}
AdminServer Admin 服务器
func NewAdminServer ¶
func NewAdminServer(registry *ApplicationRegistry) *AdminServer
NewAdminServer 创建 Admin 服务器
type Application ¶
type Application struct {
// ID 应用 ID
ID string
// Name 应用名称
Name string
// Version 应用版本
Version string
// Instances 应用实例列表
Instances []*ApplicationInstance
// Status 应用状态
Status ApplicationStatus
// Metadata 应用元数据
Metadata map[string]string
// contains filtered or unexported fields
}
Application 应用对象
锁顺序约束:所有方法必须按 Application.mu -> ApplicationInstance.mu 的顺序获取锁, 禁止反向获取以避免死锁。
type ApplicationInstance ¶
type ApplicationInstance struct {
// ID 实例 ID
ID string `json:"id"`
// ApplicationID 所属应用 ID
ApplicationID string `json:"application_id"`
// Name 实例名称
Name string `json:"name"`
// URL 实例 URL
URL string `json:"url"`
// Status 实例状态
Status ApplicationStatus `json:"status"`
// Health 健康信息
Health *HealthInfo `json:"health,omitempty"`
// Metrics 指标信息
Metrics map[string]float64 `json:"metrics,omitempty"`
// Metadata 实例元数据
Metadata map[string]string `json:"metadata,omitempty"`
// RegisteredAt 注册时间
RegisteredAt time.Time `json:"registered_at"`
// LastSeen 最后活跃时间
LastSeen time.Time `json:"last_seen"`
// contains filtered or unexported fields
}
ApplicationInstance 应用实例
func NewApplicationInstance ¶
func NewApplicationInstance(appID, url string) *ApplicationInstance
NewApplicationInstance 创建应用实例
func (*ApplicationInstance) AddMetric ¶
func (i *ApplicationInstance) AddMetric(name string, value float64)
AddMetric 添加指标
func (*ApplicationInstance) GetMetric ¶
func (i *ApplicationInstance) GetMetric(name string) (float64, bool)
GetMetric 获取指标
func (*ApplicationInstance) IsHealthy ¶
func (i *ApplicationInstance) IsHealthy() bool
IsHealthy 检查实例是否健康
type ApplicationRegistry ¶
type ApplicationRegistry struct {
// contains filtered or unexported fields
}
ApplicationRegistry 应用注册中心 使用 sync.Map 优化读多写少场景的并发性能
func NewApplicationRegistry ¶
func NewApplicationRegistry() *ApplicationRegistry
NewApplicationRegistry 创建应用注册中心
func (*ApplicationRegistry) Deregister ¶
func (r *ApplicationRegistry) Deregister(instanceID string)
Deregister 注销应用实例
func (*ApplicationRegistry) GetApplication ¶
func (r *ApplicationRegistry) GetApplication(appID string) (*Application, error)
GetApplication 获取应用
func (*ApplicationRegistry) GetApplicationCount ¶
func (r *ApplicationRegistry) GetApplicationCount() int
GetApplicationCount 获取应用数量
func (*ApplicationRegistry) GetDownInstanceCount ¶
func (r *ApplicationRegistry) GetDownInstanceCount() int
GetDownInstanceCount 获取停止的实例数量
func (*ApplicationRegistry) GetInstance ¶
func (r *ApplicationRegistry) GetInstance(instanceID string) (*ApplicationInstance, error)
GetInstance 获取实例
func (*ApplicationRegistry) GetInstanceCount ¶
func (r *ApplicationRegistry) GetInstanceCount() int
GetInstanceCount 获取实例数量
func (*ApplicationRegistry) GetUpInstanceCount ¶
func (r *ApplicationRegistry) GetUpInstanceCount() int
GetUpInstanceCount 获取运行中的实例数量
func (*ApplicationRegistry) ListApplications ¶
func (r *ApplicationRegistry) ListApplications() []*Application
ListApplications 列出所有应用
func (*ApplicationRegistry) ListInstances ¶
func (r *ApplicationRegistry) ListInstances() []*ApplicationInstance
ListInstances 列出所有实例
func (*ApplicationRegistry) Register ¶
func (r *ApplicationRegistry) Register(instance *ApplicationInstance)
Register 注册应用实例
func (*ApplicationRegistry) UpdateHealth ¶
func (r *ApplicationRegistry) UpdateHealth(instanceID string, health *HealthInfo) error
UpdateHealth 更新实例健康信息
func (*ApplicationRegistry) UpdateMetrics ¶
func (r *ApplicationRegistry) UpdateMetrics(instanceID string, metrics map[string]float64) error
UpdateMetrics 更新实例指标信息
type ApplicationStatus ¶
type ApplicationStatus string
ApplicationStatus 应用状态
const ( // StatusUp 运行中 StatusUp ApplicationStatus = "UP" // StatusDown 已停止 StatusDown ApplicationStatus = "DOWN" // StatusUnknown 未知 StatusUnknown ApplicationStatus = "UNKNOWN" // StatusOutOfService 服务不可用 StatusOutOfService ApplicationStatus = "OUT_OF_SERVICE" )
type ComponentHealth ¶
type ComponentHealth struct {
// Status 组件状态
Status ApplicationStatus
// Details 详细信息
Details map[string]any
}
ComponentHealth 组件健康信息
type HealthInfo ¶
type HealthInfo struct {
// Status 健康状态
Status ApplicationStatus
// Components 组件健康信息
Components map[string]*ComponentHealth
// Details 详细信息
Details map[string]any
}
HealthInfo 健康信息
func (*HealthInfo) AddComponent ¶
func (h *HealthInfo) AddComponent(name string, status ApplicationStatus, details map[string]any)
AddComponent 添加组件健康信息
func (*HealthInfo) AddDetail ¶
func (h *HealthInfo) AddDetail(key string, value any)
AddDetail 添加详细信息