摘要: Java extension plugin and hot swap plugin(Java 扩展点/插件系统,支持热插拔,旨在解决本地化软件的功能定制问题) 阅读全文
posted @ 2023-08-14 21:11 莫那-鲁道 阅读(974) 评论(5) 推荐(2) 编辑
摘要: 背景 toB 的本地化 java 应用程序,通常是部署在客户机器上,为了保护知识产权,我们需要将核心代码(例如 Lience,Billing,Pay 等)进行加密或混淆,防止使用 jadx 等工具轻易反编译。同时,为了更深层的保护程序,也要防止三方依赖细节被窥探; 业界方案 ProGuard 简介: 阅读全文
posted @ 2023-10-14 17:42 莫那-鲁道 阅读(787) 评论(0) 推荐(1) 编辑
摘要: 概述 Agent 功能介绍 + 整体结构 + 设计 插件机制详解 Trace Segment Span 详解 异步 Trace 详解 如何正确地编写插件并防止内存泄漏 扩展:如何基于 Skywalking 打造全链路压测 总结与参考 概述 在 APM 和全链路监控领域,Skywalking 是非常有 阅读全文
posted @ 2022-04-04 18:02 莫那-鲁道 阅读(2769) 评论(0) 推荐(0) 编辑
摘要: 前言 https://github.com/Netflix/zuul zuul 是 SpringCloud 家族老兵,使用 Java 微服务大部分都在使用 zuul 作为网关。既然他如此重要,那么我们就来分析一下。本文分析的是 zuul 2.1.5版本。 调用链路 首先,我们知道,zuul 基于 N 阅读全文
posted @ 2021-11-03 22:23 莫那-鲁道 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 问题 https://github.com/alibaba/canal binlog 同步组件,canal 使用是比较广泛的,canal 逻辑架构如图: 部署架构如图: canal 基于主从模式,任务都运行在 master 中,client 从 master 拉取数据。在使用 canal serve 阅读全文
posted @ 2021-11-03 22:19 莫那-鲁道 阅读(443) 评论(0) 推荐(0) 编辑
摘要: 如何编写一个 SendFile 服务器 前言 之前讨论零拷贝的时候,我们知道,两台机器之间传输文件,最快的方式就是 send file,众所周知,在 Java 中,该技术对应的则是 FileChannel 类的 transferTo 和 transferFrom 方法。 在平时使用服务器的时候,比如 阅读全文
posted @ 2019-10-29 14:03 莫那-鲁道 阅读(560) 评论(0) 推荐(0) 编辑
摘要: 当前的大部分 Java web 容器基于 Bio 线程模型,例如常见的 tomcat ,默认 200 线程,即 200 连接。由此带来的问题是,如果想提高并发,或者提高资源利用率,就得加大线程数。 如下图: 于是出现了类 Netty 的 Reactor 线程模型。同时,Java 官方也设计了 Ser 阅读全文
posted @ 2019-06-02 15:55 莫那-鲁道 阅读(1467) 评论(6) 推荐(0) 编辑
摘要: 前言 零拷贝这三个字,一直是服务器网络编程的关键字,任何性能优化都离不开。在 Java 程序员的世界,常用的零拷贝有 mmap 和 sendFile。那么,他们在 OS 里,到底是怎么样的一个的设计?本文将简单聊聊 mmap 和 sendFile 这两个零拷贝。 传统数据读写的劣势 初学 Java 阅读全文
posted @ 2019-06-01 18:49 莫那-鲁道 阅读(1613) 评论(1) 推荐(0) 编辑
摘要: 前言 canal 是什么? 引用一下官方回答: 阿里巴巴mysql数据库binlog的增量订阅&消费组件 canal 能做什么? 基于日志增量订阅&消费支持的业务: 1. 数据库镜像 2. 数据库实时备份 3. 多级索引 (卖家和买家各自分库索引) 4. search build 5. 业务cach 阅读全文
posted @ 2019-02-26 17:26 莫那-鲁道 阅读(1436) 评论(1) 推荐(1) 编辑
摘要: 上周晚上,某环境 ES 出现阻塞, 运行缓慢。于是开始排查问题的过程。 开始 思路:现象是阻塞,通常是 CPU 彪高,导致业务线程分配不到 CPU 时间片,或者内存吃紧,频繁 GC 导致的 STW。 登录到目标服务器,由于 ES 的用户不是 LZ,因此找运维要了 root 权限,登录到服务器。sud 阅读全文
posted @ 2019-01-25 12:50 莫那-鲁道 阅读(1743) 评论(2) 推荐(5) 编辑
摘要: 目录 1. 三个状态 Raft 设计了 3 个状态,用于表示节点的状态,分别是跟随者,候选者,领导者。 3 个角色的转换关系和流程: 可以看到,这张图里的几个概念: 2. 什么是任期 目录: 背景:由于机器的物理时间是不可靠的,所以需要一个逻辑时间。称之为任期(term)。 从 2 个阶段开始说起: 阅读全文
posted @ 2019-01-19 14:29 莫那-鲁道 阅读(1150) 评论(2) 推荐(1) 编辑
摘要: 前言 像我这样的菜鸟,总会有各种疑问,刚开始是对 JDK API 的疑问,对 NIO 的疑问,对 JVM 的疑问,当工作几年后,对服务的可用性,可扩展性也有了新的疑问,什么疑问呢?其实是老生常谈的话题:服务的扩容问题。 正常情况下的服务演化之路 让我们从最初开始。 1. 单体应用 每个创业公司基本都 阅读全文
posted @ 2019-01-16 09:14 莫那-鲁道 阅读(2089) 评论(1) 推荐(7) 编辑
摘要: 本文旨在讲述如何使用 Java 语言实现基于 Raft 算法的,分布式的,KV 结构的存储项目。该项目的背景是为了深入理解 Raft 算法,从而深刻理解分布式环境下数据强一致性该如何实现;该项目的目标是:在复杂的分布式环境中,多个存储节点能够保证数据强一致性。 阅读全文
posted @ 2019-01-12 12:49 莫那-鲁道 阅读(5291) 评论(2) 推荐(2) 编辑
摘要: 如果面试官问你:你了解 Java 内存模型吗?你怎么回答? 阅读全文
posted @ 2018-10-21 21:19 莫那-鲁道 阅读(2096) 评论(3) 推荐(0) 编辑
摘要: 读梁飞博客和其分享的 PPT 总结笔记。期待和对此感兴趣的人一起讨论 :) 阅读全文
posted @ 2018-10-20 23:19 莫那-鲁道 阅读(3720) 评论(2) 推荐(4) 编辑
摘要: 谈谈中间件开发 阅读全文
posted @ 2018-10-20 17:02 莫那-鲁道 阅读(12010) 评论(13) 推荐(15) 编辑
摘要: 本人开源项目 Lu-Rpc 阅读全文
posted @ 2018-10-16 22:08 莫那-鲁道 阅读(1024) 评论(4) 推荐(1) 编辑
摘要: 目录: 1. 粘包 & 拆包及解决方案 ByteToMessageDecoder 2. 基于长度编解码器 3. 基于分割符的编解码器 4. google 的 Protobuf 序列化介绍 5. 其他的 前言 Netty 作为一个网络框架,对 TCP 连接中的问题都做了全面的考虑,比如粘包拆包导致的半 阅读全文
posted @ 2018-10-13 21:39 莫那-鲁道 阅读(987) 评论(0) 推荐(0) 编辑
摘要: 前言 即使这是一本小册,但基于“不提笔不读书”的理念,仍然有必要总结一下。此小册对于那些“硬杠 Netty 源码 却不曾在千万级生产环境上使用实操”的用户非常有用。当然,对那些没有 Netty 编程经验的人来说,更为有用。 放个小册地址: "[Netty 入门与实战:仿写微信 IM 即时通讯系统" 阅读全文
posted @ 2018-10-13 21:38 莫那-鲁道 阅读(1765) 评论(0) 推荐(0) 编辑
摘要: 广义的 IOC IoC(Inversion of Control) 控制反转,即“不用打电话过来,我们会打给你”。 两种实现: 依赖查找(DL)和依赖注入(DI)。 IOC 和 DI 、DL 的关系(这个 DL,Avalon 和 EJB 就是使用的这种方式实现的 IoC): DL 已经被抛弃,因为他 阅读全文
posted @ 2018-10-12 16:40 莫那-鲁道 阅读(5538) 评论(5) 推荐(5) 编辑