Gregorius Blog

Thinking will not overcome fear but action will.

全链路监控框架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...

skywalking本地调试

介绍skywalking本地调试搭建过程

源代码地址 skywalking是一款很优秀的监控系统,采用代理方式基于切面编程来拦截请求进行监控数据记录,架构采用CS模式 server端地址 java客户端地址 server端构建过程 此文不做原理解析,只讲大概入门思路,server里面同时也包含了后端管理和监控UI页面,基于spring boot开发,项目名称是apm-webapp 工具 工欲善其事必先利其器,...