tarsdocs
  • Readme.md
  • CLA
  • LICENSE
  • 基础介绍
    • 简介
    • 基础概念
    • 基础通信协议 Tars
    • 统一通信协议 Tup
    • 开发模式介绍
    • 模板配置
    • 服务市场
    • 服务扩展
    • 框架版本说明
  • 开源版框架介绍
    • 开源版本部署
      • 部署总体介绍
      • Docker环境安装
      • Mysql安装
      • 框架源码部署(Linux/Mac)
      • 框架源码部署(Windows)
      • 框架Docker部署
      • 框架节点部署
      • 业务服务容器化
      • 框架K8SDocker 部署
      • 框架K8STARS 部署
      • 框架K8SFramework 部署(强烈推荐)
      • 框架更新及扩容
      • 调用链升级注意事项
      • TarsWeb-v3.0.3升级说明
    • 开源版管理平台
      • TarsWeb说明
      • web用户体系
      • web管理平台 API
  • 企业版本介绍
    • 企业版说明
    • 框架集群化机制
    • 框架单节点机制
    • 使用二进制包部署
    • 使用容器部署
    • 业务服务一主多备机制
    • 命令行控制终端
    • IP-LIST级联缓存机制
    • 多数据中心管理
    • 多网络支持
    • 第三方服务管理
    • 数据产生和管理机制
    • 密码重置
    • TarsPython介绍
  • 框架关键特性
    • 业务配置
    • 服务监控
    • 无损发布/重启
    • 调用链
    • IDC分组
    • 鉴权功能
  • TarsCPP
    • 编译
    • 快速开发入门
    • 使用指南
    • 开发规范
    • 服务线程说明文档
    • protobuf 协议支持文档
    • 第三方协议支持
    • HTTP1 支持
    • HTTP2 支持
    • TLS 通信支持
    • Push 功能说明
    • PushCallback 功能说明
    • Cookie 支持
    • 队列模式
    • 手动绑定
    • 性能数据
    • 2.x 版本变化
    • 3.x 版本变化
    • 协程版本说明
    • 基础类库说明
    • [案例]
      • 框架快速入门
      • Http 服务示例
  • TarsJava
    • 快速开始
    • 快速开发入门
    • [使用指南]
      • Tars 服务开发与上线
      • HTTP 服务开发与上线
      • 生成接口调用文件
    • [性能测试]
      • tars java 压测代码
  • TarsGo
    • 基本介绍
    • 快速开始
    • 使用指南
    • cmake 管理代码
    • pb2tarsgo
    • 性能数据
    • 使用示例
  • TarsPHP
    • 搭建 php 环境
    • 快速开发入门
    • [快速起步]
      • 搭建 HttpServer
      • 搭建 TimerServer
      • 搭建 TcpServer
      • 搭建 WebSocketServer
      • 弹幕活动实战
    • [框架简介]
      • 简介
      • tars-server
      • tars-client
      • tars-config
      • tars-deploy
      • tars-extension
      • tars-log
      • tars-monitor
      • tars-registry
      • tars-report
      • tars-utils
      • tars2php
    • [高阶应用]
      • PHP 的 Swoole 框架如何接入 Tars
      • 与 thinkphp 结合使用
      • 与 Swoft 结合使用
      • 与 Laravel 结合使用
      • 与 Yii2 结合使用
      • 持续集成方案
    • [其他]
      • 常见问题
      • 如何 Debug
      • changelog
      • 其他外部文档
  • Tars.js
    • 基本介绍
    • 脚手架
    • 快速开发入门
    • @tars/stream
    • @tars/rpc
    • @tars/logs
    • @tars/config
    • @tars/monitor
    • @tars/notify
    • @tars/utils
    • @tars/dyeing
    • @tars/node-agent
    • @tars/winston-tars
    • tars2node
  • K8SFramework
    • [安装和使用说明]
      • 介绍
      • 特性
      • 安装
      • 升级
      • 云原生运维
      • 管理平台
      • 证书
    • [开发环境构建]
      • Dockerfile 说明
      • 服务发布流程说明
      • 制作基础编译镜像
      • 制作业务服务镜像
      • 制作 Helm 包
      • 发布业务镜像到 K8S 集群
      • 服务发布示例
      • 如何调试业务服务
  • 服务扩展
    • 云告警
    • 接口及压测工具
    • 网关服务
    • dcache缓存服务
    • 发送邮件服务
    • 一致性存储服务
    • 一致性存储web管理平台
    • 唯一计数服务
  • 常见问题
    • 安装常见问题
    • Issues
    • Issues-tarscpp
    • Issues-tarsjava
    • Issues-tarsgo
    • Issues-tarsphp
  • 开源合作
    • TarsFramework 项目 Git 合作规范
  • 直播视频
    • B 站 TARS 培训系列课程
  • 相关文章
    • TARS 技术文章
  • 其它资源分享
    • 下载
    • Tars 介绍.pptx
    • TarsPHP 解密.pdf
    • TarsJava 本地调试.pdf
    • 微服务在腾讯的业务实践.pptx
