Posts
小于 1 分钟
目录
DDD实战课
Dev Ops实战笔记
- 05 _ 价值流分析:关于DevOps转型,我们应该从何处入手?06 _ 转型之路:企业实施DevOps的常见路径和问题07 _ 业务敏捷:帮助DevOps快速落地的源动力08 _ 精益看板(上):精益驱动的敏捷开发方法09 _ 精益看板(下):精益驱动的敏捷开发方法10 _ 配置管理:最容易被忽视的DevOps工程实践基础11 _ 分支策略:让研发高效协作的关键要素12 _ 持续集成:你说的CI和我说的CI是一回事吗?13 _ 自动化测试:DevOps的阿克琉斯之踵14 _ 内建质量:丰田和亚马逊给我们的启示15 _ 技术债务:那些不可忽视的潜在问题16 _ 环境管理:一切皆代码是一种什么样的体验?17 _ 部署管理:低风险的部署发布策略18 _ 混沌工程:软件领域的反脆弱19 _ 正向度量:如何建立完整的DevOps度量体系?20 _ 持续改进:PDCA体系和持续改进的意义
Etcd实战课
- 12 _ 一致性:为什么基于Raft实现的etcd还会出现数据不一致?13 _ db大小:为什么etcd社区建议db大小不超过8G?14 _ 延时:为什么你的etcd请求会出现超时?15 _ 内存:为什么你的etcd内存占用那么高?16 _ 性能及稳定性(上):如何优化及扩展etcd性能?17 _ 性能及稳定性(下):如何优化及扩展etcd性能_18 _ 实战:如何基于Raft从0到1构建一个支持多存储引擎分布式KV服务?19 _ Kubernetes基础应用:创建一个Pod背后etcd发生了什么?20 _ Kubernetes高级应用:如何优化业务场景使etcd能支撑上万节点集群?21 _ 分布式锁:为什么基于etcd实现分布式锁比Redis锁更安全?22 _ 配置及服务发现:解析etcd在API Gateway开源项目中应用23 _ 选型:etcd_ZooKeeper_Consul等我们该如何选择?24 _ 运维:如何构建高可靠的etcd集群运维体系?
Kafka核心技术与实战
Kafka核心源码解读
Linux内核技术实战课
Linux性能优化实战
- 02 _ 基础篇:到底应该怎么理解“平均负载”?03 _ 基础篇:经常说的 CPU 上下文切换是什么意思?(上)04 _ 基础篇:经常说的 CPU 上下文切换是什么意思?(下)05 _ 基础篇:某个应用的CPU使用率居然达到100%,我该怎么办?06 _ 案例篇:系统的 CPU 使用率很高,但为啥却找不到高 CPU 的应用?07 _ 案例篇:系统中出现大量不可中断进程和僵尸进程怎么办?(上)08 _ 案例篇:系统中出现大量不可中断进程和僵尸进程怎么办?(下)09 _ 基础篇:怎么理解Linux软中断?10 _ 案例篇:系统的软中断CPU使用率升高,我该怎么办?11 _ 套路篇:如何迅速分析出系统CPU的瓶颈在哪里?12 _ 套路篇:CPU 性能优化的几个思路13 _ 答疑(一):无法模拟出 RES 中断的问题,怎么办?14 _ 答疑(二):如何用perf工具分析Java程序?
- 33 _ 关于 Linux 网络,你必须知道这些(上)34 _ 关于 Linux 网络,你必须知道这些(下)35 _ 基础篇:C10K 和 C1000K 回顾36 _ 套路篇:怎么评估系统的网络性能?37 _ 案例篇:DNS 解析时快时慢,我该怎么办?38 _ 案例篇:怎么使用 tcpdump 和 Wireshark 分析网络流量?39 _ 案例篇:怎么缓解 DDoS 攻击带来的性能下降问题?40 _ 案例篇:网络请求延迟变大了,我该怎么办?41 _ 案例篇:如何优化 NAT 性能?(上)42 _ 案例篇:如何优化 NAT 性能?(下)43 _ 套路篇:网络性能优化的几个思路(上)44 _ 套路篇:网络性能优化的几个思路(下)45 _ 答疑(五):网络收发过程中,缓冲区位置在哪里?
OAuth 2.0实战课
Open Resty从入门到实战
- 15 _ OpenResty 和别的开发平台有什么不同?16 _ 秒杀大多数开发问题的两个利器:文档和测试案例17 _ 为什么能成为更好的Web服务器?动态处理请求和响应是关键18 _ worker间的通信法宝:最重要的数据结构之shared dict19 _ OpenResty 的核心和精髓:cosocket20 _ 超越 Web 服务器:特权进程和定时任务21 _ 带你玩转时间、正则表达式等常用API22 _ [视频]从一个安全漏洞说起,探寻API性能和安全的平衡23 _ [视频]导读lua-resty-requests:优秀的lua-resty-_是如何编写的?24 _ 实战:处理四层流量,实现Memcached Server25 _ 答疑(二):特权进程的权限到底是什么?
- 01 _ 初探OpenResty的三大特性02 _ 如何写出你的“hello world”?03 _ 揪出隐藏在背后的那些子项目04 _ 如何管理第三方包?从包管理工具luarocks和opm说起05 _ [视频]opm项目导读06 _ OpenResty 中用到的 NGINX 知识07 _ 带你快速上手 Lua08 _ LuaJIT分支和标准Lua有什么不同?09 _ 为什么 lua-resty-core 性能更高一些?10 _ JIT编译器的死穴:为什么要避免使用 NYI ?11 _ 剖析Lua唯一的数据结构table和metatable特性12 _ 高手秘诀:识别Lua的独有概念和坑13 _ [视频]实战:基于FFI实现的lua-resty-lrucache14 _ 答疑(一):Lua 规则和 NGINX 配置文件产生冲突怎么办?
- 31 _ 性能下降10倍的真凶:阻塞函数32 _ 让人又恨又爱的字符串操作33 _ 性能提升10倍的秘诀:必须用好 table34 _ 特别放送:OpenResty编码指南35 _ [视频]实际项目中的性能优化:ingress-nginx中的几个PR解读36 _ 盘点OpenResty的各种调试手段37 _ systemtap-toolkit和stapxx:如何用数据搞定“疑难杂症”?38 _ [视频]巧用wrk和火焰图,科学定位性能瓶颈39 _ 高性能的关键:shared dict 缓存和 lru 缓存40 _ 缓存与风暴并存,谁说缓存风暴不可避免?41 _ lua-resty-_ 封装,让你远离多级缓存之痛42 _ 如何应对突发流量:漏桶和令牌桶的概念43 _ 灵活实现动态限流限速,其实没有那么难44 _ OpenResty 的杀手锏:动态45 _ 不得不提的能力外延:OpenResty常用的第三方库46 _ 答疑(四):共享字典的缓存是必须的吗?
Redis核心技术与实战
- 11 _ “万金油”的String,为什么不好用了?12 _ 有一亿个keys要统计,应该用哪种集合?13 _ GEO是什么?还可以定义新的数据类型吗?14 _ 如何在Redis中保存时间序列数据?15 _ 消息队列的考验:Redis有哪些解决方案?16 _ 异步机制:如何避免单线程模型的阻塞?17 _ 为什么CPU结构也会影响Redis的性能?18 _ 波动的响应延迟:如何应对变慢的Redis?(上)19 _ 波动的响应延迟:如何应对变慢的Redis?(下)20 _ 删除数据后,为什么内存占用率还是很高?21 _ 缓冲区:一个可能引发“惨案”的地方22 _ 第11~21讲课后思考题答案及常见问题答疑23 _ 旁路缓存:Redis是如何工作的?24 _ 替换策略:缓存满了怎么办?25 _ 缓存异常(上):如何解决缓存和数据库的数据不一致问题?26 _ 缓存异常(下):如何解决缓存雪崩、击穿、穿透难题?27 _ 缓存被污染了,该怎么办?28 _ Pika:如何基于SSD实现大容量Redis?29 _ 无锁的原子操作:Redis如何应对并发访问?30 _ 如何使用Redis实现分布式锁?31 _ 事务机制:Redis能实现ACID属性吗?32 _ Redis主从同步与故障切换,有哪些坑?33 _ 脑裂:一次奇怪的数据丢失34 _ 第23~33讲课后思考题答案及常见问题答疑35 _ Codis VS Redis Cluster:我该选择哪一个集群方案?36 _ Redis支撑秒杀场景的关键技术和实践都有哪些?37 _ 数据分布优化:如何应对数据倾斜?38 _ 通信开销:限制Redis Cluster规模的关键因素
RPC实战与核心原理
Serverless入门课
Service Mesh实践指南
SRE实战手册
从0开始学微服务
从0开始学架构
分布式协议与算法实战
- 05 _ Paxos算法(一):如何在多个节点间确定某变量的值?06 _ Paxos算法(二):Multi-Paxos不是一个算法,而是统称07 _ Raft算法(一):如何选举领导者?08 _ Raft算法(二):如何复制日志?09 _ Raft算法(三):如何解决成员变更的问题?10 _ 一致哈希算法:如何分群,突破集群的“领导者”限制?11 _ Gossip协议:流言蜚语,原来也可以实现一致性12 _ Quorum NWR算法:想要灵活地自定义一致性,没问题!13 _ PBFT算法:有人作恶,如何达成共识?14 _ PoW算法:有办法黑比特币吗?15 _ ZAB协议:如何实现操作的顺序性?加餐 _ MySQL XA是如何实现分布式事务的?加餐 _ PBFT算法:如何替换作恶的领导者?加餐 _ TCC如何实现指令执行的原子性?加餐 _ ZAB协议(一):主节点崩溃了,怎么办?加餐 _ ZAB协议(三):如何处理读写请求?加餐 _ ZAB协议(二):如何从故障中恢复?
分布式技术原理与算法解析
分布式金融架构课
- 12 _ 正确性分级(上):单机无备份有哪几种不同的一致性?13 _ 正确性分级(中):多机无容灾有哪几种不同的一致性实现?14 _ 正确性分级(下):多机有容灾有哪几种不同的一致性?15 _ 分布式正确性的存在性(上):什么情况下不存在分布式共识算法?16 _ 分布式一致性(下):怎么理解最简单的分布式一致性算法?17 _ 正确性案例(上):如何实现分布式的事件溯源架构?18 _ 正确性案例(中):常见分布式数据方案的设计原理是什么?19 _ 正确性案例(下):如何在运行时进行数据系统的动态分库?20 _ 容灾(上)如何实现正确的跨机房实时容灾?21 _ 容灾(下):如何通过混沌工程提高系统稳定性?答疑集锦(三) _ 思考题解析与数据库底层实现
动态规划面试宝典
即时消息技术剖析与实战
后端存储实战课
如何设计一个秒杀系统
容器实战高手课
容量保障核心技术与实战
性能优化高手课
性能工程高手课
操作系统实战45讲
消息队列高手课
- 09 _ 学习开源代码该如何入手?10 _ 如何使用异步设计提升系统性能?11 _ 如何实现高性能的异步网络传输?12 _ 序列化与反序列化:如何通过网络传输结构化的数据?13 _ 传输协议:应用程序之间对话的语言14 _ 内存管理:如何避免内存溢出和频繁的垃圾回收?15 _ Kafka如何实现高性能IO?16 _ 缓存策略:如何使用缓存来减少磁盘IO?17 _ 如何正确使用锁保护共享数据,协调异步线程?18 _ 如何用硬件同步原语(CAS)替代锁?19 _ 数据压缩:时间换空间的游戏20 _ RocketMQ Producer源码分析:消息生产的实现过程21 _ Kafka Consumer源码分析:消息消费的实现过程22 _ Kafka和RocketMQ的消息复制实现的差异点在哪?23 _ RocketMQ客户端如何在集群中找到正确的节点?24 _ Kafka的协调服务ZooKeeper:实现分布式系统的“瑞士军刀”25 _ RocketMQ与Kafka中如何实现事务?26 _ MQTT协议:如何支持海量的在线IoT设备_27 _ Pulsar的存储计算分离设计:全新的消息队列设计思路28 _ 答疑解惑(二):我的100元哪儿去了?加餐 _ JMQ的Broker是如何异步处理消息的?
深入剖析 Kubernetes
- 13 _ 为什么我们需要Pod?14 _ 深入解析Pod对象(一):基本概念15 _ 深入解析Pod对象(二):使用进阶16 _ 编排其实很简单:谈谈“控制器”模型17 _ 经典PaaS的记忆:作业副本与水平扩展18 _ 深入理解StatefulSet(一):拓扑状态19 _ 深入理解StatefulSet(二):存储状态20 _ 深入理解StatefulSet(三):有状态应用实践21 _ 容器化守护进程的意义:DaemonSet22 _ 撬动离线业务:Job与CronJob23 _ 声明式API与Kubernetes编程范式24 _ 深入解析声明式API(一):API对象的奥秘25 _ 深入解析声明式API(二):编写自定义控制器26 _ 基于角色的权限控制:RBAC27 _ 聪明的微创新:Operator工作原理解读
深入浅出g RPC
深入浅出云计算
物联网开发实战
系统性能调优必知必会
许式伟的架构课
- 01 _ 架构设计的宏观视角02 _ 大厦基石:无生有,有生万物03 _ 汇编:编程语言的诞生04 _ 编程语言的进化05 _ 思考题解读:如何实现可自我迭代的计算机?06 _ 操作系统进场07 _ 软件运行机制及内存管理08 _ 操作系统内核与编程接口09 _ 外存管理与文件系统10 _ 输入和输出设备:交互的演进11 _ 多任务:进程、线程与协程12 _ 进程内协同:同步、互斥与通讯13 _ 进程间的同步互斥、资源共享与通讯14 _ IP 网络:连接世界的桥梁15 _ 可编程的互联网世界16 _ 安全管理:数字世界的守护17 _ 架构:需求分析 (上)18 _ 架构:需求分析 (下) · 实战案例19 _ 基础平台篇:回顾与总结
说透中台
趣谈 Linux操作系统
趣谈网络协议
高并发系统设计40问
高楼的性能工程实战课
- 10 _ 设计基准场景需要注意哪些关键点?11 _ 打开首页之一:一个案例,带你搞懂基础硬件设施的性能问题12 _ 打开首页之二:如何平衡利用硬件资源?13 _ 用户登录:怎么判断线程中的Block原因?14 _ 用户信息查询:如何解决网络软中断瓶颈问题?15 _ 查询商品:资源不足有哪些性能表现?16 _ 商品加入购物车:SQL优化和压力工具中的参数分析17 _ 查询购物车:为什么铺底参数一定要符合真实业务特性?18 _ 购物车信息确定订单:为什么动态参数化逻辑非常重要?19 _ 生成订单信息之一:应用JDBC池优化和内存溢出分析20 _ 生成订单信息之二:业务逻辑复杂,怎么做性能优化?21 _ 支付前查询订单列表:如何分析优化一个固定的技术组件?22 _ 支付订单信息:如何高效解决for循环产生的内存溢出?