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

OSCHINA-MIRROR/zuoqi200-TarsGo

Клонировать/Скачать
tars_go_quickstart_en.md 15 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 08.06.2025 21:13 bbeb55c

Быстрый старт с Tars Go

Подготовка окружения

Справочник по установке базовых компонентов 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, как показано ниже:tars_manager_main

В меню дерева системы управления Tars доступны следующие функции:

  • Управление бизнесом: включает развернутые сервисы, управление сервисами, управление выпусками, конфигурацию сервисов, мониторинг сервисов, мониторинг функций и т. д.
  • Операция и обслуживание: включает развертывание сервисов, масштабирование, управление шаблонами и т. д.

Развертывание сервиса

Развертывание сервиса фактически может быть выполнено после разработки сервиса, но рекомендуется выполнить его первым.

Как показано ниже:новый_проект

  • Приложение: Приложение, принадлежащее сервисной программе, например: TestApp.
  • Имя сервиса: Уникальное имя сервисной программы, например: HelloGo.
  • Тип сервиса: Язык, на котором написана сервисная программа, например: tars_go.
  • Шаблон: Имя конфигурационного файла, которое задается при запуске сервисной программы. По умолчанию можно использовать tars.default.
  • Узел: IP-адрес машины, на которой развернут сервис.
  • Группа узлов: Устанавливает информацию о группе узлов сервиса. Информация о группе включает 3 части: имя группы, область группы и имя группы узлов.
  • Имя OBJ: Имя объекта-сервера (Servant).
  • IP-адрес привязки OBJ: IP-адрес машины, на которой привязан сервис, обычно совпадает с узлом.
  • Порт: Порт, на который привязывается OBJ.
  • Тип порта: Использование TCP или UDP.
  • Протокол: Коммуникационный протокол, используемый уровнем приложения. По умолчанию фреймворк Tars использует протокол tars.
  • Количество потоков: Количество потоков для обработки бизнес-логики.
  • Максимальное количество соединений: Максимальное количество поддерживаемых соединений.
  • Максимальная длина очереди: Размер очереди приема запросов.
  • Время ожидания очереди: Время ожидания для запроса приема очереди.Нажмите "Отправить", после успешного выполнения, приложение TestApp в меню появится имя HelloServer, и вы увидите информацию о вашем новом сервисе справа, как показано ниже:

service_inactive

Разработка сервиса

Создание сервиса

Запустите скрипт 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 

Разработка HTTP-сервиса

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 )

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

1
https://api.gitlife.ru/oschina-mirror/zuoqi200-TarsGo.git
git@api.gitlife.ru:oschina-mirror/zuoqi200-TarsGo.git
oschina-mirror
zuoqi200-TarsGo
zuoqi200-TarsGo
master