自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

猫咪老师

此生无悔入夏目,来世愿做帐中妖

  • 博客(24)
  • 资源 (2)
  • 收藏
  • 关注

原创 Netty 实战篇:为 Netty RPC 框架增加超时控制与重试机制,防止系统雪崩

本文介绍了在自研Netty RPC框架中实现超时控制和重试机制的方法。超时策略可避免调用卡死,重试机制能提升成功率。文章阐述了超时重试的必要性,给出整体设计方案,详细讲解了基于Future的超时控制和带间隔的重试实现,建议通过注解配置参数,并提供了测试用例。最后提出指数退避、熔断机制等拓展建议。通过上述方案,RPC框架获得了自定义超时、自动重试、注解配置等健壮性保障功能。

2025-05-30 19:42:58 696

原创 Netty 实战篇:为 Netty RPC 框架引入调用链追踪,实现链路透明化

本文介绍了如何在Netty RPC框架中集成调用链追踪功能。通过在RpcRequest中增加traceId字段,自动生成唯一请求ID并实现全链路透传。利用MDC日志上下文和ThreadLocal机制,统一记录请求追踪信息,实现跨服务日志关联。文章还展示了日志格式配置示例和RpcContext封装方案,并提供了与Zipkin等专业追踪系统对接的扩展思路。该方案解决了微服务环境下请求链路追踪、问题定位和服务性能分析等核心需求,为分布式系统提供了完整的调用链可视化能力。

2025-05-30 19:35:57 777

原创 Netty 实战篇:Netty RPC 框架整合 Spring Boot,迈向工程化

本文介绍了如何将Netty RPC框架整合到SpringBoot中,通过自定义注解(@RpcService和@RpcReference)实现服务的自动注册与远程调用。主要内容包括:1)定义注解标记服务提供方和消费方;2)利用BeanPostProcessor自动扫描并处理注解;3)构建SpringBoot自动配置模块;4)演示使用示例。整合后的框架具备注解驱动、自动装配特性,简化了开发流程,提升了复用性,实现了开箱即用的RPC调用体验。

2025-05-28 11:43:09 1275

原创 Netty 实战篇:构建简易注册中心,实现服务发现与调用路由

本文介绍了如何为Netty RPC框架添加服务注册与发现功能。通过实现基于Netty的轻量级注册中心,支持多服务节点动态注册、服务列表查询和负载均衡调用。系统包含注册中心、服务节点和客户端三部分,服务启动时自动注册地址,客户端从注册中心获取最新服务列表并调用。文章详细展示了注册中心实现、服务注册流程、客户端服务发现方法以及负载均衡策略的整合过程,为构建可扩展的分布式系统奠定了基础。

2025-05-28 11:28:15 355

原创 Netty 实战篇:为自研 RPC 框架加入异步调用与 Future 支持

本文介绍如何优化Netty RPC框架,实现异步非阻塞调用。通过引入RequestId+ChannelFuture+Map缓存机制,客户端发送请求后立即返回CompletableFuture对象,无需阻塞等待响应。服务端返回结果时,通过requestId匹配对应的Future完成回调。这种改造使框架具备了异步非阻塞调用能力,支持并发请求管理,显著提升了吞吐性能和响应效率。示例展示了异步调用的使用方式,并建议增强类型转换和异常处理功能,使框架更加完善。

2025-05-28 11:10:21 544

原创 Netty 实战篇:手写一个轻量级 RPC 框架原型

RPC(Remote Procedure Call,远程过程调用)允许你像调用本地方法一样调用远程服务。RPC 框架的核心包括:通信协议(我们用 Netty 实现)服务注册与发现(此处简化为直连)编码/解码机制(TLV、自定义协议)动态代理与调用(Java 反射)通过本篇,你已经实现了:基于 Netty 的 RPC 协议通信编解码框架构建动态代理与服务远程调用基础版 Netty RPC 框架原型。

2025-05-28 11:01:19 435

原创 Netty 实战篇:实现心跳机制与连接保活

Netty中心跳机制实现摘要:在高并发长连接场景中,心跳机制能有效检测失效连接,避免资源泄漏和服务异常。Netty提供了IdleStateHandler工具,可设置读写空闲超时时间。服务端通过添加该Handler并在HeartbeatHandler中处理空闲事件,自动关闭超时连接。客户端需定时发送PING心跳包保活,也可采用业务级心跳协议。该方案适用于IM、网关等长连接场景,确保服务稳定运行。

2025-05-28 10:47:05 266

原创 Netty 实战篇:深入理解粘包与拆包及其解决方案

本文介绍了Netty中处理TCP粘包/拆包问题的解决方案。粘包指多个数据包合并读取,拆包指一个数据包被分割读取。主要原因包括发送速率过快、缓冲区大小限制等。Netty提供了四种解码器:基于行分隔符的LineBasedFrameDecoder、自定义分隔符的DelimiterBasedFrameDecoder、固定长度的FixedLengthFrameDecoder,以及基于包头长度的LengthFieldBasedFrameDecoder。通过示例演示了如何正确使用解码器解决粘包/拆包问题,帮助开发者根据协

2025-05-28 10:37:14 317

原创 Netty 实战篇:构建高性能聊天服务器

本文演示了使用Netty框架构建高性能聊天服务器的完整实现。通过三个核心组件:ChatServer(服务器启动类)、ChatServerInitializer(通道初始化器)和ChatServerHandler(业务处理器),实现了多客户端通信功能。服务器采用NioEventLoopGroup处理连接请求,通过String编解码器实现消息转换,并利用ChannelGroup管理所有连接。当客户端发送消息时,服务器会将其广播给其他所有客户端。该示例展现了Netty在网络编程中的高效性和扩展性,为进一步开发复杂

2025-05-28 09:46:08 262

原创 Netty 进阶篇:核心组件与线程模型解析

Netty是一个高性能异步网络框架,其核心架构包含Channel、EventLoop、ChannelPipeline和ChannelHandler等组件。Channel表示网络连接,绑定一个处理链ChannelPipeline;EventLoop负责IO事件处理,采用多路复用提升性能;编解码器(Codec)实现数据传输转换,包含解码器(Decoder)和编码器(Encoder)。通过组件协同工作,Netty实现了高效可扩展的网络通信能力。

2025-05-28 09:24:46 398

原创 Netty 入门篇:深入理解 Java IO 模型与 Netty 的应用

目录什么是IO常见的IO模型阻塞IO(BIO)非阻塞IO(NIO)异步IO(AIO)Netty使用的IO模型什么是IOIO在计算机中指的是Input/Output,即输入、输出。程序运行时数据是驻留在内存中,由CPU的计算核心来执行,涉及到数据交换的地方就需要IO接口,如磁盘、网络等。常见的IO模型阻塞IO(BIO)同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开

2021-12-19 00:42:43 417 1

原创 多租户SaaS平台数据库方案

目录什么是多租户需求分析多租户数据库方案分析独立数据库共享数据库,独立 SchemaSchema 介绍共享数据库、数据表三种方案的对比什么是多租户多租户技术(Multi-TenancyTechnology)又称多重租赁技术:是一种软件架构技术,是实现如何在多用户环境下(此处的多用户一般是面向企业用户)共用相同的系统或程序组件,并且可确保各用户间数据的隔离性。简单讲:在一台服务器上运行单个应用实例,它为多个租户(客户)提供服务。从定义中我们可以理解:多租户是一种架构,.

2021-08-03 15:52:44 1505

原创 微服务/分布式架构下,ID生成该如何选择

方案一:数据库自增数据库自增可以确保 ID 唯一,但会存在一定的问题。如多表合并成一张表,会出现 ID 冲突的情况。如下图:方案二:UUIDUUID 确实可以作为主键生成的一种策略,但是大家都清楚,UUID 长度是128 bit ,是由128位二进制数据转换而来,其中有四个固定的 “-” 进行分割,每四个二进制转换为一个十六进制,128/4=32,UUID 最终的组成是由32个十六进制数组成。其缺点一目了然,It's too long。方案三:全局Redis我们可以通过 Redi

2021-08-02 00:02:02 3478 1

原创 Docker部署MySQL

目录拉取 MySQL 镜像创建 MySQL 容器拉取 MySQL 镜像docker pull mysql:5.7创建 MySQL 容器# docker run -di --name=容器名字 -p 宿主机端口:容器端口 -e MYSQL_ROOT_PASSWORD=mysql密码 镜像docker run -di --name=mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7...

2021-07-29 23:44:21 1335 1

原创 Docker常用命令

目录镜像相关命令查看镜像搜索镜像拉取镜像删除镜像容器相关命令查看容器创建与启动容器交互方式创建容器守护方式创建容器停止与启动容器停止容器启动容器文件拷贝将宿主机的文件拷贝到容器内将容器内的文件拷贝到宿主机目录挂载查看容器IP地址查看容器运行的各种数据输出IP地址删除指定容器镜像相关命令查看镜像docker images结果列名 描述 REPOSITORY 镜像名称 TAG 镜像

2021-07-29 23:01:56 1713 1

原创 CentOS7安装Docker(yum方式)

目录安装步骤Docker 启动停止配置 Docker 镜像安装步骤1、更新 yum 源yum update2、安装需要的软件包, yun-util 提供 yum-config-manager 功能,另外两个是 devicemapper 驱动依赖的yum install -y yum-utils device-mapper-persistent-data lvm23、设置 yum 源为阿里云yum-config-manager --add-repo http:

2021-07-29 00:32:42 1944 1

原创 Docker介绍

Docker 简介Docker 官网Docker 是一个开源的应用容器引擎,基于 GO 语言。可以让开发者将应用、依赖包等等打包成一个轻量级、可移植的容器中,发布到任何机器上。容器完全使用沙箱机制,相互之间不会又任何的接口,类似 iPhone 的 APP ,更重要的是容器性能开销极低。解决了运行环境和配置的容器,方便做持续集成和部署的容器虚拟化技术。Docker 的组成DockerClient :客户端 DockerDeamon :守护进程 DockerImage :镜像 Dock

2021-07-29 00:05:56 1467

原创 Redis面试题

什么是RedisRedis本质是一个K-V内存数据库,定期通过异步操作把数据库数据flush到硬盘上进行储存,为应对各使用场景,提供了五种数据类型(STR)

2021-06-06 13:30:12 1346 2

原创 JavaSE面试题

你是怎样理解面向对象的面向对象是利用语言对现实事物抽象。面向对象具有以下四大特征:①封装:②继承:③duo'ta

2021-06-03 14:55:07 1867

原创 SpringCloud面试题

什么是SpringCloud?SpringCloud是一系列框架的有序集合,它利用了SpringBoot的开发便利性简化了分布式系统的开发,提供与外部系统的集成。 如服务注册与发现、配置中心、负载均衡、断路器、消息总线、数据监控等;换句话说:Spring Cloud 提供了构建分布式系统所需的“全家桶”。...

2021-06-02 17:24:14 2886 2

原创 分布式中间件Dubbo详解

Dubbo是一款高性能的Java RPC框架,其前身是阿里巴巴公司开源的一个高性能、轻量级的开源Java RPC框架,可以和Spring框架无缝集成。Dubbo官网

2021-06-01 11:59:01 1885 1

原创 以优美的姿势访问GitHub

github.com和github.global.ssl.fastly.net对应的ip可能因机器不同而不同,①打开hosts目录:C:\Windows\System32\drivers\etc。③按下Esc退出编辑模式,输入:wq!③更新DNS缓存,打开CMD运行如下命令。②按i进入编辑模式并添加以下信息。②hosts文件添加以下信息。修改本机hosts文件。①打开hosts文件。

2021-04-29 15:52:44 123 1

原创 数据存储架构的发展史,看完这一篇就够了

单机MySQL的美好年代在那个时候,更多的是静态网页,动态交互类型的网站不多。上述架构下,我们来看看数据存储的瓶颈是什么?数据量的总大小,一个机器放不下时; 数据的索引(B+Tree)一个及其内存放不下时; 访问量(读写混合)一个实例不能承受。如果满足上述任意条件,我们该怎么办?Memcached(缓存)+MySQL+垂直拆分互联网发展至今,随着访问量的上升,几乎大部分使用MySQL架构的网站在数据库上都出现了性能问题,然而我们的程序不再仅仅专注在功能上,同时也需要追求性能。猿

2021-01-10 23:43:56 3483 12

原创 基于Redis与Redisson实现分布式锁

分布式锁介绍在计算机系统中,锁作为一种控制并发的机制无处不在,单机环境下,操作系统能够在进程或线程之间通过本地的锁来控制并发程序的行为。而在如今的大型复杂系统中,通常采用的是分布式架构提供服务。分布式环境下,基于本地单机的锁无法控制分布式系统中分开部署客户端的并发行为,此时分布式锁就应运而生了。一个可靠的分布式锁应该具有以下特征:①互斥锁:作为锁,需要保证任何时候只能有一个客户端持有锁。②可重入:同一个客户端在获得锁后,可以再次进行加锁。③高可用:获取锁和释放锁的效率较高,不会出现单点故

2020-12-28 23:42:36 3138 8

Alibaba_Dragonwell_8.7.7_x64_linux.tar.gz

Alibaba_Dragonwell_8.7.7_x64_linux.tar.gz

2021-08-03

Alibaba_Dragonwell_8.7.7_x64_windows.zip

Alibaba_Dragonwell_8.7.7_x64_windows.zip

2021-08-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除