加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

解读 | TARS开源项目发布Go语言版本

发布时间:2018-09-24 02:10:10 所属栏目:Windows 来源:佚名
导读:【新品产上线啦】51CTO播客,随时随地,碎片化学习 Tars 是腾讯开源的一款微服务框架,它于去年 4 月份开源,并于今年 6 月捐赠给了 Linux 基金会。Tars 为用户提供了涉及到开发和运维的一整套解决方案,帮助一个产品或者服务快速开发、发布、部署、上线和
副标题[/!--empirenews.page--] 【新品产上线啦】51CTO播客,随时随地,碎片化学习

Tars 是腾讯开源的一款微服务框架,它于去年 4 月份开源,并于今年 6 月捐赠给了 Linux 基金会。Tars 为用户提供了涉及到开发和运维的一整套解决方案,帮助一个产品或者服务快速开发、发布、部署、上线和维护。它集可扩展协议编解码、高性能 RPC 通信框架、名字路由与发现、发布监控、日志统计、配置管理等于一体,通过它可以快速用微服务的方式构建稳定可靠的分布式应用,并实现完整有效的服务治理。经过一年多的发展,目前 Tars 已经被许多企业使用,如阅文集团、虎牙直播、科大讯飞,优品财富、龙图游戏和金太阳教育等。

据悉,9 月 15 日,腾讯宣布正式开源 Tars 的 Golang 版本 Tars-Go。编者从 Tars 的开源公告中了解到 Tars 与当前市面上其它微服务框架的差异、技术架构、性能数据与相关技术细节,本文将详细介绍 Tars 此次释出的 Golang 版本。

项目地址: https://github.com/TarsCloud/TarsGo

支持服务治理、多语言,只 Tars 一家 

微服务架构这两年变得格外火热,它已经成为当前最主流的架构模式。提起微服务框架,我们可以自然地举出 Dubbo、gRPC 与 Spring Cloud 等众多的知名项目,依据是否支持服务治理和是否支持多语言两个维度可将这些微服务框架分为以下四类:

解读 | TARS开源项目发布Go语言版本

  • 只有服务调用没有服务治理类的框架。典型的代表有 gRPC、Thrift 等,他们很好地解决了服务间通信的问题,大部分也支持多语言,但使用这类框架时需要自己去解决服务治理问题。

  • 带服务治理但支持单一语言的框架。典型的代表有 Spring Cloud 和 Dubbo,它们都是用 Java 实现的框架,用户整合多个开源项目一起并能满足服务治理等的需求。

  • Service Mesh。它支持服务治理,并通过 Sidecar 模式解决框架对多语言支持,业务需要再封装一套通讯组件去解决通讯问题,以及异步调用等问题,同时会增加架构和维护的复杂度。

  • 带服务治理并支持多语言的框架。目前业界比较少,除了 Tars 目前还没有发现其它具有代表性的框架。

从上面的分析大概可以发现,Tars 是支持服务治理的同时又提供多语言支持的微服务框架,这是 Tars 的独特之处,也是其优势。

Tars 可以运行在物理机、虚拟机和容器,其协议主打的是基于 IDL 实现的 Tars 协议,它是一种二进制解析协议,与 pb 类似,同时 Tars 还扩展支持其它协议,乃至用户自定义。

调用方式主要以 RPC 为主,支持同步、异步和单向调用几种方式。在服务治理方面除了支持服务注册、发现等业界常说的能力之外,还提供面对海量访问的一些其它治理能力,如 Set 模型、自动区域感知、过载保护等,语言上除了此次新支持的 Golang,目前已经支持了 C++、Java、NodeJS 与 PHP,同时整体框架可以和 DevOps 很好地协同工作。

Tars 整体分为三个部分:Registry、服务节点和基础服务集群。

解读 | TARS开源项目发布Go语言版本

Registry

Registry 是微服务集群的管理和控制节点,提供服务注册和发现等功能。

服务节点

服务节点是 Tars 运行的原子单元,可以是一个容器也可以是一个虚机或物理机,一个业务服务通过部署多个服务节点来解决容量和容错问题。服务节点上包括一个 node 管理服务和一个或多个业务服务,node 服务对本节点的服务进行统一管理,提供启停、监控服务节点等功能,同时接收业务服务节点上报过来的心跳,上报给 Registry 作为服务发现的数据来源。

基础服务集群

基础服务集群是为解决微服务治理而设计的一系列服务,服务节点数量不定,为了自身的容错容灾,一般也要求在多个服务器上进行部署,具体的节点数量与业务规模有关,比如,如果业务规模大需要打较多的日志,就需要部署更多的日志服务节点。基础服务主要包括监控统计、配置中心、日志聚合、认证鉴权和分布式调用链等。Tars 具有非常完善的服务治理能力。

解读 | TARS开源项目发布Go语言版本

Tars 通过 Registry、服务节点和基础服务集群协同工作,透明完成服务发现/注册、负载均衡、鉴权、分布式跟踪等服务治理相关工作。如框架通过 Registry 来注册 xxxsvr,Client 通过访问 Registry 获取到被调服务的地址信息列表,Client 再根据需要选择合适的负载均衡方式来调用服务。负载均衡支持轮询、hash、权重等多种方式。

为了更及时地屏蔽故障节点,Client 根据调用被调服务的异常情况判断是否有故障来更快地进行故障屏蔽。具体策略是,当 Client 调用某个服务器出现调用连续超时超过设置阈值,或者调用的超时比率超过一定百分比阈值,Client 就会对此服务器节点进行屏蔽,让流量分发到正常的节点上去。对屏蔽的服务器节点,每隔一定时间进行重连,如果正常,则进行正常的流量分发。

随着业务增长,服务的部署难免会跨机房或者地域,常规的负载均衡方式面对跨地区或者跨机房部署的服务会因为网络原因造成延时增大,为了加快服务间的访问速度,减少因建设跨地区、跨机房调用带来的网络资源消耗,减少网络故障带来的影响,Tars 提供自动区域感知的服务治理功能。

解读 | TARS开源项目发布Go语言版本

通过 Registry 和开发框架配合实现自动区域感知,这样的优势有:

  • 运维简单

  • 降低延时减少带宽消耗

  • 更强的容灾能力

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读