1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/blackbeans-go-moa

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Сервер MOA

Введение

  • На основе ZK реализуется адресное обнаружение.
  • Построен на основе протокола Redis для выполнения команд get, ping и info.
  • Используется протокол сериализации JSON для обеспечения хорошей межъязыковой совместимости.
  • Можно разрабатывать клиентские приложения с использованием существующих клиентов Redis на многих языках.

Пример использования
Пример можно посмотреть здесь.

Обзор протокола Redis

  • Доступ к сервису или инициирование вызова сервиса можно получить с помощью команд redis-cli -h -p get/ping/info.

  • Get:

    • action — имя сервиса (service-uri);
    • m — название метода, который нужно вызвать (обеспечена совместимость с заглавными буквами в именах методов для языков Go и Java);
    • args — последовательность параметров для метода m.
  • 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 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/blackbeans-go-moa.git
git@api.gitlife.ru:oschina-mirror/blackbeans-go-moa.git
oschina-mirror
blackbeans-go-moa
blackbeans-go-moa
master