上QQ阅读APP看书,第一时间看更新
第一篇 准备篇
第1章 阿里中间件实战,第一个案例
在应用系统开发过程中,池化技术,如对象池、连接池、线程池等被广泛用来提升性能,原理是通过复用对象而减少创建、释放连接的消耗。由于TCP连接的创建开支是昂贵的,数据库所能承载的TCP并发连接数也是有限制的,针对这种场景,数据库连接池应运而生。数据库连接池的实现有很多,如c3p0、DBCP、Druid等,也包括本书将详细介绍的、号称性能最好的数据库连接池——HikariCP。
关于这个问题该从何说起呢?按照传统做法,一开始介绍某个软件时,首先应该大致介绍它的概念、历史起源、适用场合、发展现状和趋势、大致原理、架构思路、操作环境搭建方法等。可是若有人在技术大会上介绍这些东西,在一个20几页的技术PPT中,有18页讲概念、两页讲实战、最后一页进行答疑FAQ,大都会让我昏昏欲睡、失去听讲的耐心。
所以,我决定在这里从一个有趣的实例说起。在此过程中,我将告诉你很多和连接相关的道理,并且让你对系统的调优过程有一点感觉,然后我才能向你展开通常的原理介绍。这个例子是我在阿里巴巴公司负责多年期间对一款中间件调优的真实经历,这款中间件做过全链路压测、经历过3年双十一大促、接入多种监控、数次重构改造并修复等一系列事件。这款中间件是纯TCP的,再回首,我并不为当年所做的那些TCP性能优化感到自豪,相反地,我却认为一款池化的中间件如果提炼出来则可以更加有利于技术产品的快速落地及运维,进而更好地提升研发效能。
希望读者通过体会这个小例子可以了解到在没有池化技术的情况下TCP调优是如何进行的,我相信通过这个例子,读者朋友能理解TCP调优的复杂性,体会到池化技术出现的必然性。数据库连接池同样是池化技术,大家也可以深入思考并想象一下数据库连接池中间件需要解决哪些问题。