목성 프레임 입구 소개
4082 단어 마이크로 서비스
개술
이 글 은 주피 터 마이크로 서비스 프레임 워 크 의 응용 입 구 를 소개 합 니 다. 이 글 을 쓴 이 유 는 주피 터 프레임 워 크 의 운영 체 제 를 깊이 이해 하기 위해 서 입 니 다.
데이터 구조 소개
다음은 주피 터 의 애플 리 케 이 션 대상 을 살 펴 보 겠 습 니 다.
// Application is the framework's instance, it contains the servers, workers, client and configuration settings.
// Create an instance of Application, by using &Application{}
// Jupiter
type Application struct {
cycle *xcycle.Cycle //
smu *sync.RWMutex
initOnce sync.Once
startupOnce sync.Once
stopOnce sync.Once
servers []server.Server // ,http, grpc
workers []worker.Worker //
jobs map[string]job.Runner //
logger *xlog.Logger //
registerer registry.Registry //
hooks map[uint32]*xdefer.DeferStack
configParser conf.Unmarshaller //
disableMap map[Disable]bool
HideBanner bool
}
응용 프로그램 대상 은 몇 가지 구성 부분 으로 나 눌 수 있 습 니 다.
응용 프로 세 스
이 절 에서 우 리 는 프레임 의 시작 절 차 를 소개 합 니 다. 절차 도 는 다음 과 같 습 니 다.
애플 리 케 이 션 대상 은 Jupiter 프레임 워 크 의 응용 입구 입 니 다.
방법 소개
다음은 몇 가지 시작 절차 의 주요 방법 을 소개 한다.
Startup () 방법
//Startup
func (app *Application) Startup(fns ...func() error) error {
app.initialize() // app
//
if err := app.startup(); err != nil {
return err
}
//
return xgo.SerialUntilError(fns...)()
}
Startup () 방법 은 Application 의 초기 화 에 해당 합 니 다.초기 화 는 두 부분 으로 나 뉘 는데 일 부 는 프레임 워 크 정의 의 초기 화 순서 로 시작 전 삼, 로드 설정, 링크 추적 설정, 데이터 모니터링 서비스, 서비스 관리 등 을 포함한다.다른 부분 은 프레임 워 크 사용자 가 스스로 정의 하 는 각 서비스의 초기 화 입 니 다. 이 부분 함 수 는 보통 Serve (), Job (), Schedule () 몇 가지 방법의 호출 함수 입 니 다.
RegisterHooks () 방법
//RegisterHooks register a stage Hook
func (app *Application) RegisterHooks(k uint32, fns ...func() error) error {
hooks, ok := app.hooks[k]
if ok {
hooks.Push(fns...)
return nil
}
return fmt.Errorf("hook stage not found")
}
이 방법 은 주로 시작 전후 에 로 그 를 인쇄 하 는 등 프레임 워 크 의 갈고리 방법 을 실행 하 는 것 이다.
Run () 방법
// Run run application
//
func (app *Application) Run(servers ...server.Server) error {
app.smu.Lock()
app.servers = append(app.servers, servers...)
app.smu.Unlock()
app.waitSignals() //start signal listen task in goroutine
defer app.clean()
// todo jobs not graceful
app.startJobs()
// start servers and govern server
app.cycle.Run(app.startServers)
// start workers
app.cycle.Run(app.startWorkers)
//blocking and wait quit
if err :=
이 방법 은 시작 방법 을 응용 하 는 것 이다.Run () 방법 은 각각 server. Server 인 터 페 이 스 를 실현 한 대상 에 들 어 갈 수 있 습 니 다.waitSignals () 는 시스템 의 신 호 량 을 감청 하기 위해 goroutine 을 시작 합 니 다.이 어 정시 작업, 각 서비스 (grpc, http, govern), 작업 대기 열 을 차례대로 시작 합 니 다.
이 방법 에서 grpc, http, govern 서 비 스 는 등록 센터 에 모든 서비스의 정 보 를 등록 합 니 다.서비스 발견 에 사용 합 니 다.
Stop () 방법
Stop () 방법 은 프로그램 이 종 료 될 때 각 서비스의 종료 방법 을 호출 하여 각 서 비 스 를 끄 고 끊 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
마이크로 서비스 간에feign을 통해 서로 호출되며, 크로스 서버 호출 시 이상이 발생: No route to host해결: feign이 다른 서비스를 호출하는 것도 eureka 등록센터 서비스를 획득하여 서비스가 등록된 IP에 문제가 있는지 추측하고 지정한 appId의 실례를 조회한다. eureka url/eureka/apps/{...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.