当前位置: 首页 > 软件库 > 程序开发 > 微服务框架 >

K8STARS

将 Tars 服务运行在 Kubernetes 中
授权协议 BSD-3-Clause
开发语言 Google Go
所属分类 程序开发、 微服务框架
软件类型 开源软件
地区 国产
投 递 者 东郭远航
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

k8stars是便于将tars服务运行在Kubernetes中的方案。

特性

  • 保持tars原生的开发框架能力
  • 支持tars的名字服务自动注册和配置删除
  • 支持原有tars服务平滑迁移到k8s等容器平台
  • 无侵入性设计,与运行环境无偶合关系

实现方案

  1. 在tarsregistry增加了3个接口,用于tars名字的自动注册/心跳上报和节点下线。

  2. 提供一个tarscli命令行工具,用于分配端口/生成配置/上报心跳以及节点下线。

部署示例

  1. tarsregistry(名字服务) 参考baseserver的说明部署tars registry

  2. 部署服务示例

    • 部署示例simpleserver

      cd examples/simple && kubectl apply -f simpleserver.yaml

      示例说明:

      • 镜像由 examples/simple/Dockerfile 文件制作,基础镜像由 cmd/tarscli/Dockerfile 制作
      • start.sh中的tarscli genconf用于生成tars服务启动配置
      • _server_meta.yaml文件用于配置服务的元数据,字段信息可以参考 app/genconf/config.go 中的 ServerConf 结构体。endpoint默认为tcp -h ${local_ip} -p ${random_port},支持自动填入IP和随机端口。
    • 基于Go语言的 HelloWorld 程序 TestApp.HelloGo

  3. 验证部署 登录db_tars,然后执行select * from t_server_conf\G可以看到simpleserver的节点信息已自动注册。

tars部署目录结构

tarscli基于环境变量TARS_PATH(默认/tars)来管理服务,各目录功能:

  • ${TARS_PATH}/bin:启动脚本和二进制文件
  • ${TARS_PATH}/conf:配置文件
  • ${TARS_PATH}/log:log文件
  • ${TARS_PATH}/data:运行状态/缓存文件

关于tarscli

tarscli提供了一组命令工具,方便tars服务的容器化部署,可通过环境变量来指定参数,详细说明见tarscli help。 以下是tarscli支持的子命令

  • genconf 用于生成tars服务的启动配置文件。支持的环境变量有:

    • TARS_APPLICATION 指定的应用名,默认从_server_meta.yaml中读取
    • TARS_SERVER 指定的服务名,默认从_server_meta.yaml中读取
    • TARS_BUILD_SERVER编译时的服务名,编译的服务名与运行的服务名不同时会用到
    • TARS_LOCATOR可以指定registry的地址,默认是tars-registry.default.svc.cluster.local -p 17890(service的地址)
    • TARS_SET_ID可以指定服务set
    • TARS_MERGE_CONF可指定配置模板文件,并将配置合并到服务的启动配置文件中
  • supervisor 默认执行先genconf命令,再启动并监控服务。支持的环境变量有:

    • TARS_START_PATH服务的启动脚本,默认是$TARS_PATH/bin/start.sh
    • TARS_STOP_PATH服务的停止脚本,默认是kill在$TARS_PATH路径下的所有服务进程
    • TARS_REPORT_INTERVAL上报心跳到registry的时间间隔
    • TARS_DISABLE_FLOW注册到registry时是否开启流量,非空表示关闭,默认开启
    • TARS_CHECK_INTERVAL检查服务状态的时间间隔,如果状态有变化会实时同步到regitry
    • TARS_BEFORE_CHECK_SCRIPT每次检查前都运行的shell命令
    • TARS_CHECK_SCRIPT_TIMEOUT每次检查前运行shell命令的超时时间
    • TARS_PRESTOP_WAITTIME关流量-停止服务前的等待时间,用于无损变更,默认80秒
  • hzcheck 用于同步服务状态和k8s的pod状态,需要将pod的readiness probe设为tarscli hzcheck命令

  • prestop 用于在服务退出前删除在registry对应的配置

    • TARS_PRESTOP_WAITTIME关流量-停止服务前的等待时间,用于无损变更,默认80秒
  • notify 用于发送管理命令,常用命令有:tars.setloglevel/tars.pprof等

 相关资料
  • TARS 是基于名字服务使用 TARS 协议的高性能 RPC 开发框架,同时配套一体化的服务治理平台,帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用。 TARS 是将腾讯内部使用的微服务架构 TAF(Total Application Framework)多年的实践成果总结而成的开源项目。 TARS 这个名字来自星际穿越电影人机器人 TARS,电影中 TARS 有着非常友好的交互

  • 我已经使用kubeadm在ubuntu服务器上设置了kubernetes集群。我已经创建了一个部署,并使用NodePort服务公开了该部署。如何访问运行pod的API(使用Ubuntu主机服务器的IP)? 在此处输入图像描述

  • Kubernetes服务 github.com/soluble-ai/kubetap项目提供了一个插件kubectl为轻松部署mitmproxy到代理Kubernetes服务。 有关用法和文档,请参考kubetap。

  • 简述 Swoft 拥有便捷的命令行工具和相应的服务管理命令,参阅 Swoft Devtool 了解更多。 HTTP 服务 # 启动 HTTP 服务 $ php ./bin/swoft http:start # 以守护进程模式启动 $ php ./bin/swoft http:start -d # 重启 HTTP 服务 $ php ./bin/swoft http:restart # 重新加载

  • TARS-PHP是针对PHP使用tars二进制协议,以及Tars平台整体运维、RPC等一系列能力的解决方案。它主要由如下的几个部分组成: tcp server http server timer server Tars 是基于名字服务使用 Tars 协议的高性能 RPC 开发框架,同时配套一体化的服务治理平台,帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用。 tars-clien

  • 问题内容: 我在Windows 7 32位操作系统中安装了postgreSQL二进制文件;我可以从cmd启动服务器,但 不能将其作为Windows服务运行。 这是我尝试手动启动服务时遇到的错误: 我要做的就是 双击我的Java应用程序启动到Windows后,我需要流畅地运行我的应用程序而没有任何数据库错误。我不能这样做,因为postgreSQL没有作为Windows服务运行。 我在Windows事