Gregorius Blog

Thinking will not overcome fear but action will.

SkyWalking之Tracing

从客户端解读Tracing模块源代码

上文我们说到作为一个全链路监控系统,Tracing是必不可少的部分,今天我们从客户端和服务端的源代码角度分析一下SkyWalking如何实现这块的。 Agent 代理原理 在介绍Traceing真正的实现之前,我们有必要知道SkyWalking是如何帮助我们完成agent代理的,从上面的文章我们知道,agent的入口是SkyWalkingAgent,我们之前提到了PluginFinder...

全链路监控框架SkyWalking源代码解读

了解SkyWalking架构设计

全链路监控,想说爱你并不容易 当系统上线后你没有这样的经历? 客户反馈系统慢,你确束手无策 系统报出了异常,你确分析不出源头在哪里 系统可能面临突发流量,你确不知道是否能支撑得住 问题只在正式重现,测试环境缺无法复现 每次出现问题无法预警,问题出现问题后事后检讨,而没有事前预警 …… 如果你有上面的困扰,说明你的系统缺少可观测性,缺少一个全链路监控系统。系统越复...

带你俯瞰ShardingSphere

了解ShardingSphere架构设计

什么是 ShardingSphere 首先引用官网上的介绍 Apache ShardingSphere 是一款分布式的数据库生态系统, 可以将任意数据库转换为分布式数据库,并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。 Apache ShardingSphere 设计哲学为 Database Plus,旨在构建异构数据库上层的标准和生态。 它关注如何充分合理地...

Kafka的客户和服务端模型

了解Kafka架构设计

Kafka是一个优秀的分布式消息队列,以高并发和高性能著称,我们以简单全面的视角剖析一下Kafka框架的设计。 作为一个分布式消息队列一般有三个角色 服务端 即broker,负责消息的存储,消费,分区等管理 生产者 对于服务端来说也是一个客户端,用于将消息发送到服务端 消费者 用于消费生产者生产的消息 服务端 服务端的架构和Netty有些类似,其实完全可以使用Nett...

漫谈分布式事务

为何使用分布式事务,以及分布式事务框架推荐

随着互联网的普及,互联网公司像雨后春笋一样伴随着投资公司的红利发展壮大,所以分布式技术以及分布式的解决方案也随着普及起来,分库分表以及分布式事务成了解决分布式问题跨不过的难题,那么我们今天就来聊聊什么是分布式事务,为什么需要它,它到底是用来解决什么问题的? 现在越来越多项目将自己定位为超大并发和数据的项目,所以在项目启动前就需要为未来考虑,超大大数据怎么存储和检索就是这些项目需要考虑的问题...

再谈Dubbo

Dubbo的基本原理

最近工作中由于涉及到微服务这块,所以把Dubbo又重新回顾了一遍,现在做个总结。 为什么使用rpc框架? 一个老生常谈的问题,为什么使用rpc框架?如果你的系统是单机系统,完全可以不用考虑这个问题,但是这些年微服务盛行,SOAP,企业级总线这些过于重量级,大厂都不一定能玩得转的玩意,所以何况是中小企业。所以退而求其次选择RESTful或者轻量级RPC框架,dubbo之所以能在国内脱颖而出,...

我们为什么需要IoC框架

介绍IoC框架的用途和实现原理

你今天被“皇马”了吗?假如你是那个写“皇马”程序的程序猿,你是否想让你讨厌的人变成“皇马”?于是你开始用代码来施展你的魔法,写下如下咒语: class SomeBodyYouHate { private String name; private boolean isYellowHorse; public boolean isYellowHorse() { ...

如何设计一个支撑亿级流量的消息队列

介绍kafka实现原理

大家可能对亿级流量没有什么概念,我首先以10亿级流量来进行一下设备需求的评估: 每天需要承载10亿+请求流量数据,一天24小时,对于平台来说,晚上12点到凌晨8点这8个小时几乎没多少数据涌入的。这里我们使用「二八法则」来进行预估,也就是80%的数据(8亿)会在剩余的16个小时涌入,且8亿中的80%的数据(约6.4亿)会在这16个小时的20%时间 (约3小时)涌入。 通过上面的场景分析,可以得...

KillBill框架介绍

介绍分库分表技术,以及KillBill实现原理

KillBill框架是一个开源的支付和计费SaaS平台,作为一款分布式的平台,我们今天主要是从它身上学习如何处理分布式事务问题的。 众所周知,采用分布式设计之后我们需要解决几大问题: 数据一致性分发问题 数据聚合join问题 分布式事务问题 解决数据一致性分发有几种方案: 事务性发件箱机制(本地消息事务机制) CDC技术 数据库聚合join问题依赖于数据...

使用javaagent技术实现无侵入监听

介绍patroller开源工具

什么是 Java Agent Java Agent是JVM启动时给应用程序一种机会去修改class文件的机制,在启动的VM参数增加-javaagent 再加上自定义的扩展来实现,这种自定义扩展是一种插件开发机制。 使用 Java Agent 的步骤大致如下: 1.  定义一个 MANIFEST.MF 文件,在其中添加 premain-class 配置项。 2.  创建  premai...