Tars环境搭建(超详细版)

本文详细介绍了如何使用Docker搭建Tars框架,并通过TarsGo进行服务开发。首先,介绍了Tars框架的背景和依赖,然后演示了Docker环境下MySQL的准备和Tars框架的部署步骤。接着,展示了TarsGo的环境配置、工具安装及服务编写过程,包括创建服务、转换协议文件和编写服务接口。最后,提到了服务的编译、验证和部署方法,以及客户端代码的编写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Tars环境搭建(超详细版)

简介

Tars是基于名字服务使用Tars协议的高性能RPC开发框架,同时配套一体化的服务治理平台,帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用。

Tars是将腾讯内部使用的微服务架构TAF(Total Application Framework)多年的实践成果总结而成的开源项目。Tars这个名字来自《星际穿越》电影中机器人Tars, 电影中Tars有着非常友好的交互方式,任何初次接触它的人都可以轻松的和它进行交流,同时能在外太空、外星等复杂地形上,超预期的高效率的完成托付的所有任务。 拥有着类似设计理念的Tars也是一个兼顾易用性、高性能、服务治理的框架,目的是让开发更简单,聚焦业务逻辑,让运营更高效,一切尽在掌握。

目前该框架在腾讯内部,有100多个业务、10多万台服务器上运行使用。

整体架构

架构拓扑图

整体架构的拓扑图主要分为2个部分:服务节点与公共框架节点。

服务节点:

服务节点可以认为是服务所实际运行的一个具体的操作系统实例,可以是物理主机或者虚拟主机、云主机。随着服务的种类扩展和规模扩大,服务节点可能成千上万甚至数以十万计。 每台服务节点上均有一个Node服务节点和N(N>=0)个业务服务节点,Node服务节点会对业务服务节点进行统一管理,提供启停、发布、监控等功能,同时接收业务服务节点上报过来的心跳。

公共框架节点:

除了服务节点以外的服务,其他服务节点均归为一类。

公共框架节点,数量不定,为了自身的容错容灾,一般也要求在在多个机房的多个服务器上进行部署,具体的节点数量,与服务节点的规模有关,比如,如果某些服务需要打较多的日志,就需要部署更多的日志服务节点。

框架部署

tars框架十分的简单,只依赖mysql即可完成部署。tars官网提供了四种部署方案,开发者可以根据自己的技能点,进行部署。

  • 源码编译部署
  • Docker 部署
  • K8s Docker 部署
  • K8s 融合部署

我这里选择的是Docker部署的方案。

上文提到Tars框架部署依赖于MySQL,所以在进行Tars运行之前,我们需要准备好MySQL环境依赖。这里提供2条路:

1.本机服务器安装MySQL。

2.依赖于第三方服务,比如腾讯云的MySQL或者阿里云的MySQL。

假如没有购买第三方服务的数据库的话,则建议使用第一种方案。

  • 注意 MySQL 的 IP 和 root 密码,后续构建中需要使用
docker run -d -p 3306:3306 \
    --net=tars \
    -e MYSQL_ROOT_PASSWORD="123456" \
    --ip="172.25.0.2" \
    -v /data/framework-mysql:/var/lib/mysql \
    -v /etc/localtime:/etc/localtime \
    --name=tars-mysql \
    mysql:5.6

具体可以查看地址:https://tarscloud.github.io/TarsDocs/installation/docker.html

当MySQL准备好之后,开始部署 tarscloud/framework 框架。

1.拉取镜像

docker pull tarscloud/framework:latest

2.运行Docker

# 挂载的/etc/localtime是用来设置容器时区的,若没有可以去掉
# 3000端口为web程序端口
# 3001端口为web授权相关服务端口(docker>=v2.4.7可以不暴露该端口)
docker run -d \
    --name=tars-framework \
    --net=tars \
    -e MYSQL_HOST="172.25.0.2" \
    -e MYSQL_ROOT_PASSWORD="123456" \
    -e MYSQL_USER=root \
    -e MYSQL_PORT=3306 \
    -e REBUILD=false \
    -e INET=eth0 \
    -e SLAVE=false \
    --ip="172.25.0.3" \
    -v /data/framework:/data/tars \
    -v /etc/localtime:/etc/localtime \
    -p 3000:3000 \
    -p 3001:3001 \
    tarscloud/framework:v3.0.4

安装完毕后, 访问 http://${your_machine_ip}:3000 打开 web 管理平台,出现如下界面,则代表初始化成功。

在这里插入图片描述

TarsGo开发

此处略过Go环境开发

