运维与微服务结合?深度解析微服务框架Tars整体解决方案

发布时间:2022-07-06 06:26:54   来源:下载爱游戏棋牌推荐 作者:下载爱游戏注册  

  比较好的协同开发。提供了包含开发、运维、以及测试的一整套解决方案。Tars集可扩展协议编解码、高性能通信框架、名字路由与发现、发布监控、日志统计、配置管理等于一体,通过Tars可快速用微服务的方式构建自己高可用的分布式应用,并实现完整有效的服务治理。总体来讲,Tars是一个跨平台、跨语言的软件运行环境,是基于service mesh设计理念实现的开发框架。

  当客户端和服务端需要交互时,可在注册中心拉取路由。客户端从注册中心拉取到注册信息之后可以根据内部对服务的判断决定请求什么服务。

  如果有备份文件,还原服务包文件, 脚本启动,没有备份文件,需要源码回滚打包上传,再通过脚本启动

  配置中心提供服务配置文件的统一管理功能。是实时更新配置文件、push配置文件到服务、服务主动pull配置文件的统一管理中心。主要包含以下优点:

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

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

  tars web管理系统上添加配置、添加引用文件、push配置文件到服务。配置文件会被推到相应的目录下。

  Tars协议采用接口描述语言(Interface deion language,缩写 IDL)来实现,它是一种二进制、可扩展、代码自动生成、支持平台的协议,使得在不同平台上运行的对象和用不同语言编写的程序可以用RPC远程调用的方式相互通信交流,主要应用在后台服务之间的网络传输协议,以及对象的序列化和反序列化等方面。注册中心主要涉及到三大角色: 服务提供者、服务消费者、注册中心 。

  自动寻址:客户端Endpoint注册表的缓存更新周期,主动方式(周期刷新一分钟,refreshEndpointInterval) 自动寻址用的负载均衡算法(包含多种)

  直接寻址:可以通过手动填写IP port实现直接寻址,调试特殊场景下使用

  通过IDL语言协议,可以定义服务提供的接口,并自动生成客户端和服务端的相关通信代码,服务端只需实现业务逻辑即可对外提供服务,客户端通过自动生成的代码即可调用服务,调用方式支持以下三种模式:

  业务服务主动上报心跳给名字服务,使名字服务知道服务部署的节点存活情况,当服务的某节点故障时,名字服务不在返回故障节点的地址给Client,达到排除故障节点的目标。名字服务排除故障需 要通过服务心跳和Clien地址列表拉取两个过程,故障排除时间在1分钟左右。

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

  页面上手动上传进行的注册,注册到了 mysql.也可以通过Web API实现自动上传和部署

  Tarslog是Tars日志服务,基于Logback作为日志系统,用于将日志内容打到本地或远程服务器,并且支持服务内日志调用链路追踪以及日志染色。

  Tarslog提供了十分灵活的配置项,可以为用户提供更加强大的日志功能。

  Tars内置的远程日志功能是以logback插件的模式存在,只需将插件引入到logback配置文件即可,配置简单,并且可自定义日志打印到本地以及远程。

  Tars日志模块可通过MDC实现服务内日志链路跟踪以及自定义日志染色。MDC内部持有一个ThreadLocal对象,其中存储了一个Map,因此用户可以根据需要向其中添加键值对。

  为了更好反映和监控小到服务进程、大到业务的运行质量情况,框架支持以下数据上报的功能:

  提供了服务模块间调用信息统计上报的功能。方便用户查看服务的流量、延时、超时、异常等情况。

  提供了用户自定义属性数据上报的功能。方便用户查看服务的某些维度或者指标, 比如内存使用情况、队列大小、cache命中率等。

  提供了服务状态变更和异常信息上报的功能。方便用户查看服务的何时发布过、重启过、宕过以及遇到的异常致命错误等。

  统计信息包含访问次数、耗时、异常和耗时。统计及聚合由各语言框架SDK提供,无论成功与否,框架 SDK都将会上报。

  上报统计信息是向Tars框架内的tarsstat上报耗时信息和其他信息。无需用户开发,只需在程序初始化期间正确设置相关信息后,就可以在框架内自动报告。

  客户端调用上报接口后,会暂时将信息存储在内存中,当到达某个时间点时,会向tarsstat服务上报(默认为1分钟上报一次)。两个上报时间点之间的时间间隔称为统计间隔,在统计间隔中会执行诸如聚合和比较相同key的一些操作。

  特性监控上报的是服务脚本的自定义特性,它由特性名、特性值、以及统计方法构成,类似指标监控。每种语言SDK有默认的特性监控指标,比如 JAVA 默认包含ory, jvm.gc 等。

  集群中所有机器都有Node服务用于管理应用,Node服务其中一个重要功能为服务监控。Node服务通过开启一个监控线程,负责定时(时间间隔可以配置)轮询监控Node所管理的所有服务的运行状态,并定时向主控上报服务的运行状态。