Google MapReduce三 Google MapReduce架构,提现了很多经典架构实践: • 单点master简化系统复杂度 • 单点master不高可用,简化系统复杂度 • master对worker的监控以及重启,保证worker高可用 • 幂等性,保证结果的正确性 • 多个worker执行同一个任务优化长尾问题
服务挂了怎么自动恢复 Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意
连接池原来这么简单 上述伪代码忽略了一些细节,在实现连接池中是需要考虑的: (1)如果连接全部被占用,是返回失败,还是让上游等待 (2)需要实施连接可用性检测 (3)为了让调用方更友好,可能还需要包装一层DAO层,让“连接”这个东西对调用方都是黑盒的 (4)通过freeArray,connectionMap可以让取连接
消息顺序性设计实现 (1)要“有序”,先得有衡量“有序”的标尺,可以是客户端标尺,可以是服务端标尺; (2)大部分业务能够接受大范围趋势有序,小范围误差;绝对有序的业务,可以借助服务器绝对时序的能力; (3)单点序列化,是一种常见的保证多机时序统一的方法,典型场景有db主从一致,gfs多文件一致; (4)单对单聊天,只
GFS Google File System架构 GFS的架构,体现了很多经典的设计实践: • 简化系统角色,单点master降低系统复杂度 • 不管是文件还是服务,均通过“冗余+故障自动转移”保证高可用 • 由于存在单点master,GFS将“降低与单点master的交互”作为性能优化核心 • 通过写日志,原子修改,checksum,快速监控快速
PostgreSQL开发指南 本指南目的在于经验总结, 帮助PostgreSQL使用者快速入门,在开发及管理过程中有章可循。 • 命名规范 • Column设计 • Constraints 设计 • Index 设计 • 关于NULL • 开发相关规范 • 管理相关规范
缓存究竟是淘汰还是修改 允许cache miss的KV缓存写场景: • 大部分情况,修改value成本会高于“增加一次cache miss”,因此应该淘汰缓存 • 如果还在纠结,总是淘汰缓存,问题也不大
mysql并行复制降低主从同步延时的思路与启示 从mysql并行复制缩短主从同步时延的思想可以看到,架构的思路是相同的: (1)多线程是一种常见的缩短执行时间的方法 (2)多线程并发分派任务时必须保证幂等性:mysql的演进思路,提供了“按照库幂等”,“按照commit_id幂等”两种方式,思路大伙可以借鉴
反向代理层不能替代DNS轮询 (1) 接入层架构要考虑的问题域为:高可用、扩展性、反向代理、负载均衡; (2) Nginx、keepalived、lvs、f5可以很好的解决高可用、扩展性、反向代理、负载均衡的问题; (3) 水平扩展scale out是解决扩展性问题的根本方案,DNS轮询是不能完全被Nginx/lvs/f5所替代