安装TarsGo工具

安装 tarsgo 创建项目脚手架:

# < go 1.17 
go get -u github.com/TarsCloud/TarsGo/tars/tools/tarsgo
# >= go 1.17
go install github.com/TarsCloud/TarsGo/tars/tools/tarsgo@latest

安装 tars2go 工具:

# < go 1.17 
go get -u github.com/TarsCloud/TarsGo/tars/tools/tars2go
# >= go 1.17
go install github.com/TarsCloud/TarsGo/tars/tools/tars2go@latest

服务编写

创建服务

tarsgo make App Server Servant GoModuleName
例如:
tarsgo make TestApp HelloGo SayHello github.com/Tars/test

和其他微服务框架一样Tars也具备自己的pb文件,.tars结尾。接口文件定义请求方法以及参数字段类型等,有关接口定义文件说明参考 tars_tup.md

为了测试,我们定义一下tars文件,WebApi.tars。

module ElasticSearchServiceApp
{
   struct Data
   {
      0 require string type;
      1 require string value;
   };

   interface WebApi
   {
      int Update(int id, string docType, vector<Data> data); // 更新接口
      int Insert(vector<Data> data); // 插入数据
      int Delete(int id, string docType); // 删除数据
      int BulkInsert(map<string, Data> data); // 批量插入
      vector<Data> Search(map<string, string> data); // 搜索
   };
};

服务端开发,我们先将tars协议文件转为Golang语言。

tars2go  -outdir=tars-protocol -module=ElasticSearchService WebApi.tars

编写接口

package main

import (
   "ElasticSearchService/tars-protocol/ElasticSearchServiceApp"
   "context"
   "github.com/TarsCloud/TarsGo/tars"
)

// WebApiImp servant implementation
type WebApiImp struct {
}

type ElasticSearchWebApiImp struct {
}

func (imp *WebApiImp) Init() (ret int32, err error) {
   return 1, nil
}

func (imp *WebApiImp) Update(tarsCtx context.Context, id int32, docType string, data []ElasticSearchServiceApp.Data) (ret int32, err error) {

   return 0, nil
}

func (imp *WebApiImp) Insert(tarsCtx context.Context, data []ElasticSearchServiceApp.Data) (ret int32, err error) {

   return 0, nil
}

func (imp *WebApiImp) Delete(tarsCtx context.Context, id int32, docType string) (ret int32, err error) {
   return 999, nil
}

func (imp *WebApiImp) BulkInsert(tarsCtx context.Context, data map[string]ElasticSearchServiceApp.Data) (ret int32, err error) {

   return 0, nil
}

func (imp *WebApiImp) Search(tarsCtx context.Context, data map[string]string) (ret []ElasticSearchServiceApp.Data, err error) {

   return []ElasticSearchServiceApp.Data{}, nil
}

注意: 这里函数名要大写,Go 语言方法导出规定。

编译 main 函数,初始代码以及有 tars 框架实现了。

编译

make && make tar

生存ElasticSearchServiceApp可执行文件以及压缩包。

验证服务

编写Client代码。

package main

import (
   "ElasticSearchService/tars-protocol/ElasticSearchServiceApp"
   "fmt"
   "github.com/TarsCloud/TarsGo/tars"
)

func main() {
   comm := tars.NewCommunicator()
   obj := fmt.Sprintf("ElasticSearchServiceApp.ElasticSearchService.WebApiObj@tcp -h 127.0.0.1 -p 10015 -t 60000")
   app := new(ElasticSearchServiceApp.WebApi)
   comm.StringToProxy(obj, app)
   ret, err := app.Delete(1, "1")
   if err != nil {
      fmt.Println(err)
      return
   }
   fmt.Println(ret)
}

输出结果验证

在这里插入图片描述

TarsGo部署

接着上文提到,我们通过make tar生成了tgz包,此时我们只需要在界面上完成服务的创建,既可以发布。

在这里插入图片描述

部署完之后,我们回到服务管理模块。

选择刚添加的服务ElasticSearchService,选择发布管理,上传我们刚打出来的tgz包。

在这里插入图片描述

进入发布管理,选择发布包进行上传,这样服务器上会有所有的发布版本,如果遇到问题也方便快速回滚。。

在这里插入图片描述

上传完成,回到发布界面,点击发布,即可完成本次发布。

在这里插入图片描述

参考文献

Tars 官方文档 https://tarscloud.github.io/TarsDocs/SUMMARY.html

Tars 官网 https://tarscloud.org/#

<think>好的,用户想了解如何搭建FISCO BCOS的最大TARS架构,需要教程和最大配置。首先,我需要回忆FISCO BCOS的相关文档,特别是关于Pro本和BcosBuilder工具的部分。根据引用[3],BcosBuilder在pro/conf目录下提供了配置模板,用于部署和扩容Pro本区块链。所以,用户可能需要使用BcosBuilder来配置最大架构。 接下来,最大TARS架构可能涉及多个服务节点,包括多个机构、群组和链节点。需要确认最大配置的具体参数,比如节点数量、服务器资源等。根据文档,通常每个机构至少部署一个节点服务,但最大配置可能需要更多的节点和群组,可能跨多个服务器。 然后,用户需要准备环境,包括安装依赖如TarsFramework、MySQL、Java环境等。这部分需要详细列出步骤,确保用户正确安装。同时,配置文件是关键,需要调整节点数量、群组数量和服务器资源,比如CPU和内存的限制提高到最大。 网络架构方面,可能涉及多个物理服务器,每个服务器部署多个节点服务,保证跨机构跨服务器,这样实现高可用和高性能。此外,启动和扩容步骤也需要详细说明,使用BcosBuilder的deploy和expand命令。 最后,注意事项部分需要提醒用户根据硬件调整配置,网络互通的重要性,以及备份和安全措施。可能还需要引用官方文档和社区资源,如引用[2]和[3],确保用户参考最新资料。 现在需要将这些步骤整理成结构清晰的回答,分点说明,并确保配置示例正确,命令准确。同时,生成相关问题,帮助用户进一步了解优化和应用场景。</think>### FISCO BCOS最大TARS架构搭建教程 #### 一、环境准备 1. **服务器规划**: - 建议至少准备4台物理服务器(机构A/B/C/D各1台,管理平台1台) - 每台服务器配置建议:16核CPU/32GB内存/1TB SSD硬盘 - 操作系统:Ubuntu 20.04 LTS或CentOS 7+ 2. **依赖安装**: ```bash # 安装TarsFramework(管理平台) git clone https://github.com/TarsCloud/TarsFramework.git cd TarsFramework && cmake . && make -j4 && make install # 安装MySQL(用于TARS服务) sudo apt install mysql-server libmysqlclient-dev # 安装Java环境(BcosBuilder依赖) sudo apt install openjdk-11-jdk ``` #### 二、配置文件调整(最大配置示例) 1. **区块链网络定义**(`pro/conf/chain_config.ini`): ```ini [chain] chain_id=chain_max # 定义4个机构参与 group_config_path=conf/group_config_max.ini # 每个机构部署4个节点服务 node_service_count_per_host=4 ``` 2. **群组配置**(`pro/conf/group_config_max.ini`): ```ini [group] group_id=group0 # 设置群组包含16个节点(4机构×4节点) genesis_nodes=16 consensus_type=pbft ``` 3. **服务器资源配置**(`pro/conf/host_config_max.ini`): ```ini [host] # 设置单节点最大资源限制 cpu_limit=16 memory_limit=24GB # 允许跨服务器部署 deploy_mode=cross_host ``` #### 三、部署步骤 1. **初始化TARS管理平台**: ```bash # 在管理服务器执行 ./tars-install.sh --web-host=192.168.1.100 --mysql-host=192.168.1.100 ``` 2. **构建区块链网络**: ```bash # 使用BcosBuilder部署(需在所有节点执行) ./BcosBuilder deploy -c conf/chain_config.ini -t tars -o ./output ``` 3. **验证部署**: ```bash # 检查节点数量(应显示16个节点) cat ./output/nodelist | wc -l # 查看群组状态 ./console getGroupStatus ``` #### 四、网络架构示意图 ``` 管理服务器(TARS) | ├── 机构A服务器(4节点) ├── 机构B服务器(4节点) ├── 机构C服务器(4节点) └── 机构D服务器(4节点) ``` #### 五、注意事项 1. **性能调优**: - 在`node_service.conf`中增加`-Xmx24g -Xms24g`设置Java堆内存 - 修改`storage.ini`配置使用LevelDB+多磁盘挂载 2. **网络要求**: - 节点间延迟需小于100ms - 建议使用万兆网络接口 3. **安全建议**: - 使用`openssl`生成加密通信证书 - 在`config.ini`中启用`sm_crypto=1`支持国密算法 [^1]: 参考FISCO BCOS Pro本部署文档 [^2]: 详见官方网络架构白皮书 [^3]: 来自BcosBuilder配置指南
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值