腾讯 tars java_腾讯TARS开源团队郑苏波:腾讯微服务开发框架的源码剖析

郑苏波:大家下午好!我是腾讯微服务的郑苏波。先做一个框架的介绍,Tars是一个支持多语言内嵌服务治理功能的框槛,能跟DevOps比较好的协同开发。这个框架四大特点:

一是对用户透明实现,让业务可以聚焦自己的逻辑,不需要关心这个框架提供了哪些能力。

二是支持RPC的调用方式,使业务能快速开发。

三是高性能的实现。

四是丰富的扩展能力,适应不同业务场景。

下面我们会以一个比较简单的语言,NodeJS这个语言在TARS中的应用为我们介绍这个框架。先看一下例子,其中一个HD的Service,用户访问的时候会访问一段Hello Word,代码完全没有修改的情况给我们带来什么特性呢?首先是进程管理,它是使用NodeJS,负载均衡。服务限量重启,TARS自动检测异常退出并且自动拉起,这是被动探测,还支持我主动的加速检测。看一个主动加速检测的例子,下面是一个过滤,使用了一段比较垃圾的表达式的写法,一旦执行这个逻辑的时候,服务完全没有响应,用户只能手动重启这个服务。如果检测到这个服务呈现这种僵死的状态也会主动把服务的进程杀掉再起一个新的进程,这样保证服务的最大可用性,也就是我们经常说的在TARS内虽然没办法解决业务代码里面写的Bug,毕竟是业务代码里的逻辑问题,但我们会尽最大的可能保证服务的可用性,这是它的进程管理的一些特性。

再看一下服务监控,分调用监控和特性监控。调用监控有四个指标:总流量、平均耗时、超时耗和异常事。以主被调服务名、接口名为维度。HTTP服务接口名为URL-PATH。

特性监控也分四点:自动上报:内存、CPU、Libuv实性性能。各策略以平均值、最大值、最小值分节点统计。

下面这个图有一个明显的波峰和波谷,如果曲线越平滑代表访问流量越大,反之,这个地方我们需要优化关注它的基础服务质量。最下面这个是不存在波峰和波谷,也没有毛刺,这种东西是定时拉取的东西,需要关心持续的资源使用和客户的策略。

可以通过刚才的服务监控里面的总流量,就可以完全不用知道服务的名字,也不用问别人你这个服务的特性是什么,可以通过曲线明确知道这个服务的类型,服务优化的方向。

再看一下日志输出,会附加一些信息,比如日期、PID,最主要会自动添加文件名与符号,方便你去定位问题。上面讲的是完全没有修改的TARS层面的部署会有的这些特性。

可以再修改一下代码,能支持下面这些特性。比如可以支持大小滚动日志(文件总数、单文件大小),按时间滚动日志(间隔、文件名),用来做一些数据的统计。

服务配置:允许自定义文件名与内容,并可引用其它服务的文件,支持配置回滚和在线PUSH配置。可将静态页面以配置进行存储,以实现前后分离。

管理命令,可以设计日志等级,因为输出日志,可能在线上环境中,日志的输出是相当耗性能的一件事,这种情况下一般的日志级会受到一个最高的解决,只有异常的时候会打印出日志,但有一个额外的场景你需要去调试线上服务,看它到底在运行、支持什么样的代码,这个时候可以发出管理命令,从日志级别调整,这个时候可以看到当前正在运行哪些内容。当你调试完成之后可以继续设置日至为原来的,这个时候完全不需要重启。

第三点,可以自定义发送一些命令,并通过业务代码接收。这样比较方便去定位、查找一些问题。

刚才讲的是TARS,为大家在代码上提供的一些比较常用的特性。下面再和大家介绍一个TARS为大家提供的一个大型的异构系统解决方案。首先它定义了一套编解码。

关于编解码的大型的使用,光有编解码还不够,还需要有RPC调用的实施,支持两种模式,一种是客户端模式,二是服务端模式,可以调用到就近的节点。像我们最早说的还支持多种解码方式,并且也可以扩展一些其他的编解码方式,比如PB等。

