Bao Tingyu's Blog

JVM G1性能调优

G1简介和常用配置可参考:JVM G1垃圾回收器简介与常用配置 G1调优概要 G1整体上保持默认配置即可,最多配置一下 pause-time goal或堆内存大小(-Xmx和-Xms)。 不像其他的垃圾回收器,G1默认已经在最大吞吐和低时延之间做了平衡。但是,G1在堆中的增量式空间回收和pause-time控制机制给应用线程 和回收效率上都带来了负担。 如果需要大吞吐(非在线业务,如...

分布式锁选型 Redis vs Zookeeper

分布式锁作为分布式环境下并发控制利器,使用场景广泛。分布式锁通常可利用中间件Redis或Zookeeper来实现, 例如针对Java语言Redis有Redisson组件, Zk有Curator组件。 Redis是一款内存数据库,通常可用来做缓存,由于其执行命令使用单线程,也可以用来实现分布式锁, 在集群模式下,Redis提供主从复制和哨兵机制实现高可用性; Zookeeper是一...

电商物流:配送管理系统实践

当今电商行业蓬勃发展,物流是其中不可或缺的一个环节,而配送管理系统(Delivery Management System, DMS) 用于实物商品从下单到配货到发货到签收以及退换货的全流程管理(相对于实物商品,虚拟商品如教培行业的课程就不再DMS处理范围内,一般两者可以通过更为抽象的履约平台进行统一调度和管理)。 注意DMS并不关心商品的实际配送本身,你可以在自营仓库发货,也可以在第三方仓库...

数据同步策略概览

数据同步在业务开发中比较普遍,例如 订阅MySQL的binlog将数据同步至异构数据库。数据同步方案需要考虑一下几点: 数据实时性要求 数据量级 是否有数据转换逻辑 可分为两种模式 发布订阅模式:分为订阅数据库log还是订阅应用层发的消息 点对点模式:分为推和拉 以下讨论几种比较通用的方法: 日志订阅:订阅数据生产方库表日志,如mysql的binlog ...

数据库实例迁移实践

背景 随着业务发展,数据库实例磁盘逐渐升高,告警频繁,且后续可能会对DDL产生影响(尤其是借助ghost等工具执行的DDL)。 该实例有多个库,则需要迁移其中的一个或几个单库到其他实例,为什么不做分库分表?一是没必要,数据增长没有那么快;二是改动大,影响范围大。 故采用库实例迁移的方式来缓解磁盘压力。 依赖梳理 库本身的迁移好办,麻烦的是库下游的依赖迁移,比如DTS、大数据等依赖。所以...