腾讯,开源了,高性能 RPC 框架,是要干DUBBO 吗?
source link: http://mp.weixin.qq.com/s?__biz=MzA3MTUzOTcxOQ%3D%3D&%3Bmid=2452975045&%3Bidx=1&%3Bsn=b0abc369b145e6ffef34439c0a58a1af
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Tars是基于名字服务使用Tars协议的高性能RPC开发框架,同时配套一体化的服务治理平台,帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用。
目前该框架在腾讯内部,有100多个业务、10多万台服务器上运行使用。
设计思想
Tars的设计思路是采用微服务的思想对服务进行治理,同时对整个系统的各个模块进行抽象分层,将各个层次之间相互解耦或者松耦合,如下图:
注 意
文末有:3625页互联网大厂面试题
最上面的运营层,设计思路是让运维只需要关注日常的服务部署、发布、配置、监控、调度管理等操作。
整体架构
架构拓扑
整体架构的拓扑图主要分为2个部分:服务节点与公共框架节点。
服务节点:
公共框架节点:
除了服务节点以外的服务,其他服务节点均归为一类。
公共框架节点,数量不定,为了自身的容错容灾,一般也要求在在多个机房的多个服务器上进行部署,具体的节点数量,与服务节点的规模有关,比如,如果某些服务需要打较多的日志,就需要部署更多的日志服务节点。
又可细分为如下几个部分:
Web管理系统:在Web上可以看到服务运行的各种实时数据情况,以及对服务进行发布、启停、部署等操作;
Registry(路由+管理服务):提供服务节点的地址查询、发布、启停、管理等操作,以及对服务上报心跳的管理,通过它实现服务的注册与发现;
Stat(调用统计):统计业务服务上报的各种调用信息,比如总流量、平均耗时、超时率等,以便对服务出现异常时进行告警;
Property(业务属性):统计业务自定义上报的属性信息,比如内存使用大小、队列大小、cache命中率等,以便对服务出现异常时进行告警;
Notify(异常信息):统计业务上报的各种异常信息,比如服务状态变更信息、访问db失败信息等,以便对服务出现异常时进行告警;
原则上要求全部的节点之间网络互通,至少每台机器的node能够与公共框架节点之间都是可以连通的。
特性
tars协议
基本类型包括:void、bool、byte、short、int、long、float、double、string、unsigned byte、unsigned short、unsigned int;
复杂类型包括:enum、const、struct、vector、map,以及struct、vector、map的嵌套。
调用方式
通过IDL语言协议,可以定义服务提供的接口,并自动生成客户端和服务端的相关通信代码,服务端只需实现业务逻辑即可对外提供服务,客户端通过自动生成的代码即可调用服务,调用方式支持三种模式:
同步调用:客户端发出调用请求后等待服务返回结果后再继续逻辑;
异步调用:客户端发出调用请求后继续其他业务逻辑,服务端返回结果又由回调处理类处理结果;
单向调用:客户端发出调用请求后就结束调用,服务端不返回调用结果。
负载均衡
框架通过名字服务来实现服务的注册与发现,Client通过访问名字服务获取到被调服务的地址信息列表,Client再根据需要选择合适的负载均衡方式来调用服务,
容错保护
容错保护通过两种方式实现:名字服务排除和Client主动屏蔽。
名字服务排除的策略:
Client主动屏蔽:
过载保护
消息染色
IDC分组
为了加快服务间的访问速度,减少跨地区、跨机房调用带来的网络资源消耗,减少网络故障带来的影响,框架提供了跨地区、跨机房,就近接入的功能。
SET分组
为了方便对业务服务部署管理进行标准化和容量化,框架提供了Set部署能力,set之间没有调用关系,互不干扰,故障隔离,提高运维效率和服务可用性。
数据监控
为了更好反映和监控小到服务进程、大到业务的运行质量情况,框架支持以下数据上报的功能:
提供了服务模块间调用信息统计上报的功能,方便用户查看服务的流量、延时、超时、异常等情况;
提供了用户自定义属性数据上报的功能,方便用户查看服务的某些维度或者指标,比如内存使用情况、队列大小、cache命中率等;
提供了服务状态变更和异常信息上报的功能,方便用户查看服务的何时发布过、重启过、宕过以及遇到的异常致命错误等;
集中配置
为了能灵活管理配置文件,配置文件分为几个级别:应用配置、Set配置、服务配置和节点配置。
应用配置为最高一级的配置文件,它是多个服务配置提炼出来的公共配置,服务配置通过引用它来使用其配置内容。
Set配置是具体一个Set分组下所有服务的公共配置,在应用配置的基础上进行补充追加。
服务配置是具体一个服务下所有节点的公共配置,可以引用应用配置。
节点配置是一个应用节点的个性化配置,它和服务配置合并成为具体一个服务节点的配置。
项目地址
开源地址:
https://gitee.com/TarsCloud/Tars
阅读原文: 最新 3625页大厂面试题
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK