大众点评的老吴在InfoQ上讲了Cat之后,有不少同仁开始关注这个实时监控系统,但学习的文章甚少,在GitHub上也是一言代过,给我们这些开发人员留下了N多个疑问,一时间不知道去哪里问,向谁去问了,通常的百度和谷歌也不好使了,不过,好在经理推荐的QQ群帮了忙,认识了一些cat的前辈,经过他们的努力和我们共同的执着,终于把这块难啃的骨头啃动了!

参考代码:https://github.com/chinaboard/PureCat

完成的分布式消息树

aaarticlea/png;base64,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" alt="" />

分布式消息树实现的理论

Cat上下文,它与其它数据上下文,Http上下文,文件上下文的意思是一样的,都是指一种对象的封装,在cat里它的上下文由三个ID组成,ROOT,Parent和Child,他们类似于数据库里的联合主键,在让多个消息进行关联时,需要通过这些键值,我们在跨网络记录日志时,也需要把这三个对象传过去,在目标服务器上进行解析,然后这两个消息就组成了一个消息树了。

CatContext上下文内容

    /// <summary>
/// cat上下文
/// </summary>
public class CatContext
{
/// <summary>
/// 消息根ID
/// </summary>
public string CatRootId { get; set; }
/// <summary>
/// 上级消息ID
/// </summary>
public string CatParentId { get; set; }
/// <summary>
/// 当前消息ID
/// </summary>
public string CatChildId { get; set; }
public string ContextName { get; set; } public CatContext(string contextName)
{
ContextName = contextName ?? Environment.MachineName;
}
public CatContext()
: this(null)
{ } }

在进行分布式调用时,和java版的一样,用到了LogRemoteCallClient和LogRemoteCallServer这两个方法,前者是消息发起者调用,生成context后,将它序列化传到另外一个节点,这个节点在进行事务处理时会将自己包裹到调用方的事务时在,这也就是分布式消息树的实现原理。

需要注意的地方

在Cat里,有域的概念,即domain,我们在分布式消息树的几台服务器,必须处在同一个域下!

代码这样实现的

A节点核心代码

 /* client1 -> catContext -> client2
*
*/
#region Cat实时监控 PureCat.PureCat.Initialize();
var context = PureCat.PureCat.DoTransaction("Do", "Test", func: () =>
{ PureCat.PureCat.NewEvent("Do", "Test");
return PureCat.PureCat.LogRemoteCallClient("zzl");
}); var url = "http://localhost:4532/home/index";
var handler = new HttpClientHandler() { };
using (var http = new HttpClient(handler))
{
http.DefaultRequestHeaders.Add("catContext", Lind.DDD.Utils.SerializeMemoryHelper.SerializeToJson(context));
var response = http.GetAsync(url).Result;
var staus = response.IsSuccessStatusCode;
} Console.ReadLine();
#endregion

对于分布式消息树上下文的Name,我们可以使用Guid码生成,避免冲突!

B节点核心代码

       string reusult = Request.Headers.GetValues("catContext").FirstOrDefault();
var cat = Lind.DDD.Utils.SerializeMemoryHelper.DeserializeFromJson<PureCat.Context.CatContext>(reusult);
PureCat.PureCat.DoTransaction("Do", "Add", () =>
{
PureCat.PureCat.LogRemoteCallServer(cat);
PureCat.PureCat.LogEvent("Do", "Add", "", "hello distribute api123");
PureCat.PureCat.LogError(new Exception());
});

本文代码只是大叔的测试DEMO,之后还会对它进行封装与优化,敬请期待!

感谢您的阅读!