这里TARS不仅是支持服务器的调用,还支持调用链的染色。标识出某一个特定需求的过程,染色状态会一直被传输下去,我们也叫染色日志。可以用染色日志定位一些特定的位置,也可以定一些特定的逻辑。比如用户ID是QQ号或者微信,到时候对ID进行染色,染色以后,后端的服务都会受到这个服务状态,并且把这次调用的处理过程打印出来,你可以非常方便的进行一些服务状态的调查。除了打印日志也可以执行特定的逻辑,比如对这个用户他是在白、灰、黑名单进行一些判断,甚至有一些调用关系。

接下来,给大家播放一个TARS的介绍视频。

(视频)

刚才这个视频也整体介绍了一下TARS的效果,大家还有什么问题吗?

提问:我想问一个不太专业的问题,这个TARS框架和腾讯云官网上提供的微服务框架TSF是什么关系?

郑苏波:其实我们也在腾讯云上有一个公有云项目,TSF跟我们目标是一致的,但我们能提供给大家的服务更全面一些,TSF可能只有一个微服务的概念,但我们除了微服务以外还有一些服务的监控、服务的配置,还有服务的日志的管理。

单志豪:我补充一下,主要区别是TARS是支持Java,是一个开源的项目,可以去下载,自己去用。后面也会提供公有云的方案,跟TSF是并行的项目。   单志豪:我补充一下,主要区别是TARS是支持Java,是一个开源的项目,可以去下载,自己去用。后面也会提供公有云的方案,跟TSF是并行的项目。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/441939.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【POJ - 3310】Caterpillar(并查集判树+树的直径求树脊椎(bfs记录路径)+dfs判支链)

题干: An undirected graph is called a caterpillar if it is connected, has no cycles, and there is a path in the graph where every node is either on this path or a neighbor of a node on the path. This path is called the spine of the caterpillar …

*【POJ - 1860】Currency Exchange (单源最长路---Bellman_Ford算法判正环)

题干: Description Several currency exchange points are working in our city. Let us suppose that each point specializes in two particular currencies and performs exchange operations only with these currencies. There can be several points specia…

使用java开发应用程序_使用Java中的插件支持开发应用程序

我一直在研究如何开发可以加载插件的应用程序.到目前为止,我已经看到这可以通过定义一个接口来实现,并让插件实现它.但是,我当前的问题是如何在Jars中打包时加载插件.有没有“最好的”方法呢?我正在考虑的当前逻辑是让每个插件和他们的Jar内部寻找实现接口的类.但我…

【POJ - 1995】Raising Modulo Numbers(裸的快速幂)

题干: People are different. Some secretly read magazines full of interesting girls pictures, others create an A-bomb in their cellar, others like using Windows, and some like difficult mathematical games. Latest marketing research shows, that t…

软件设计师下午题java_2018上半年软件设计师下午真题(三)

