Documentation ¶
Index ¶
- func StartScheduler(wg *sync.WaitGroup, manager *CollectManager) error
- type CollectManager
- type CollectorScheduler
- func (cScheduler CollectorScheduler) AddTopicsToCSPCollector(addTopicList []string)
- func (cScheduler CollectorScheduler) AddTopicsToCollector(addTopicList []string, maxHostCount int)
- func (cScheduler CollectorScheduler) BalanceTopicsToCollector(maxHostCount int)
- func (cScheduler CollectorScheduler) DeleteTopicsToCSPCollector(delTopicList []string)
- func (cScheduler CollectorScheduler) DeleteTopicsToCollector(delTopicList []string)
- func (cScheduler CollectorScheduler) DistributeTopicsToCollector()
- func (cScheduler CollectorScheduler) ProvisioningCollectorByCSP()
- func (cScheduler CollectorScheduler) ScaleInOutCollector()
- func (cScheduler CollectorScheduler) ScheduleCSPBasedCollector(addTopicList []string, delTopicList []string)
- func (cScheduler CollectorScheduler) SchedulePolicyBasedCollector(addTopicList []string, delTopicList []string)
- func (cScheduler CollectorScheduler) Scheduler()
- func (cScheduler CollectorScheduler) WriteCollectorMapToInMemoryDB()
- type InMemoryTopic
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func StartScheduler ¶
func StartScheduler(wg *sync.WaitGroup, manager *CollectManager) error
Types ¶
type CollectManager ¶
type CollectManager struct { CollectorAddrSlice []*collector.MetricCollector CollectorPolicy string K8sClientSet *kubernetes.Clientset WaitGroup *sync.WaitGroup }
CollectManager 1. CollectorAddrSlice
- 생성한 Go-routine 기반 collector 의 주소값을 보관하는 배열 변수입니다.
2. CollectorPolicy
- Collector Policy 로 MaxAgentHost, CSP 중 한개의 입력값을 받습니다.
- MaxAgentHost 방식은 동작 방식(deployType) - dev, compose, helm 에서 모두 정상 동작 및 기능테스트까지 완료하였습니다.
- CSP 방식은 dev, compose 환경에서만 정상 동작 및 기능 테스트까지 완료하였습니다.
3. K8sClientSet
- 동작 방식(deployType)이 helm 일 경우, k8s와 통신하기 위한 conn 객체입니다.
- 해당 객체는 k8s in-cluster 모드에만 동작합니다.
func NewCollectorManager ¶
func NewCollectorManager() (*CollectManager, error)
func (*CollectManager) CreateCollector ¶
func (manager *CollectManager) CreateCollector() error
func (*CollectManager) DeleteCollector ¶
func (manager *CollectManager) DeleteCollector() error
func (*CollectManager) InitDFK8sEnv ¶
func (manager *CollectManager) InitDFK8sEnv() (err error)
type CollectorScheduler ¶
type CollectorScheduler struct {
// contains filtered or unexported fields
}
CollectorScheduler Struct cm : 콜렉터 생성 및 시작, 중지 및 삭제 를 위한 매니저 객체 inMemoryTopicMap : 토픽 관련 정보를 다루기 위한 inMemoryTopic 구조체 topicQue : Topic 추가 및 삭제 처리 요청을 담아두는 Queue
func NewCollectorScheduler ¶
func NewCollectorScheduler(wg *sync.WaitGroup, manager *CollectManager) (*CollectorScheduler, error)
func (CollectorScheduler) AddTopicsToCSPCollector ¶
func (cScheduler CollectorScheduler) AddTopicsToCSPCollector(addTopicList []string)
AddTopicsToCSPCollector csp type 별로 collector 에게 topic 을 추가 (topicMap)
func (CollectorScheduler) AddTopicsToCollector ¶
func (cScheduler CollectorScheduler) AddTopicsToCollector(addTopicList []string, maxHostCount int)
AddTopicsToCollector
스케줄러의 Topic 관리는 cScheduler.inMemoryTopicMap 와 cb-store 로 이루어 집니다.
- cScheduler.inMemoryTopicMap > TopicMap => 실제 컬렉터 당 가지고 있는 토픽 맵 리스트 > CollectorPerAgentCnt => 컬렉터당 가지고 있는 토픽 개수 array
- cb-store > types.CollectorTopicMap < /push/collectorTopicMap/{토픽 맵 리스트} > => cScheduler.inMemoryTopicMap.TopicMap 을 고스란히 저장 > types.Topic < /push/topic/{토픽} > => 해당 토픽이 배치된 collector idx 값 저장
설명 ppt 링크 :
func (CollectorScheduler) BalanceTopicsToCollector ¶
func (cScheduler CollectorScheduler) BalanceTopicsToCollector(maxHostCount int)
BalanceTopicsToCollector 토픽 추가 & 삭제 처리가 완료된 topicMap 을 기준으로 최적화 배치 수행
func (CollectorScheduler) DeleteTopicsToCSPCollector ¶
func (cScheduler CollectorScheduler) DeleteTopicsToCSPCollector(delTopicList []string)
DeleteTopicsToCSPCollector csp type 별로 collector 에게 topic 을 삭제 (topicMap)
func (CollectorScheduler) DeleteTopicsToCollector ¶
func (cScheduler CollectorScheduler) DeleteTopicsToCollector(delTopicList []string)
DeleteTopicsToCollector
- cb-store 의 { key: /push/topic/{토픽}, value: 콜렉터 idx 값 } 토대로 topicMap 에 등록된 topic 을 삭제합니다.
- 해당 topic 을 가지고 있는 agent 의 상태를 unhealthy 로 업데이트 합니다.
설명 ppt 링크 :
func (CollectorScheduler) DistributeTopicsToCollector ¶
func (cScheduler CollectorScheduler) DistributeTopicsToCollector()
DistributeTopicsToCollector
- 토픽 추가, 삭제, 최적화 배치가 끝난 topicMap 을 기준으로 각 collector 에게 topic 분배
- helm 의 경우 topicMap 현황을 configmap 에 작성
- docker-compose 의 경우 topicMap 현황을 go-channel 을 통해 collector(go-routine) 에게 분배
func (CollectorScheduler) ProvisioningCollectorByCSP ¶
func (cScheduler CollectorScheduler) ProvisioningCollectorByCSP()
ProvisioningCollectorByCSP types.TotalCspCnt 만큼 콜렉터 생성
func (CollectorScheduler) ScaleInOutCollector ¶
func (cScheduler CollectorScheduler) ScaleInOutCollector()
ScaleInOutCollector
- 토픽 추가, 삭제, 최적화 배치가 끝난 topicMap 을 기준으로 collector 개수 동기화
- 현재 생성되어 있는 collector 개수 < topicMap collector 개수 => scale out
- 현재 생성되어 있는 collector 개수 > topicMap collector 개수 => scale in
func (CollectorScheduler) ScheduleCSPBasedCollector ¶
func (cScheduler CollectorScheduler) ScheduleCSPBasedCollector(addTopicList []string, delTopicList []string)
ScheduleCSPBasedCollector
- types.TotalCspCnt 만큼 콜렉터 생성
- types 에 정의된 csp 별로 collector 미리 생성
- agent 는 topic 및 cspType 정보를 같이 넘겨주며, DF는 agentCspType 별로 collector 에게 분배
- 해당 csp 정책의 동작 테스트는 해봐야합니다. 로직 구현은 해놓았으나 정상 동작 유무는 확인이 필요합니다.
func (CollectorScheduler) SchedulePolicyBasedCollector ¶
func (cScheduler CollectorScheduler) SchedulePolicyBasedCollector(addTopicList []string, delTopicList []string)
SchedulePolicyBasedCollector
=== InMemory 연산 Start === - AddTopicsToCollector: cScheduler.inMemoryTopicMap (콜렉터의 토픽 현황 in-memory 객체) 에 추가 토픽들을 더합니다. - DeleteTopicsToCollector: cScheduler.inMemoryTopicMap 에 삭제 토픽들을 제외합니다. - BalanceTopicsToCollector: cScheduler.inMemoryTopicMap 에 Topic 최적화 배치 작업을 수행합니다. === InMemory 연산 End === === InMemory 연산 결과값 기반 기능 동작 수행 Start === - ScaleInOutCollector: cScheduler.inMemoryTopicMap 와 현재 실제로 생성되어 있는 collector 개수를 비교하여 현상 유지(개수 유지), scale in 또는 out 을 수행합니다. - DistributeTopicsToCollector: cScheduler.inMemoryTopicMap 의 topic 설정 값대로 현재 생성되어 있는 콜렉터들에게 Topic 리스트를 전달합니다. - WriteCollectorMapToInMemoryDB: cScheduler.inMemoryTopicMap.TopicMap 을 configmap 또는 cb-store 에 저장합니다. === InMemory 연산 결과값 기반 기능 동작 수행 End ===
func (CollectorScheduler) Scheduler ¶
func (cScheduler CollectorScheduler) Scheduler()
func (CollectorScheduler) WriteCollectorMapToInMemoryDB ¶
func (cScheduler CollectorScheduler) WriteCollectorMapToInMemoryDB()
WriteCollectorMapToInMemoryDB
- 최종 연산이 끝난 topicMap 을 cb-store 에 저장
type InMemoryTopic ¶
InMemoryTopic Struct TopicMap : 콜렉터 마다 가지고 있는 Topic 현황 CollectorPerAgentCnt : 콜렉터 마다 가지고 있는 Topic 개수 현황