Tars 微服务架构分析及应用实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. Tars微服务框架能力分析及应用实践 利开园 腾讯 高级工程师 2021.11.13
2. • Content Title 1
3. 工作经历 腾讯Docker容器平台和TarsGo框架开发 Tars服务的基础运行环境和运营平台,负责 TarsGo部分核心模块的开发 腾讯云开发业务后台开发 作为TarsGo的深度使用者,实现并维护 Tars+K8s的方案 腾讯CSIG研发效能 关注云原生DevOps解决方案,负责研发效能的 标准化建设
4. 主要内容 01 Tars微服务架构能力分析 02 Tars框架主要技术亮点和实现方案 分析业务开源微服务解决方案,整体介绍Tars微服务框架的功能模块及其特性 探讨Tars框架主要技术实现细节和应用场景 03 Tars云原生演进与应用实践 介绍在云原生背景下Tars与K8s的整合方案以及在真实业务中的应用过程
5. 开源微服务框架现状 无服务治理类 单语言带服务治理 专注于通信框架,RPC或消息队列模式, 部分框架支持多语言开发 在通信框架的基础上支持服务治理能力, 单一编程语言实现,JAVA语言为主流 服务网格 多语言带服务治理 支持服务治理,通过SideCar模式解决 多语言问题,使用成本比较高 在通信框架的基础上支持服务治理能力, 多种编程语言实现
6. 开源微服务框架能力分析 对比项 Tars 网络协议 UDP/TCP/HTTP2/ 自定义 HTTP2 TCP/HTTP/自定义 Tars默认提供UDP/TCP支持,Dubbo支持TCP/HTTP等, gRPC只支持HTTP2 IDL Tars/PB/自定义 PB 无 IDL本身思路差不多,Tars可以设置字段默认值 多语言 支持 支持 少量支持 gRPC/Tars都支持多语言开发,Dubbo最主要支持Java RPC性能 非常高 一般 高 经过测试,Tars性能高gRPC 5倍,且高于Dubbo 提供服务治理 Tars与Dubbo提供整个服务治理生态体系,gRPC更多的是提 供思路,由其它社区或者自己构建生态。 社区广泛应用 Tars已经大规模应用13年,gRPC和Dubbo社区用得更多,时 间不长。 服务治理 应用规模 提供整套体系 已大规模应用11年 gRPC 无 社区广泛应用 Dubbo 备注
7. Tars框架主要模块 SDK Tars-Cpp Tars-Java Tars-NodeJS 管控服务 TarsAdminRegistry TarsRegistry 基础服务 TarsNotify TarsProperty 部署工具 TarsPatch 生态相关 TarsGateway TarsStat TarsNode Tars-PHP K8STars TarsBenchmark Tars-Go TarsWeb TarsConfig TarsLog
8. Tars框架主要能力 IDL 代码自动生成 专注业务逻辑 多语言 CI/CD 名字服务 服务可视化 无损变更 配置管理 高效开发 高质运维 日志 过载保护 监控 调用链 容灾容错 Set管理 弹性伸缩
9. 主要内容 01 Tars微服务架构能力分析 02 Tars框架主要技术亮点和实现方案 分析业务开源微服务解决方案,整体介绍Tars微服务框架的功能模块及其特性 探讨Tars框架主要技术实现细节和应用场景 03 Tars云原生演进与应用实践 介绍在云原生背景下Tars与K8S的整合方案以及在真实业务中的应用过程
10. 多维度的开发工具:更高效的敏捷开发 TarsWeb/API tars2go tars2cpp create_tars_server.sh Tars协议 tars2java make tar make upload tars2node tars2php 代码脚手架 IDL 生成桩代码 打包/发布 • 权限管理 • 配置管理 • 服务重启/发布/扩容 • 监控 • 日志查询 • 接口测试 运营
11. 负载均衡与容错能力:提升服务质量 负载均衡 轮询 Server A ? Server B1 取模HASH 一致性HASH 熔断 Server B2 屏蔽:超时/无法连接 恢复:尝试连接与请求 过载保护 限制并发数
12. Tars名字服务与Set模型 Server A ? TarsRegistry Server B Set - 1 A1 写死IP IP配置化 服务发现 Set模型+服务发现 Set -2 运维复杂度 B1 A2 B2 C1 B3 B4
13. Tars Set模型的应用场景  ToB:为KA客户提供更稳定可靠的服务  ToC: 按用户数量划分,更好地运营及隔离故障
14. Tars多机房容灾方案 常规方案 • 网络延时高 OR 配置复杂 Tars方案 • 深圳宝安 名字服务实现自动区域感知 127.27.5.1 Client 优势 • 运维简单 • 降低延时减少带宽消耗 • 更强的容灾能力 127.27.1.1:80 127.27.1.2:80 logsvr logsvr szbaoan 127.27.*.* szpingshan 10.147.*.* getAddr(“logsvr”) 返回 IP:Port 列表 127.27.1.1:80和127.27.1.2:80 registry 深圳坪山 10.147.1.1:80 logsvr node
15. 高性能实现原理与测试数据 压测机型: 4 核 /8线程CPU 3.3Ghz 主频 16G内存 千M网卡 压测逻辑:客户端带着一定大小的数据给服务端,服务端原样返回给客户端 。 服务端单进程,多个客户端发起测试  自定义二进制协议  TCP/UDP全双工  优化算法&减少内存拷贝
16. 主要内容 01 Tars微服务架构能力分析 02 Tars框架主要技术亮点和实现方案 分析业务开源微服务解决方案,整体介绍Tars微服务框架的功能模块及其特性 探讨Tars框架主要技术实现细节和应用场景 03 Tars云原生演进与应用实践 介绍在云原生背景下Tars与K8s的整合方案以及在真实业务中的应用过程
17. 云原生的趋势与价值 价值  稳定可靠  自主可控  成本优化  效率提高
18. Tars的云原生演进思路 Istio: 运维能力标准化 Docker: 运行环境标准化 Dapr: 开发组件标准化 Tars: 开发+运维组件的标准化(进行中)
19. Tars+K8s的整合  K8s: 原生资源管理能力  Tars: 保留开发架构及服务治理能力 Tars K8s 开发框架 资源调度 √服务部署 日志 Docker √版本管理 名字服务√ 调用链 网络虚拟化 指标监控
20. Tars+K8s的整合:Supervisor方案  存量服务零代码改造迁移到K8s  使用Tarscli管理服务的生命周期  其他方案: TarsFramework:使用Controller对接 K8s(Beta版本已发布) 云原生Tars:Tarscli与Tars框架合并,并支 持插件化(实现中)
21. 在腾讯云后台的应用案例 • • • • 多Set功能 • 隔离故障域 • 容灾备份切换 部署架构 • 多K8s集群容量水平扩容 • 容灾 • 支持CVM手工部署 Tars基础服务 • 复用同一套Tars系统 • 统一的管理视图 CNI网络模式 • 实现多地域网络互通
22. 更多Tars的应用案例 • Tars在腾讯内部使用超过十年,并于2017年4月10日开源,开源后与业界众多企业交流,同时也得到了广泛应用。 • 开源地址: https://github.com/TarsCloud • 2018年6月成为Linux 基金会项目,2020 年 3 月成立Tars基金会
23.
24.

首页 - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-23 16:54
浙ICP备14020137号-1 $访客地图$