● 阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】生成器( Builder)模式的意图是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。图6-1所示为其类图。【Java代码】import java.util.*;class Product {priv…

【ZOJ - 2724】【HDU - 1509】Windows Message Queue(优先队列)

题干: Message queue is the basic fundamental of windows system. For each process, the system maintains a message queue. If something happens to this process, such as mouse click, text change, the system will add a message to the queue. Meanwhil…

java细粒度锁_Java细粒度锁实现的3种方式

最近在工作上碰见了一些高并发的场景需要加锁来保证业务逻辑的正确性,并且要求加锁后性能不能受到太大的影响。初步的想法是通过数据的时间戳,id等关键字来加锁,从而保证不同类型数据处理的并发性。而java自身api提供的锁粒度太大&#xff0c…

【POJ - 1062】【nyoj - 510】昂贵的聘礼 (Dijkstra最短路+思维)

题干: 年轻的探险家来到了一个印第安部落里。在那里他和酋长的女儿相爱了,于是便向酋长去求亲。酋长要他用10000个金币作为聘礼才答应把女儿嫁给他。探险家拿不出这么多金币,便请求酋长降低要求。酋长说:"嗯,如果…

php e notice,PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明

举例说明:在Windows环境下:原本在php4.3.0中运行正常的程序,在4.3.1中为何多处报错,大体提示为:Notice:Undefined varialbe:变量名称. 例如有如下的代码: 复制代码 代码如下:if (!$tmp_i) { $tmp_i10; }在4…

【POJ - 3169】 Layout(差分约束+spfa)(当板子记?)

题干&#xff1a; Like everyone else, cows like to stand close to their friends when queuing for feed. FJ has N (2 < N < 1,000) cows numbered 1..N standing along a straight line waiting for feed. The cows are standing in the same order as they are nu…

php中pregmatch,php中preg_match的isU代表什么意思

isU是大小写分的意思&#xff0c;这里s还有则不包括换行符而U是反转了匹配数量的值使其不是默认的重复,大概就是这样了个体我们看文章。正则后面的/(.*)/isU &#xff0c;“isU”参数代表什么意思&#xff1f;这是正则中的修正符.i是同时查找大小写字母,s是圆点(.)匹配所有字符…

【POJ - 1511】 Invitation Cards(Dijkstra + 反向建图 多源到单源最短路的处理)

题干&#xff1a; In the age of television, not many people attend theater performances. Antique Comedians of Malidinesia are aware of this fact. They want to propagate theater and, most of all, Antique Comedies. They have printed invitation cards with all…

【HDU - 3499】 Flight (单源最短路+优惠问题)

题干&#xff1a; Recently, Shua Shua had a big quarrel with his GF. He is so upset that he decides to take a trip to some other city to avoid meeting her. He will travel only by air and he can go to any city if there exists a flight and it can help him re…

php能不能用MyBatis,Mybatis与Ibatis的区别

Mybatis与Ibatis的区别:1、Mybatis实现了接口绑定&#xff0c;使用更加方便在ibatis2.x中我们需要在DAO的实现类中指定具体对应哪个xml映射文件&#xff0c;而Mybatis实现了DAO接口与xml映射文件的绑定&#xff0c;自动为我们生成接口的具体实现&#xff0c;使用起来变得更加省…

【51Nod - 1001 】 数组中和等于K的数对 (排序+ 尺取)

题干&#xff1a; 给出一个整数K和一个无序数组A&#xff0c;A的元素为N个互不相同的整数&#xff0c;找出数组A中所有和等于K的数对。例如K 8&#xff0c;数组A&#xff1a;{-1,6,5,3,4,2,9,0,8}&#xff0c;所有和等于8的数对包括(-1,9)&#xff0c;(0,8)&#xff0c;(2,6)…

linux php oauth安装,Linux php 扩展安装 mongo ,redis ,soap,imap,pdo_mysql,oauth

安装mongodb 参看文章&#xff1a;2.安装redisyum install gitgit clone git://github.com/owlient/phprediscd phpredis/usr/local/php/bin/phpize./configure --with-php-config/usr/local/php/bin/php-configmake && make install如果上述出现报错&#xff0c;可以尝…

*【CF#510C】Fox And Names (拓扑排序)

题干&#xff1a; Fox Ciel is going to publish a paper on FOCS (Foxes Operated Computer Systems, pronounce: "Fox"). She heard a rumor: the authors list on the paper is always sorted in the lexicographical order. After checking some examples, she…

java质,JAVA分解质因子 - osc_r1gtal48的个人空间 - OSCHINA - 中文开源技术交流社区

/*题目分解质因数(5分)题目内容&#xff1a;每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式&#xff0c;这几个素数就都叫做这个合数的质因数。比如&#xff0c;6可以被分解为2x3&#xff0c;而24可以被分解为2x2x2x3。现在&#xff0c;你的程序要读入一个[2,100…

【HDU - 5605】 geometry(水,数学题,推公式)

题干&#xff1a; There is a point PP at coordinate (x,y)(x,y). A line goes through the point, and intersects with the postive part of X,YX,Yaxes at point A,BA,B. Please calculate the minimum possible value of |PA|∗|PB||PA|∗|PB|. Input the first line…

matlab如何画函数的外包络曲线,怎样在MATLAB中划出一个函数的包络线?

沧海一幻觉下面是一系列关于MATLAB的包络线的程序&#xff1a;%这是定义了一个函数&#xff1a;function [up,down] envelope(x,y,interpMethod)%ENVELOPE gets the data of upper and down envelope of the known input (x,y).%% Input parameters:% x the abscissa of the g…