Справочник по установке базовых компонентов Tars Deploy
Готовая среда Golang, tarsgo требует версию golang 1.9.x и выше.
Установка tars: go get github.com/TarsCloud/TarsGo/tars
Компиляция протокола tars в инструмент Golang:
cd $GOPATH/src/github.com/TarsCloud/TarsGo/tars/tools/tars2go && go build .
cp tars2go $GOPATH/bin
Проверьте, успешно ли были установлены tars в пути GOPATH.
Использование сервисов фреймворка Tars, имя сервиса состоит из трех частей:
APP: Имя приложения, которое идентифицирует небольшую коллекцию сервисов. В системе Tars имя приложения должно быть уникальным. Например: TestApp;
Сервер: Имя сервиса, имя процесса, предоставляющего сервис. Имя сервера носит название в соответствии с функцией сервиса. Обычно названо: XXServer, например, HelloServer;
Servant: Поставщик сервиса, предоставляющий интерфейс или экземпляр конкретного сервиса. Например: HelloImp;
Инструкции:
Один Сервер может содержать несколько Servant, и система будет использовать комбинацию App + Сервер + Servant для определения маршрутизационного имени сервиса в системе, называемого маршрутизационным объектом. Это имя должно быть уникальным в целой системе, чтобы уникально идентифицировать себя при внешнем обслуживании.
Поэтому, когда вы определяете App, вам нужно учитывать уникальность App.Пример: TestApp.HelloServer.HelloObj.
После успешного входа вы попадете в систему управления Tars, как показано ниже:
В меню дерева системы управления Tars доступны следующие функции:
Развертывание сервиса фактически может быть выполнено после разработки сервиса, но рекомендуется выполнить его первым.
Как показано ниже:
Запустите скрипт create_tars_server.sh для автоматического создания файлов, необходимых для сервиса. Если во время выполнения возникнет синтаксическая ошибка, попробуйте использовать dos2unix create_tars_server.sh
для кодирования.
sh $GOPATH/src/github.com/TarsCloud/TarsGo/tars/tools/create_tars_server.sh [App] [Server] [Servant]
Пример:
sh $GOPATH/src/github.com/TarsCloud/TarsGo/tars/tools/create_tars_server.sh TestApp HelloGo SayHello
```После выполнения команды, код будет сгенерирован в GOPATH, и директория будет названа в формате `APP/Server`. Сгенерированный код также указывает конкретный путь.```shell
[root@1-1-1-1 ~]# sh $GOPATH/src/github.com/TarsCloud/TarsGo/tars/tools/create_tars_server.sh TestApp HelloGo SayHello
[создание сервера: TestApp.HelloGo ...]
[создание директории: $GOPATH/src/TestApp/HelloGo/]
>>>Теперь выполняется:./start.sh >>>>
>>>Теперь выполняется:./Server.go >>>>
>>>Теперь выполняется:./Server.conf >>>>
>>>Теперь выполняется:./ServantImp.go >>>>
>>>Теперь выполняется:./makefile >>>>
>>>Теперь выполняется:./Servant.tars >>>>
>>>Теперь выполняется:client/client.go >>>>
>>>Теперь выполняется:vendor/vendor.json >>>>
# runtime/internal/sys
>>> Отлично! Завершено! Вы можете перейти в $GOPATH/src/TestApp/HelloGo
>>> Подсказка: После редактирования JCE-файла используйте следующую команду для автоматического генерирования go-файла.
>>> $GOPATH/bin/tars2go *.tars
```### Определение файлов интерфейсаФайл интерфейса определяет метод запроса и параметры поля и типа. Для правил определения файлов интерфейса обратитесь к tars_tup.md.
Для теста определим интерфейс echoHello, параметр запроса клиента — это короткие строки, такие как "tars", а сервис отвечает клиенту "hello tars".
```shell
# cat $GOPATH/src/TestApp/HelloGo/SayHello.tars
module TestApp{
interface SayHello{
int echoHello(string name, out string greeting);
};
};
Примечание: Ключевое слово out в параметрах указывает на выходной параметр.
Сначала преобразуем файл протокола TARS в форму на языке Go.
$GOPATH/bin/tars2go SayHello.tars
Теперь реализуем логику сервера: клиент отправляет "имя", а сервер отвечает "hello имя".
cat $GOPATH/src/TestApp/HelloGo/SayHelloImp.go
package main
type SayHelloImp struct {
}
func (imp *SayHelloImp) EchoHello(name string, greeting *string) (int32, error) {
*greeting = "hello " + name
return 0, nil
}
Примечание: Здесь имя функции начинается с заглавной буквы, так как методы на языке Go должны быть экспортированы.
Скомпилируем основную функцию, инициализируем начальный код с помощью фреймворка TARS.
cat $GOPATH/src/TestApp/HelloGo/HelloGo.go
package main
import (
"github.com/TarsCloud/TarsGo/tars"
"TestApp"
)
func main() { // Инициализация сервера
imp := new(SayHelloImp) // Создание Imp
app := new(TestApp.SayHello) // Создание и инициализация A JCE
cfg := tars.GetServerConfig() // Получение объекта конфигурационного файла
app.AddServant(imp, cfg.App+"."+cfg.Server+".SayHelloObj") // Регистрация сервера
tars.Run()
}
```Скомпилируем и соберём исполняемый файл и упакуем релиз.
```shell
make && make tar
Будет сгенерирован исполняемый файл HelloGo
и пакет релиза HelloGo.tgz
.
package main
import (
"fmt"
"github.com/TarsCloud/TarsGo/tars"
"TestApp"
)
var comm *tars.Communicator
func main() {
comm = tars.NewCommunicator()
obj := "TestApp.HelloGo.SayHelloObj@tcp -h 127.0.0.1 -p 3002 -t 60000"
app := new(TestApp.SayHello)
/*
// если ваш сервис был зарегистрирован в tars registry
comm = tars.NewCommunicator()
obj := "TestApp.HelloGo.SayHelloObj"
// tarsregistry сервис на 192.168.1.1:17890
comm.SetProperty("locator", "tars.tarsregistry.QueryObj@tcp -h 192.168.1.1 -p 17890")
*/
comm.StringToProxy(obj, app)
reqStr := "tars"
var resp string
ret, err := app.EchoHello(reqStr, &resp)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("ret: ", ret, "resp: ", resp)
}
Код зависимостей TestApp
сгенерирован с помощью tars2go
.
obj
указывает адрес и порт сервера. Если сервер не зарегистрирован в реестре tars
, вам нужно знать адрес и порт сервера и указать их в obj
. В примере протокол — TCP
, адрес сервера — локальный адрес, а порт — 3002
. Если у вас несколько служб-серверов, вы можете указать их так: TestApp.HelloGo.SayHelloObj@tcp -h 127.0.0.1 -p 9985:tcp -h 192.168.1.1 -p 9983
, чтобы запросы распределялись между несколькими службами-серверами.
Если служба уже зарегистрирована в реестре tars
, указывать адрес и порт сервера не нужно, но вам нужно указать адрес главного сервера при инициализации коммуникатора.- коммуникатор communicator, используется для взаимодействия с сервером.
Сборка и тестирование
# go build client.go
# ./client
ret: 0 resp: hello tars
Tarsgo поддерживает HTTP-сервисы. Следуйте приведенным выше шагам для создания сервиса. Обработка HTTP-запросов в Tarsgo заключена в стандартные библиотеки Go, поэтому использование очень простое.
package main
import (
"net/http"
"github.com/TarsCloud/TarsGo/tars"
)
func main() {
mux := &tars.TarsHttpMux{}
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello tars"))
})
cfg := tars.GetServerConfig()
tars.AddHttpServant(mux, cfg.App+"."+cfg.Server+".HttpSayHelloObj") //Регистрация HTTP-сервера
tars.Run()
}
Кроме того, вы можете напрямую вызывать другие сервисы Tars, как это описано в разделе "Разработка клиента".
В меню управления системой Tars найдите развернутый вами сервис и перейдите на страницу сервиса.
Выберите "Управление выпуском", выберите узел для выпуска, нажмите "Выпустить выбранный узел", нажмите "Загрузить пакет выпуска", выберите пакет выпуска, как показано ниже:
После загрузки пакета выпуска нажмите на выпадающее меню "Выбрать версию выпуска", и ваш загруженный сервис появится в списке. Выберите верхнюю строку (последний загруженный).
Нажмите "Выпустить", сервис начнет выпускаться. После успешного выпуска появится следующий интерфейс, как показано ниже:Необходимо предоставить текст для перевода. Пожалуйста, укажите текст, который нужно перевести.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )