dubbo-admin
dubbo-admin copied to clipboard
Admin 第一版迭代:console和控制面部分
参考分支:https://github.com/apache/dubbo-admin/tree/refactor-with-go-components-experimental
架构
所有资源启动,都统一到dubbo-admin run 一条命令,run 启动所有内容:
- console-server
- subscribe to registry
- mock server
- ui
- traffic rule
- authority
- mapping
可以参考 kuma 引入 component 的概念,每一块内容作为一个 Component
// Component defines a process that will be run in the application
// Component should be designed in such a way that it can be stopped by stop channel and started again (for example when instance is reelected for a leader).
type Component interface {
// Start blocks until the channel is closed or an error occurs.
// The component will stop running when the channel is closed.
Start(<-chan struct{}) error
// NeedLeaderElection indicates if component should be run only by one instance of Control Plane even with many Control Plane replicas.
NeedLeaderElection() bool
}
Runtime 用来管控所有 Component
type Manager interface {
// Add registers a component, i.e. gRPC Server, HTTP server, reconciliation loop.
Add(...Component) error
// Start starts registered components and blocks until the Stop channel is closed.
// Returns an error if there is an error starting any component.
// If there are any GracefulComponent, it waits until all components are done.
Start(<-chan struct{}) error
}
// Runtime represents initialized application state.
type Runtime interface {
RuntimeInfo
RuntimeContext
component.Manager
}
type RuntimeInfo interface {
GetInstanceId() string
SetClusterId(clusterId string)
GetClusterId() string
GetStartTime() time.Time
}
type RuntimeContext interface {
Config() kuma_cp.Config
DataSourceLoader() datasource.Loader
ResourceManager() core_manager.ResourceManager
}
推送机制内容统一
以下三部分组件,分别都包含 CRD、Controller、gRPC server,需要把 gRPC Server 部分统一起来。
ServiceMapping
CR 定义放到 deploy 推送机制与 security 合并 cmd 合并
RuleConfiguration
CR 定义放到 deploy 推送机制与 security 合并 cmd 合并
Authority
authority 的 cmd 参数,都沉淀到 admin.yml 配置文件中
authority 变为子命令,用法距举例 dubbo-admin run、dubbo-admin authority、dubbo-admin console
Maybe I can have a try.