实时监控Cat之旅~分布式消息树的实现原理与测试的更多相关文章

  1. 实时监控Cat之旅~对请求是否正常结束做监控(分布式的消息树)

    对基于请求的分布式消息树的分析 在MVC时有过滤器System.Web.Mvc.ActionFilterAttribute,它可以对action执行的整个过程进行拦截,执行前与执行后我们可以注入自己的 ...

  2. 实时监控Cat之旅~对Get和Post进行封装,支持分布式消息树

    对第三方接口的调用我们需要对GET和POST进行监控,看一些请求的执行是否成功,如A调用B,B调用C,C调用D,这一连串的东西需要我们使用cat进行记录,进行记录之后,我们可以很容易的发现请求响应的时 ...

  3. 实时监控Cat之旅~配置Cat集群需要注意的问题

    在配置cat集群时,有一些设置是我们应该注意的,从它的部署文档中我们可以看到相关信息,但说的还不够明确和重要,大叔今天总结一下Cat集群配置的注意事项 1 服务端datasources.xml用来设置 ...

  4. 转: 透过CAT,来看分布式实时监控系统的设计与实现

    评注: 开源的分布式监控系统 转:http://www.infoq.com/cn/articles/distributed-real-time-monitoring-and-control-syste ...

  5. 透过CAT,来看分布式实时监控系统的设计与实现

    2011年底,我加入大众点评网,出于很偶然的机会,决定开发CAT,为各个业务线打造分布式实时监控系统,CAT的核心概念源自eBay闭源系统CAL----eBay的几大法宝之一. 在当今互联网时代,业务 ...

  6. 分布式监控CAT服务端的本地部署

    一.CAT简介 CAT(Central Application Tracking),是美团点评基于 Java 开发的一套开源的分布式实时监控系统.美团点评基础架构部希望在基础存储.高性能通信.大规模在 ...

  7. 大众点评cat实时监控简介及部署

    简介 背景 CAT(Central Application Tracking)是由吴其敏(前大众点评首席架构师,现携程架构负责人)主导设计基于Java开发打造的实时应用监控平台,为大众点评网提供了全面 ...

  8. Zookeeper+websocket实现对分布式服务器的实时监控(附源码下载)

    ​ 我就是个封面 Zookeeper简介 Zookeeper是Hadoop的一个子项目,它是分布式系统中的协调系统. 简单来说就是一个Zookeeper注册同步中心,内部结构为一个树形目录,每个节点上 ...

  9. 大众美团服务链监控CAT

    github链接:https://github.com/dianping/cat CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户 ...

随机推荐

  1. C语言回调

    来源:https://www.cnblogs.com/jiangzhaowei/p/9129105.html 1. 什么是回调函数? 回调函数,光听名字就比普通函数要高大上一些,那到底什么是回调函数呢 ...

  2. 低价购买 洛谷1108 codevs4748 dp

    首先,,我相信第一问是可以做出来的,,,做不出来自行面壁思过,,, 第二问,我们可以发现,如果f[i]为1时应该将其g[i]初始化为1,当初就是因为这个wa了一个世纪,之后先考虑不需要判重时的情况,如 ...

  3. Qt5.7新特性

    简述 Qt5.7发布了,新特性如下. 简述 新特性 C11 Support Required from the compiler New Features within existing module ...

  4. CodeForces 453A

    Twilight Sparkle was playing Ludo with her friends Rainbow Dash, Apple Jack and Flutter Shy. But she ...

  5. php持续集成环境笔记

    记录下php集成环境中若干个工具的安装步骤和过程: 安装pear wget http://pear.php.net/go-pear.phar $ php go-pear.phar 使用:pear in ...

  6. 8.6 First_value和Last_value

    8.6 First_value和Last_value正在更新内容.请稍后

  7. Node.js能够做什么?

    正如 JavaScript 为client而生.Node.js 为网络而生.Node.js 能做的远不止开发一个网 站那么简单,使用 Node.js,你能够轻松地开发:  具有复杂逻辑的站点:  ...

  8. Android体验高扩展艺术般的适配器

    前言 本篇文章带大家体验一下一种具有扩展性的适配器写法. 这个适配器主要用于Item有多种的情况下.当然仅仅有一种类型也是适用的 实现 毫无疑问我们要继承BaseAdapter,重写getCount, ...

  9. Android 提示: The connection to adb is down, and a severe error has occured.

    今天早上打开Eclipse,一直提示 The connection to adb is down, and a severe error has occured,无法执行程序.重新启动Eclipse. ...

  10. OCP-1Z0-051-题目解析-第50题

    50. SLS is a private synonym for the SH.SALES table.  The user SH issues the following command:  DRO ...