tars

tars
腾讯开源,高性能,微服务,rpc框架,有一套的微服务治理平台
个人感觉很大程度上还是借鉴zero ice这个开源的框架

1.运营        --透明部署,自动发布,立体化监控
2.平台        --容错容灾,负载均衡,灰度,管理
3.通信框架    --RPC,高性能,过载保护
4.公共组件    --框架和业务使用
5.统一协议    --可扩展,自动生成, 多平台

上面是tars的分层,对系统的各个模块进行抽象分层,各个层次之间解耦

node(服务节点,会对这台机器的server进行管理,提供启停,发布,监控,还有上传来的心跳)
{    
    server1
    server2
    servern
}

公共框架节点
web管理系统
registry(路由+管理服务),服务节点的查询
patch(发布管理)
config(配置中心)
log(远程日志)
stat(调用统计)
property(业务属性)
notify(异常信息)

心跳上报流程:server服务运行后,会定期上报心跳到node,node然后把服务心跳信息上报到registry服务,由registry进行统一管理。
node->registry
server会上报信息到公共节点

服务架构:  
server                         client

adminservant|servantimp        servantproxy|callback
servanthandle                objectproxy|asyncthread
bindadapter                    adapterproxy
netthread                    netthread

调用方式:
1.同步 2.异步 3.单向调用

负载均衡:
        stringtoproxy(*obj)
client ----------> registry
    |    对象名obj     |
    |                 |    
    |                |
  server---------->node
 client根据对象名拉取到列表后,本地采用负载均衡策略(轮询/hash/权重)选择服务器
 
容错保护:
名字服务排除策略:心跳会上报到registry,client拉去列表时,剔除这个服务器
client主动屏蔽:客户端根据策略来屏蔽,然后还会自动重连,如果成功,再分发请求

过载保护:
就是网络的请求队列,如果队列对于某个长度则拒绝,如果包从队列中读取出来时超时,超时则不做处理

消息染色:不知道这个干嘛用

IDC分组:
为了加快服务间的访问速度,减少跨地区、跨机房调用带来的网络资源消耗,减少网络故障带来的影响,框架提供了跨地区、跨机房,就近接入的功能
拉取服务列表时,只拉取同一机房或者地区的服务器地址

set分组:
类似moba.frind.60和moba.frind.100,为了方便对业务服务部署管理进行标准化和容量化,框架提供了Set部署能力,set之间没有关系

数据监控:

集中配置

*.tars
module MTTD
{
    interface AccountService :对应一个servant即服务器提供者,提供一个多个具体接口
    {
    }
}
app.server.servant 这样三层的结构

locator = mfw.mfwregistry.QueryObj@TEMPLATE_REGISTRY_ENDPOINT :这个应该就是registry
agent-report = mfw.mfwagent.AgentReportObj@tcp -h 127.0.0.1 -p 2002 -t 3600000 应该是node,每台机器一个

日志系统
debug日志
按天/小时日志,可以输出到远程日志中心
原文地址:https://www.cnblogs.com/zzyoucan/p/13822226.html