HikariCP数据库连接池实战

HikariCP数据库连接池实战

作者:朱政科

出版社:机械工业

出版年:2019年8月

ISBN:9787111633211

所属分类:网络科技

书刊介绍

《HikariCP数据库连接池实战》内容简介

这是一本从设计思想、功能使用、原理实现、工程实践、技术扩展5个维度全面讲解数据库连接池HikariCP的著作。得到了褚霸、德哥、张亮、吴晟等近10位来自阿里、京东等互联网企业的技术专家的高度评价,同时也在社区里获得广泛好评。系统性上,从基本功能,到扩展技术,内容涵盖HikariCP的方方面面;深度上,从原理阐述到源码分析,直击HikariCP的本质;实操性上,不仅有小案例和综合性的大案例,还有对疑难问题的解决方案。
全书共14章,在逻辑上分为四大部分: 准备篇(1~3章)以阿里连接池极致优化案例展示了不使用连接池和使用连接池的QPS天壤之别,带领读者了解数据库连接池的背景、原理及历史,以及本书的主角HikariCP。
基础篇(4~5章)系统梳理HikariCP的基础知识,包含参数配置、JDBC等核心模块,这些内容都是HikariCP基础的重中之重。
原理篇(6~9章)直击HikariCP的“灵魂”,深入浅出地分析了HikariCP的原理。首先,全方位的剖析了HikariCP性能极致的原因,这些都会成为读者面试、工作中的谈资;其次,从连接原理、参数原理、动态代理与字节码技术等三个维度作为切入口,分别对HikariCP进行了源码级别的解析,这样全方位的剖析不同于单视角的源码解析,更能将HikariCP的原理立体化的展示在读者面前。
实战篇(10~14章)这是本书的精华部分。HikariCP的监控、扩展技术、常见问题等都是读者工作中较为迫切了解到、使用到的知识点,这些内容大多来自作者多年实战经验的积累及大量文献资料的收集整理,内容包罗万象、精妙绝伦。
朱政科,资深架构师,十年IT老兵,对各种数据库连接池有深入的研究。曾在阿里等一线互联网公司长期从事中间件的研发及团队管理工作,连续经历过3年“双11”大促,在大量的实践中积累了丰富的经验。热爱开源,热爱新技术,对Apache ShardingSphere、Apache Skywalking等技术社区都做出过贡献。除了中间件技术,先后主导和参与了多个重要的物联网、人工智能等大型项目,对软件系统架构有深刻的积累和沉淀。运营公众号《工匠人生》和知识星球《猪猪的架构师私密圈》。

作品目录

赞誉
前言
第一篇
准备篇
第1章:阿里中间件实战,第一个案例
第2章:数据库连接池江湖
第3章:初识HikariCP
第二篇
基础篇
第4章:HikariCP参数配置
第5章:HikariCP与JDBC
第三篇
原理篇
第6章:HikariCP性能揭秘
第7章:HikariCP连接原理
第8章:HikariCP参数源码解析
第9章:HikariCP动态代理与字节码技术
第四篇
实践篇
第10章:HikariCP监控实战
第11章:从HikariCP
Metrics谈微服务监控架构实战
第12章:HikariCP扩展技术
第13章:HikariCP常见问题
第14章:HikariCP诡案实录

热门书摘

客户端使用Lazy模式

HikariCP在很大程度上依赖于精确的高分辨率的定时器来提高性能和可靠性,所以使用数据库连接池HikariCP的应用服务器最好能够与时间源做同步,比如NTP服务器,否则由于HikariCP源码对于时间的处理可能会导致一些问题

它由是chronyd和chronyc两个程序组成:chronyd作为后台运行的守护进程,调整内核中运行的系统时钟和时钟服务器同步;chronyc则展现用户界面,用于监控性能并进行多样化的配置。

连接是否空闲而退役的最大变化为+30秒,平均变化为+15秒

注意,如果你追求极致性能的话,建议不要配置该属性,因为不配置的时候会通过ping命令进行连接检测,性能会更高。经过小规模测试,原生的ping命令性能是select的一倍左右。

如果池无法成功初始化连接,则此属性控制池是否“快速失败”。任何正数都被认为是尝试获取初始连接的毫秒数;在此期间,应用程序线程将被阻塞。如果在超时发生之前无法获取连接,则将引发异常。initializationFailTimeout超时发生在connectionTimeout阶段之后。如果值为0,HikariCP将尝试获取并验证连接。如果获得连接但验证失败,则抛出异常,而不会启动池。但是,如果无法获得连接,则池将启动,但稍后获取连接的尝试会失败。小于0的值将绕过任何初始连接尝试,并且池将在尝试在后台获取连接时立即启动。因此,以后获得连接的尝试可能会失败。默认值:1。

·连接验证失败。这对应用程序是不可见的。连接已停用并已替换。用户会看到一条日志消息:“Failed to validate connection...”。·连接闲置的时间超过了idleTimeout。这对应用程序是不可见的。连接已停用并已替换。用户看到关闭的原因:“connection has passed idleTimeout”。·连接达到了其maxLifetime。这对应用程序是不可见的。连接已停用并已替换。用户会看到一个关闭原因:“connection has passed maxLifetime”,或者如果在到达时maxLifetime正在使用该连接,用户会晚一点看到原因:“connection is evicted or dead”。·用户手动驱逐连接。这对应用程序是不可见的。连接已停用并已替换。用户会看到关闭的原因:“connection evicted by user”。·JDBC调用引发了无法恢复的问题SQLException。这应该对应用程序可见。用户会看到关闭的原因:“connection is broken”。

相关推荐

微信二维码