Powered by GitBook
On this page
  • 业务配置原理
  • 配置文件数据结构
  • 实现原理
  • 业务配置示例
  • 应用配置
  • Set配置
  • 服务配置

Was this helpful?

  1. 框架关键特性

业务配置

PreviousTarsPython介绍Next服务监控

Last updated 2 years ago

Was this helpful?

业务配置原理

配置文件数据结构

基于Tars框架的业务服务的配置文件信息分为三层级别,应用配置、Set应用配置、服务配置和节点配置。

应用级为最高一级的配置文件,在同一应用(业务)下都可以被引用;

Set应用配置继承自应用级配置,即一个Set应用配置必须有相应的应用级配置;

服务和节点配置都可以引用应用配置信息和Set应用配置,并且节点配置默认继承服务配置的内容。

优先级:节点配置 > 服务配置 > Set应用配置 > 应用配置

如下图所示:

Tars框架通过两个数据表来维护这些配置信息,t_config_files和t_config_references。

t_config_files表的主要信息:服务配置文件名称、配置文件类型、配置文件所属服务名,配置文件所属set分组,配置文件所属节点ip以及配置文件的索引id值以及该服务所在set分组信息。

如下图所示:

t_config_references表的主要信息:配置文件的索引id以及该id所引用的配置文件索引id。

如下图所示:

注意:本文所指的引用配置文件都是指应用配置文件或者相应的Set配置文件。

实现原理

根据上述配置文件内容结构,Tars框架提供了从tarsconfig服务获取应用级配置信息和服务级配置信息(包括同时获取引用配置信息)的接口。

注意:

  • 每种语言的tars库都包含了api,可以从tarscofig获取配置文件

  • 业务配置的格式, 你可以根据你的需要选择, 框架是不处理和理解业务配置的

获取应用级配置

目前业务服务获取应用级配置信息的方式是使用框架中提供的addAppConfig接口,该接口负责向configServer服务拉取相应的应用配置文件到本地目录。

bool addAppConfig(const string &filename);

首先向tarsconfig获取应用级配置信息,同时判断该业务服务是否有set分组信息,如果有则获取相应set分组内的配置信息,最后把配置信息保存到本地文件中。

注意set配置优先级高于应用配置。

主要逻辑如下图:

拉取应用配置的结果图如下:

获取服务级配置

目前业务获取服务级别的配置信息方式是使用框架中提供的addConfig接口实现,该接口负责向configServer服务拉取相应的服务配置文件到本地目录。

bool addConfig(const string &filename);

获取服务级的配置信息主要分为三个步骤:

1.首先以服务名、配置文件名、set分组信息和配置信息等级为检索条件,获取配置信息等级为“服务级别”的配置信息和索引id

2.其次,通过(1)中索引id从数据表t_config_referencses获取该id所引用的配置信息索引id(references_id),索引id的具体对应关系如下图:

如果存在引用信息,则检索数据表t_config_files中references_id对应的配置信息,同时检索该references_id对应的配置文件是否有“Set级配置信息”,如果有则再获取该set级别配置信息。

3.按顺序合并2和2中获取的配置信息,2为先1其次。

4.再次以服务名、配置文件名、服务所属节点ip和配置信息等级为检索条件,获取配置信息等级为节点级别的配置信息和索引id,然后重复2和3步骤。

5.最终返回给业务服务的服务级配置信息的组成顺序是:服务级的引用配置信息+服务级配置信息+节点级引用配置信息+节点级配置信息。

这里配置文件合并以后, 就是按照文本的顺序合并, 因此如果你使用json之类的配置格式, 可能会格式非法!

业务配置示例

应用配置

在业务树上选择相应的应用(业务),在右边打开的管理界面选择“应用配置”一页,就可以进行添加配置、编辑配置等操作。如下图:

添加应用配置Test.conf,如下图:

Set配置

在业务树上选择相应的Set分组,在右边打开的管理界面选择“Set配置”一页,就可以进行添加配置、编辑配置等操作,如下图:

添加应用配置Test.conf,如下图:

  • 注意:只有添加了相应的应用配置文件,才能添加相应的Set配置。

服务配置

在左边的业务树选择需要维护的业务服务,点击左边打开的管理界面中“服务配置”一页,就可以进行服务配置的的添加、编辑和删除等操作。如下图:

添加应用配置Test.conf,如下图:

在服务配置里就可以引用上一级的配置内容(即所属应用(业务)的应用配置的内容以及所属Set的配置内容)如下图: