主题
middleware
该主题下共 10 篇笔记
middleware
基于RabbitMQ的延迟队列
介绍如何利用 RabbitMQ 的 rabbitmq-delayed-message-exchange 插件实现延迟队列:从插件安装、用 Spring AMQP 的 CustomExchange 定义 x-delayed-message 类型交换机,到通过 MessageProperties.setDelay() 发送延迟消息并被 @RabbitListener 消费,并对比 Redis 与 RocketMQ 延迟队列方案的利弊。
2 分钟阅读利用MongoDB进行地理坐标查询
介绍如何利用 MongoDB 原生的二维地理坐标查询能力支撑 LBS 应用:为 location 集合的 position 字段建立 2d 索引,使用 $near/$maxDistance 按距离排序查询附近坐标点,以及 $geoWithin 配合 $center/$box 完成圆形和矩形区域内的坐标筛选。
1 分钟阅读RabbitMQ的四种交换机
详解 RabbitMQ 的四种交换机类型:扇形交换机(Fanout,广播)、直连交换机(Direct,基于 routing_key 路由)、主题交换机(Topic,使用 * 和 # 通配符的模式匹配)、首部交换机(Headers,基于 Hash 头信息匹配 x-match=all/any),以及各自的适用场景。
3 分钟阅读Netty中的字节操作
解析 Netty 高性能背后的字节操作设计:ByteBuf 的 readerIndex/writerIndex/capacity 三大属性、Heap Buffer / Direct Buffer / Composite Buffer 三种模式(包括 Zero-Copy 实现),以及通过 ByteBufAllocator 与 Unpooled 分配池化内存的方式。
2 分钟阅读CentOS上安装RabbitMQ
在 CentOS 上从源码安装 RabbitMQ 的步骤:先安装 OpenSSL 依赖并编译 Erlang/OTP(RabbitMQ 用 Erlang 编写),再安装 xmlto、解压 rabbitmq-server 源码包并 make && make install,最后执行 rabbitmq-server 启动服务。
1 分钟阅读利用Metrics+InfluxDB+Grafana构建监控平台
在 Metrics 基础上结合 InfluxDB(时序数据库)和 Grafana(可视化面板)搭建一套完整的业务监控平台:通过 yum 在 CentOS 7 上安装两个服务,使用 metrics-influxdb 的 InfluxdbReporter 把度量数据写入 InfluxDB,再用 Grafana 配置数据源与图表,最后用 wrk 压测观察实时监控画面。
1 分钟阅读Netty构建Http服务器
使用 Netty 实现一个自定义的 HTTP 服务器:介绍 HTTP 请求/响应协议结构,编写 SimpleChannelInboundHandler 处理 HttpRequest 与 LastHttpContent 并返回 Hello World,通过 HttpServerCodec 编解码、ServerBootstrap + NioEventLoopGroup 启动监听 8888 端口,并用 httpie 进行验证。
1 分钟阅读利用Netty构建自定义协议的通信
使用 Netty 实现一个名为 luck 的自定义应用层协议(Header + Content):定义 LuckHeader/LuckMessage 数据结构,通过继承 ByteToMessageDecoder 与 MessageToByteEncoder 实现编解码器,再配合 ServerBootstrap 和客户端完成自定义协议的双端通信验证。
1 分钟阅读使用Netty创建Telnet服务
用 Netty 实现一个 Telnet 服务端:通过 ServerBootstrap 配置 boss/worker 两个 NioEventLoopGroup,在 ChannelInitializer 中加入 DelimiterBasedFrameDecoder 与 StringDecoder/Encoder,再用 SimpleChannelInboundHandler 处理连接握手与请求响应,最后用系统 telnet 命令完成验证。
1 分钟阅读Redis 持久化
系统介绍 Redis 的两种持久化方案:RDB(通过 SAVE/BGSAVE 生成压缩的二进制快照,可配置 save 触发条件)与 AOF(追加写命令、appendfsync 控制 always/everysec/no 同步策略、支持 BGREWRITEAOF 重写),并对比两者在数据安全性、文件大小与恢复速度上的取舍。
4 分钟阅读