大众点评的老吴在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,之后还会对它进行封装与优化,敬请期待!

感谢您的阅读!

最新文章

  1. Remoting&amp;WebService的区别之处
  2. maven项目导入tomcat7源码
  3. 前端之JavaScript
  4. Eclipse开发JQuery环境设置(Spket)
  5. stl中的map数据类型
  6. uva10829 L-Gap Substrings
  7. 只响应ccTouchBegan的问题
  8. Python学习笔记——基础篇【第五周】——模块
  9. 初学杂文 String类
  10. apache2修改用户和组
  11. Apache POI
  12. 使用angular4和asp.net core 2 web api做个练习项目(一)
  13. 带参数的Mixin
  14. CSS学习笔记1:基础知识
  15. 深入学习c++(虚函数遇到析构函数就退化了)
  16. 4712: 洪水 基于链分治的动态DP
  17. 基于jQuery图片遮罩滑动文字切换特效
  18. Android LayoutInflater 相关知识
  19. Mac 下netstat和linux下不一样
  20. Kafka 0.8 宕机问题排查步骤

热门文章

  1. 2015 Multi-University Training Contest 2 Friends
  2. 作为一名Android APP开发者的自我总结
  3. 【LeetCode OJ 34】Search for a Range
  4. Crytek的幕后花絮
  5. poj 2154 Color(polya计数 + 欧拉函数优化)
  6. bzoj1002: [FJOI2007]轮状病毒(基尔霍夫矩阵)
  7. 前端到后台ThinkPHP开发整站--php开发案例
  8. codeforces 527 C Glass Carving
  9. 51Nod 不重叠的线段(贪心)
  10. python中修改函数内部的变量会发生什么