목성 프레임 입구 소개

목성 프레임 입구 소개
개술
이 글 은 주피 터 마이크로 서비스 프레임 워 크 의 응용 입 구 를 소개 합 니 다. 이 글 을 쓴 이 유 는 주피 터 프레임 워 크 의 운영 체 제 를 깊이 이해 하기 위해 서 입 니 다.
데이터 구조 소개
다음은 주피 터 의 애플 리 케 이 션 대상 을 살 펴 보 겠 습 니 다.
// 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
}

응용 프로그램 대상 은 몇 가지 구성 부분 으로 나 눌 수 있 습 니 다.
  • cycle, smu, initOnce, startupOnce, stopOnce 운영 체제 에 대한 도움말 필드.
  • server, workers, jobs 라 는 세 필드 는 각종 서 비 스 를 저장 하 는 데 사용 되 며 서비스 가 인 터 페 이 스 를 실현 하면 프레임 워 크 는 같은 절차 에 따라 이러한 서 비 스 를 시작 할 수 있다.
  • register 는 서비스 발견 과 등록 전략의 실제 대상 으로 etcd, consul 일 수 있 으 며 Registry 인터페이스 만 실현 하면 된다.
  • hooks 는 프레임 이 실 행 될 때의 각 갈고리 함수
  • 에 저 장 됩 니 다.
  • configParser 이 필드 는 설정 정 보 를 저장 하고 설정 정보의 출처 는 파일, 설정 센터 주소 등 이 될 수 있 습 니 다.
  • logger 로그 대상, xlog 패 키 지 는 zap 로그 라 이브 러 리 의 2 차 수정 입 니 다.

  • 응용 프로 세 스
    이 절 에서 우 리 는 프레임 의 시작 절 차 를 소개 합 니 다. 절차 도 는 다음 과 같 습 니 다.
    애플 리 케 이 션 대상 은 Jupiter 프레임 워 크 의 응용 입구 입 니 다.
  • SetRegistry () 는 서비스 발견 과 등록 을 주입 하 는 데 사 용 됩 니 다. 예 를 들 어 registry 패키지 의 etcdv 3 모듈 입 니 다.
  • Startup () 방법 은 각 서비스의 초기 화 방법 이다.
  • Serve (), Schedule (), Job () 은 각종 서비스의 주입 방법 이다.
  • RegisterHooks () 는 갈 고 리 를 등록 하 는 방법 이다.예 를 들 어 시작 전후 에 행동 을 하면 이 방법 을 통과 할 수 있다.
  • Run () 방법 은 응용 을 시작 하 는 각 서비스 와 프레임 워 크 사용자 정의 서비스, 예 를 들 어 모니터링 등 이다.
  • Stop () 은 시스템 신 호 를 받 은 후 일부 종료 작업 을 한다.

  • 방법 소개
    다음은 몇 가지 시작 절차 의 주요 방법 을 소개 한다.
    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 () 방법 은 프로그램 이 종 료 될 때 각 서비스의 종료 방법 을 호출 하여 각 서 비 스 를 끄 고 끊 습 니 다.

    좋은 웹페이지 즐겨찾기