Skip to content

Latest commit

 

History

History
105 lines (74 loc) · 2.48 KB

2.engine_group.md

File metadata and controls

105 lines (74 loc) · 2.48 KB

엔진 그룹 생성하기

XORM 은 엔진그룹을 생성하여 마스터/슬레이브 데이터베이스를 관리할 수 있습니다. 이는 xorm.NewEngineGroup 을 사용하며 예제는 다음과 같습니다.:

import (
    _ "github.com/lib/pq"
    "github.com/xormplus/xorm"
)

var eg *xorm.EngineGroup

func main() {
	conns := []string{
		"postgres://postgres:root@localhost:5432/test?sslmode=disable;", // 첫번째 항목이 master
		"postgres://postgres:root@localhost:5432/test1?sslmode=disable;", // slave
		"postgres://postgres:root@localhost:5432/test2?sslmode=disable", // slave
	}
    
    var err error
	eg, err = xorm.NewEngineGroup("postgres", conns)
}

또는

import (
    _ "github.com/lib/pq"
    "github.com/xormplus/xorm"
)

var eg *xorm.EngineGroup

func main() {
    var err error
    master, err := xorm.NewEngine("postgres", "postgres://postgres:root@localhost:5432/test?sslmode=disable")
    if err != nil {
		return
	}
    
    slave1, err := xorm.NewEngine("postgres", "postgres://postgres:root@localhost:5432/test1?sslmode=disable")
    if err != nil {
		return
	}
    
    slave2, err := xorm.NewEngine("postgres", "postgres://postgres:root@localhost:5432/test2?sslmode=disable")
    if err != nil {
		return
	}
   
   	slaves := []*xorm.Engine{slave1, slave2}
	eg, err = xorm.NewEngineGroup(master, slaves)
}

일반적으로는 하나의 엔진 그룹을 생성합니다. 하지만 다양한 데이터베이스를 사용하는 경우 여러 엔진 그룹을 생성할 수 있습니다. EngineGroup 은 고루틴으로 실행할 수 있습니다.

엔진 그룹을 수동으로 종료하려면 enginegroup.Close 을 호출합니다.

  • NewEngineGroup
func NewEngineGroup(args1 interface{}, args2 interface{}, policies ...GroupPolicy) (*EngineGroup, error)
  • Master
func (eg *EngineGroup) Master() *Engine

마스터 데이터베이스 Engine 을 반환합니다. 이를 이용해 마스터에만 동작을 실행시킬 수 있습니다.

  • Slave
func (eg *EngineGroup) Slave() *Engine

로드밸런스 정책에 따라 현재 슬레이브 엔진을 반환합니다.

  • Slaves
func (eg *EngineGroup) Slaves() []*Engine

모든 슬레이브를 반환합니다.

  • GetSlave
func (eg *EngineGroup) GetSlave(i int) *Engine

인덱스에 따라 슬레이브 엔진을 반환합니다.

  • SetPolicy
func (eg *EngineGroup) SetPolicy(policy GroupPolicy) *EngineGroup

로드밸런스 정책을 설정합니다.