# 开发模式介绍

## 目录

> * [介绍](#chapter-1)
> * [开发模式](#chapter-2)
> * [管理系统](#chapter-3)
> * [服务命名](#chapter-4)
> * [服务部署](#chapter-5)
> * [服务发布](#chapter-6)

## 1 介绍

由于TARS支持多语言开发服务, 因此不同开发语言, 开发环境是不一样的, 但是整体开发模式是相似的.

## 2 开发模式

无论什么语言, 服务的开发模式大体如下:

* Tars通过自定义的一套语法定义, 服务间的通信协议
* Tars各语言都提供了一套lib库, 可以快速基于以上通信协议实现服务
* 各语言服务可以相互调用, 协议是一致的
* 服务可以打包发布到Tars框架上管理
* 可以在web平台管理所有服务

当你想调用Tars服务端时, 客户端开发模式如下:

* 获取到Tars服务器端的tars协议文件
* 使用对应语言的工具(tars2xxx)将tars协议文件生成对应的客户端代码
* 结合Tars提供的各语言的库 以及 生成代码, 即可完成服务端的请求和响应

## 3 管理系统

用户登录成功后，会进入Tars管理系统，如下图

![](https://211854462-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LjKWVpRE8j8fOTPPSus%2Fuploads%2Fgit-blob-5e886b9dd008cc15b375ce382fb3ebc7b6a5d81f%2Ftars_web_index.png?alt=media)

TARS管理系统的菜单树下，有以下功能：

* 业务管理：包括已部署的服务，以及服务管理、发布管理、服务配置、服务监控、特性监控等；
* 运维管理：包括服务部署、扩容、模版管理等；

## 4 服务命名

使用Tars框架的服务，其的服务名称有三个部分：

* APP：应用名，标识一组服务的一个小集合，在Tars系统中，应用名必须唯一。例如：TestApp；
* Server：服务名，提供服务的进程名称，Server名字根据业务服务功能命名，一般命名为：XXServer，例如HelloServer；
* Servant：服务者，提供具体服务的接口或实例。例如:HelloObj；

说明：

* 一个Server可以包含多个Servant，系统会使用服务的App + Server + Servant，进行组合，来定义服务在系统中的路由名称，称为路由Obj，其名称在整个系统中必须是唯一的，以便在对外服务时，能唯一标识自身。
* 每个Servant对应一个独立的端口, 对外服务.
* 因此在定义APP时，需要注意APP的唯一性。

例如：TestApp.HelloServer.HelloObj。

## 5 服务部署

服务部署，其实也可以在服务开发后进行，不过建议先做。

点击主菜单“运维管理”->“服务部署”，如下图：

![](https://211854462-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LjKWVpRE8j8fOTPPSus%2Fuploads%2Fgit-blob-b045c27f443861fa50d57fb624f80d94e00ef743%2Ftars_go_quickstart_bushu1.png?alt=media)

* “应用”指你的服务程序归在哪一个应用下，例如：“TestApp”。
* “服务名称”指你的服务程序的标识名字，例如：“HelloServer”。
* “服务类型”指你的服务程序用什么语言写的，例如：java的选择“tars\_java”。
* “模版” 指你的服务程序在启动时，设置的配置文件的名称
* “节点” 指服务部署的机器IP。
* “Set分组” 指设置服务的Set分组信息，Set信息包括3部分：Set名、Set地区、Set组名。
* “OBJ名称” 指Servant的名称。
* “OBJ绑定IP” 指服务绑定的机器IP，一般与节点一样。
* “端口” 指OBJ要绑定的端口。
* “端口类型” 指使用TCP还是UDP。
* “协议” 指应用层使用的通信协议，Tars框架默认使用tars协议。
* “线程数” 指业务处理线程的数目。
* “最大连接数” 指支持的最大连接数。
* “队列最大长度” 指请求接收队列的大小。
* “队列超时时间” 指请求接收队列的超时时间。

点击“确定”提交，成功后，菜单数下的TestApp应用将出现HelloServer名称，同时将在右侧看到你新增的服务程序信息，如下图：

![](https://211854462-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LjKWVpRE8j8fOTPPSus%2Fuploads%2Fgit-blob-84d74d65ebd4686a2891f9be710ad4eb86f52ca4%2Ftars_go_quickstart_service_inactive.png?alt=media)

在管理系统上的部署暂时先到这里，到此为止，只是使你的服务在管理系统上占了个位置，真实程序尚未发布。

## 6 服务发布

在管理系统的菜单树下，找到你部署的服务，点击进入服务页面。

选择“发布管理”，选中要发布的节点，点击“发布选中节点”，点击“上传发布包”，选择已经编译好的发布包，如下图：

![](https://211854462-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LjKWVpRE8j8fOTPPSus%2Fuploads%2Fgit-blob-9cdf2d20295edcd28ae3af317e60268a3955547f%2Ftars_go_quickstart_release.png?alt=media)

上传好发布包后，点击“选择发布版本”下拉框就会出现你上传的服务程序，选择最上面的一个（最新上传的）。

点击“发布”，服务开始发布，发布成功后，出现下面的界面，如下图：

![](https://211854462-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LjKWVpRE8j8fOTPPSus%2Fuploads%2Fgit-blob-9ceecf43afd9276bb3515ad4b3e787810454b5aa%2Ftars_go_quickstart_service_ok.png?alt=media)

若失败的话，可能是命名问题，上传问题，以及其他环境问题。欢迎开启Issue进行讨论。
