Сервер MOA
Введение
Пример использования
Пример можно посмотреть здесь.
Обзор протокола Redis
Доступ к сервису или инициирование вызова сервиса можно получить с помощью команд redis-cli -h -p get/ping/info.
Get:
PING — аналогично команде PING в Redis, возвращает PONG.
INFO — аналогично команде INFO в Redis, возвращает информацию о MOA и состоянии сети (данные json, содержащие узлы moa и network).
Пример:
{"moa":{"recv":0,"proc":0,"error":0},"network":{"read_count":1,"read_bytes":9,"write_count":0,"write_bytes":0,"dispatcher_go":1,"connections":1}}
Установка
Установите ZooKeeper:
$Zookeeper/bin/zkServer.sh start
go get github.com/blackbeans/go-moa/core
go get github.com/blackbeans/go-moa/proxy
//Интерфейс
type DemoResult struct {
Hosts []string `json:"hosts"`
Uri string `json:"uri"`
}
type IGoMoaDemo interface {
GetDemoName(serviceUri, proto string) (DemoResult, error)
}
//Реализация сервиса
type GoMoaDemo struct {
}
func (self GoMoaDemo) GetDemoName(serviceUri, proto string) ( DemoResult, error){
return DemoResult{[]string{"fuck gfw"}, serviceUri}, nil
}
Соглашение:
Для удобства клиентов при возврате ошибок, последний возвращаемый параметр интерфейса go-moa должен быть типа error. Также, чтобы соответствовать единому результату в Java, количество возвращаемых параметров не должно превышать двух.
Запустите сервер:
func main(){
app := core.NewApplcation("./conf/cluster_test.toml",
func() []proxy.Service {
return []proxy.Service{
proxy.Service{
ServiceUri: "/service/bibi/go-moa",
Instance: GoMoaDemo{},
Interface: (*IGoMoaDemo)(nil)}}
})
//Настройка запуска
ch := make(chan os.Signal, 1)
signal.Notify(ch, os.Kill)
//Завершение работы сервера при получении сигнала kill
<-ch
app.DestoryApplication()
}
Примечание:
Application требует соответствующий файл конфигурации Moa в формате toml. Подробности см. в файле ./conf/cluster_test. toml.
После успешного запуска сервиса его можно протестировать с помощью клиента. Подробные инструкции см. [здесь](http://github. com/blackbeans/go-moa-client/blob/master/README.md).
Benchmark
Среда: Macbook Pro 2.2 GHz Intel Core i7
Результат redis-benchmark: 53527,46 запросов в секунду
Тест go:
go test --bench=".*" github.com/blackbeans/go-moa/core -run=BenchmarkApplication
Результаты:
BenchmarkApplication-8 20000 64517 ns/op
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )