- 博客(13)
- 收藏
- 关注
原创 gRPC 跟其他通信方式到底有什么区别?
摘要:gRPC是一种RPC框架/应用层协议,基于HTTP/2和Protobuf,具有强类型、高性能、流式支持等特点。与REST相比,gRPC更适合微服务内部高频调用;与WebSocket相比,gRPC提供标准化的RPC语义;与消息队列相比,gRPC是同步请求-响应机制。建议对外API用REST,内部服务用gRPC,实时推送用WebSocket,异步场景用消息队列。
2026-01-05 00:37:08
292
原创 微服务/分布式下:MySQL 事务与 Kafka 一致性怎么做?
本文探讨了在微服务/分布式系统中如何实现MySQL事务与Kafka消息的一致性,提出了一种基于Transactional Outbox模式的解决方案。该方案通过本地消息表将业务数据变更和消息发布绑定在同一个MySQL事务中,确保数据一致性。文章详细介绍了Outbox表设计、Kafka生产者/消费者配置建议、投递器实现逻辑,并强调了消费端幂等处理的必要性。针对不同场景提供了MySQL去重表、Redis幂等和业务状态机三种实现方式,为支付/订单等关键业务场景提供了可落地的工程实践方案。
2025-12-29 00:58:40
714
原创 纯 Python 实现:百万级数据高效导出 Excel/CSV(可直接运行的完整示例,仅供参考)
本文介绍使用Python实现低内存、流式大数据导出的几种方法,重点解决大文件导出的内存问题。主要内容包括:1)使用openpyxl的write_only模式流式写入XLSX文件,避免内存中维护整张表;2)标准库csv的轻量级导出方案,适合千万级数据;3)Flask/FastAPI实现边生成边下载的HTTP流式传输;4)数据库分页读取与生产-消费模式的管道化处理。关键建议:CSV是首选方案,XLSX必须启用write_only模式,数据读写全程保持流式处理,避免逐单元格设置样式。文章提供了可直接运行的代码示例
2025-09-14 23:21:54
1152
原创 MySQL 索引实战:从 0 到 1 的系统优化手册
本文介绍了MySQL 8.x与InnoDB的索引设计与优化实践。主要内容包括:索引基础(B+Tree结构、聚簇/二级索引)、设计原则(高频过滤、最左前缀);通过可复现的SQL脚本搭建测试环境;实战演示单列、唯一、前缀、函数及联合索引;覆盖索引与回表机制;排序分页优化(避免filesort、大偏移分页技巧);以及索引失效场景(如LIKE前导通配)的改写方案。文章强调通过EXPLAIN分析执行计划,结合实际业务设计高效索引结构。
2025-09-14 22:52:58
1123
原创 纯 Go 实现:百万级数据高效导出 Excel(以及 CSV)实战
本文介绍了如何使用纯 Go 语言实现百万级数据的高效导出,支持 Excel(XLSX)和 CSV 格式。针对大数据导出常见的内存爆炸问题,提出了分页查询+流式写入+限流并发+可中断的核心原则。文章详细对比了 XLSX 和 CSV 的技术选型,并提供了可直接运行的代码示例,包括流式导出百万行 XLSX、CSV 轻量导出、HTTP 直接下载等场景实现。重点展示了如何通过 StreamWriter 和标准库 encoding/csv 实现极低内存消耗的流式导出,同时涵盖了数据库分页处理、取消机制、资源回收等生产级
2025-09-12 16:47:39
716
原创 用 FastAPI 实现大文件分片上传与断点续传(含可运行示例与客户端脚本,仅供参考)
大文件分片上传与断点续传实现(FastAPI) 本文提供基于FastAPI的大文件分片上传解决方案,支持断点续传功能。核心特性包括: 分片上传:将大文件拆分为多个小块上传 断点续传:中断后可查询已上传分片并继续传输 文件校验:支持SHA256/MD5校验 并发安全:文件级锁机制确保数据完整性 技术实现要点 服务端采用Python FastAPI框架 使用SQLite存储上传元数据 提供四个核心API端点: /upload/init - 初始化上传 /upload/chunk - 上传分片 /upload/s
2025-09-12 01:07:15
618
原创 Go 实现大文件分片上传与断点续传
本文介绍了使用Go实现大文件分片上传和断点续传的方案。核心思路是将大文件切分成小块上传,服务端记录上传进度支持断点续传,最终合并分片。文章提供了Go服务端代码示例,包含分片上传和合并接口实现,以及客户端伪代码实现思路。还提出了分片校验、并行上传、秒传功能等优化方向,强调在实际项目中需结合数据库、鉴权等功能构建更健壮的文件上传系统。
2025-09-12 00:51:28
518
原创 别再把 Context 当塑料袋用了:8 个日常神用法
本文系统介绍了Go语言中context.Context的正确用法,强调其核心功能是管理并发任务的取消、超时和链路追踪,而非传递业务的"塑料袋"。作者提出Context使用三原则:显式取消、强制超时、只放请求范围元数据。文中列举了8个典型场景:HTTP中间件(注入超时和请求ID)、gRPC调用、并发批处理(errgroup+限流)、Worker Pool、优雅退出、数据库访问、重试逻辑、长连接管理等,并提供了可直接使用的代码模板。特别提醒要避免将Context作为业务参数容器,所有外部调用
2025-09-09 14:16:11
632
原创 一致性等级与缓存更新策略详解
文章详细解析了一致性等级与缓存更新策略。一致性分为强一致性、弱一致性和最终一致性,分别适用于不同场景,如金融交易、社交网络和推荐系统。缓存更新策略包括同步顺序分类和更新与删除缓存的方式,推荐先删除缓存再更新数据库或先更新数据库再删除缓存。文章还探讨了延迟双删方案、消息队列方案和Binlog日志监听方案,以及实现强一致性的串行化写入和分布式锁方法。最后,介绍了基于开关控制的写请求和读请求流程,以及异步恢复机制。这些策略和方案有助于在不同业务场景下实现数据一致性和系统性能的平衡。
2025-05-22 02:07:25
396
原创 一文读懂 RPC、gRPC 与服务注册机制
对比项RPCRESTful核心理念面向服务的方法调用面向资源的接口规范通信协议支持 TCP、HTTP、WebSocket 等HTTP调度对象Service(服务/方法)Controller(接口/资源)使用场景系统内部高性能服务间通信开放 API、前后端通信gRPC📡 使用HTTP/2协议,支持多路复用、流式传输;📦 使用作为 IDL 和序列化格式;🧬 支持多语言(Go、Java、Python、C++ 等);⚙️ 支持双向流、认证、负载均衡、中间件等能力;
2025-05-20 03:11:54
343
原创 一文读懂:集群、分布式、微服务的区别与微服务设计原则
本文详细解析了集群、分布式和微服务的区别,并深入探讨了微服务的设计原则。集群通过多台相同功能的服务器提高可用性和负载能力;分布式系统通过多台服务器分担不同功能实现职责分离;微服务则是一种架构设计方式,将应用拆分为多个独立服务,强调服务自治和模块解耦。微服务拆分需考虑团队结构、业务复杂度和访问量,建议从模块、功能、读写分离、切面和分层架构等维度进行。服务化将系统拆解为独立、可组合的服务单元,与组件化和子系统相比,具有独立部署、远程通信和低影响升级等优势。微服务通信机制包括RPC、RESTful API和消息队
2025-05-17 02:50:01
507
原创 GPT-4o:人工智能新纪元的里程碑
总的来说,GPT-4o是一次令人印象深刻的技术升级,它不仅提高了机器理解和生成语言的能力,而且在用户体验方面也取得了显著的进步。未来的发展中,我们期待OpenAI能够继续在这一领域进行创新和突破,为我们带来更加智能和高效的人工智能技术。
2024-06-11 21:03:33
385
原创 golang http请求神器-【Resty】
Resty是一个功能强大且易于使用的Golang HTTP客户端库。本文介绍了Resty的基本概念以及如何通过简单的步骤来发送GET和POST请求。通过使用Resty,我们可以更加高效地进行HTTP请求处理,从而提升开发效率。在实际项目中,Resty还支持更多高级功能,开发者可以根据需要进行深入探索和使用。
2024-06-11 20:43:25
1062
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