首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当同一微服务的多个实例时,数据库连接池如何工作

当同一微服务的多个实例时,数据库连接池的工作原理如下:

数据库连接池是一种管理和维护数据库连接的技术,它通过预先创建一定数量的数据库连接并将其保存在连接池中,以便在需要时重复使用。这样可以减少每次请求时创建和销毁数据库连接的开销,提高系统的性能和响应速度。

数据库连接池通常由以下几个组件组成:

  1. 连接池管理器:负责创建、初始化和管理数据库连接池。它会根据配置的参数,预先创建一定数量的数据库连接,并将其保存在连接池中。
  2. 连接池:是一个容器,用于存放数据库连接。连接池会维护一个可用连接的列表,当有请求需要数据库连接时,连接池会从列表中获取一个可用连接并分配给请求。
  3. 连接状态管理:连接池会跟踪每个连接的状态,包括是否空闲、是否正在使用等。当一个连接被分配给请求时,连接状态会被标记为“正在使用”,当请求结束后,连接会被释放并标记为“空闲”。

当多个微服务实例同时使用数据库连接池时,连接池会根据请求的需要从连接池中获取一个可用连接,并将其分配给请求。如果连接池中没有可用连接,请求可能需要等待,直到有连接可用为止。

数据库连接池的工作流程如下:

  1. 初始化连接池:在系统启动时,连接池管理器会根据配置的参数创建一定数量的数据库连接,并将其保存在连接池中。
  2. 请求数据库连接:当一个微服务实例需要与数据库交互时,它会向连接池请求一个数据库连接。
  3. 获取可用连接:连接池会检查连接池中是否有空闲的数据库连接。如果有空闲连接,则连接池会从空闲连接列表中选择一个可用连接,并将其标记为“正在使用”。
  4. 分配连接给请求:连接池将选中的连接分配给请求的微服务实例,使其可以使用该连接进行数据库操作。
  5. 使用连接进行数据库操作:微服务实例使用连接进行数据库读写操作。
  6. 释放连接:当请求结束后,微服务实例会将连接释放回连接池,连接池将其标记为“空闲”,以便其他请求可以继续使用。
  7. 连接池管理:连接池会定期检查连接的健康状态,如果发现某个连接失效或超过一定时间没有被使用,连接池会关闭该连接并重新创建一个新的连接来替代。

数据库连接池的优势在于减少了数据库连接的创建和销毁开销,提高了系统的性能和响应速度。同时,连接池还可以限制并发连接的数量,防止数据库被过多的连接请求压垮。它还可以通过连接的复用,减少了连接的建立和断开所需的时间,提高了系统的效率。

在腾讯云中,推荐使用的数据库连接池产品是TencentDB for MySQL,它是腾讯云提供的一种高可用、可扩展的云数据库解决方案。您可以通过以下链接了解更多关于TencentDB for MySQL的信息:https://cloud.tencent.com/product/cdb

相关搜索:同一微服务的多个实例同时写入数据库当多个连接同时访问远程数据库的单个实例时,连接池是否会导致任何可访问性问题如何使用docker compose运行同一服务的多个实例?Angular 8:如何为同一组件的多个实例提供不同的服务实例当同一个数据库连接到2个实例时,如何在Oracle 12c中切换实例当服务器发送在多个组件中使用的事件服务时,ngOnInit不工作当一个工作表有多个可能的名称时,如何将多个excel工作表读入python如何防止同一微服务的多个实例从ActiveMQ Artemis主题读取相同的消息当两个用户在同一记录上工作时如何限制数据库修改- groceryCRUD当多个选择元素在同一个页面上时,如何获得正确的selectedIndex?当同一个类存在于同一服务器上的不同应用程序中时,类加载如何工作?春天。当存在多个具有相同限定符的bean时,bean注入是如何工作的?当同一文件夹中有多个JavaScript时,如何指定要运行的脚本?当目标服务器实例无响应时,WebSphere集群如何处理来自同一会话的请求?当从多个模块初始化静态变量时,它们在Junit中是如何工作的?当ECS中只有命令不同的多个服务时,如何避免terraform中的重复?当队列中有什么东西时,亚马逊的SQS如何通知我的"工作"服务器?当在同一页面上使用多个组件实例时,如何防止子组件类变量的值被覆盖?当多个方法属于同一个操作时,如何遵循Laravel的控制器操作命名约定?当服务重新启动时,如何确保Spring Integration poller工作并执行错过的计划?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java中数据库连接池原理机制详解【面试+提高】

数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。...如何连接不同的数据库呢?我们采用的策略是:设计一个符合单例模式的连接池管理类,在连接池管理类的唯一实例被创建时读取一个资源文件,其中资源文件中存放着多个数据库的url地址()?用户名()?...根据资源文件提供的信息,创建多个连接池类的实例,每一个实例都是一个特定数据库的连接池。连接池管理类实例为每个连接池实例取一个名字,通过不同的名字来管理不同的连接池。...对于同一个数据库有多个用户使用不同的名称和密码访问的情况,也可以通过资源文件处理,即在资源文件中设置多个具有相同url地址,但具有不同用户名和密码的数据库连接信息。...之后每个用户请求都导致一个调用前面建立的实例的service方法的线程。最后,当服务器决定卸载一个servlet时,它首先调用该servlet的destroy方法。

3.3K91

牛逼哄哄的数据库连接池,底层原理是个啥?

预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。 我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。...如何连接不同的数据库呢? 我们采用的策略是:设计一个符合单例模式的连接池管理类,在连接池管理类的唯一实例被创建时读取一个资源文件,其中资源文件中存放着多个数据库的url地址等信息。...根据资源文件提供的信息,创建多个连接池类的实例,每一个实例都是一个特定数据库的连接池。连接池管理类实例为每个连接池实例取一个名字,通过不同的名字来管理不同的连接池。...对于同一个数据库有多个用户使用不同的名称和密码访问的情况,也可以通过资源文件处理,即在资源文件中设置多个具有相同url地址,但具有不同用户名和密码的数据库连接信息。...关注微信公众号:Java技术栈,在后台回复:java,可以获取我整理的 N 篇最新Java 技术教程,都是干货。 4、连接池的分配与释放 连接池的分配与释放,对系统的性能有很大的影响。

65960
  • ADO.NET入门教程(五) 细说数据库连接池

    连接池就是这样一个容器:它存放了一定数量的与数据库服务器的物理连接。因此,当我们需要连接数据库服务器的时候,只需去池(容器)中取出一条空闲的连接,而不是新建一条连接。...连接池的工作原理 2.1 创建连接池       需要说明的是,连接池是具有类别区分的。也就是说,同一个时刻同一应用程序域可以有多个不同类型的连接池。那么,连接池是如何标识区分的?...当打开一条连接时,如果该条连接的类型签名与现有的连接池类型不匹配,则创建一个新的连接池。反之,则不创建新的连接池。      ...2.3 移除无效连接        无效连接,即不能正确连接到数据库服务器的连接。对于连接池来说,存储的与数据库服务器的连接的数量是有限的。因此,对于无效连接,如果如不及时移除,将会浪费连接池的空间。...一个重要的误区是:当连接对象超出局部作用域范围时,就会关闭连接。实际上,当超出作用域时,释放的只是连接对象而非连接资源。好吧,还是先看看一个实例吧。

    1.9K90

    YashanDB应用程序与网络体系

    独占线程模式下,工作线程只能被一个会话连接使用,在没有请求需要处理时,线程进入等待。新连接被接入时,处于等待状态的工作线程也不能为新的连接服务,而是需要重新创建新的线程来处理。...减少了工作线程处理请求所需要的内存资源。扩大了允许同时连接的客户端连接数。当客户端频繁连接或断连时,共享线程会话模式的性能可能比独占线程会话模式更优。...# 连接池内部互联总线采取多路复用技术,支持多个会话共同使用一个或多个网络链路进行通讯。内部互联总线将连接到某一个节点的具有相同通讯功能的一个或多个链路封装在一个连接池中,以池化方式进行管理。...由于消息通过连接池发送,可能在同一个链路中会存在多个会话的消息,接收监听线程通过消息头中的消息类型及会话ID,将收到的消息逐一分发到对应会话的消息队列中,再由会话的工作线程进行处理。...# 数据与控制消息分离由于连接池及内部线程资源的划分,通常将同一个节点的多个连接池规划为多个不同功能的通道,这些通道之间资源隔离、相互不影响。

    3210

    腾讯云专家揭秘国内首款无服务器数据库架构

    当用户访问请求上涨时,数据库针对用户请求的特点使用不同的系统资源,而这些资源需要动态的响应,且不会受到服务器限制。不同资源的扩缩容粒度需要小到一个数据块——CPU核心。...不同用户共享一组数据库实例时要保证用户访问不会出现越界的情况,所以需要对用户进行隔离这就涉及到对PostgreSQL内核进行改造。...数据库实例负责公共操作,比如日志读写、配置文件读取、控制文件刷新等,租户维护数据文件以及临时文件,其中包括本租户的元数据信息、租户类型等操作,同实例可以扩展多个租户数据库。...连接池管理 当前这种实现形式带来了另外一个问题:一个连接会新增一个进程,而多租户模式会导致服务器新建大量进程来消耗掉租户的资源,多个租户的连接数提升时很快会把服务器资源打爆,怎么办呢?...ServerlessDB引入了连接池,当一个租户的多个连接访问到连接池后,将同一租户的连接通过一个连接捆在一起建立起数据库的连接,这样就保证了一个租户到数据库侧只有一个连接,相当于N:1。

    4.7K50

    缓存与数据库一致性保证

    ,每个工作线程完成实际的工作任务,典型的工作任务是通过数据库连接池读写数据库 (3.3)最下层是数据库连接池,所有的SQL语句都是通过数据库连接池发往数据库去执行的 工作线程的典型工作流是这样的: void...答:不行,因为 (1)1个服务有多个工作线程,串行弹出的任务会被并行执行 (2)1个服务有多个数据库连接,每个工作线程获取不同的数据库连接会在DB层面并发执行 提问:假设服务只部署一份,能否保证任务不并发执行...退一步想,其实不需要让全局的请求串行化,而只需要“让同一个数据的访问能串行化”就行。 在一个服务内,如何做到“让同一个数据的访问串行化”,只需要“让同一个数据的访问通过同一条DB连接执行”就行。...】,每个工作线程完成实际的业务任务,典型的工作任务是通过服务连接池进行RPC调用 (3.3)最下层是服务连接池,所有的RPC调用都是通过服务连接池往下游服务去发包执行的 工作线程的典型工作流是这样的:...答:不会,当有下游服务挂掉的时候,服务连接池能够检测到连接的可用性,取模时要把不可用的服务连接排除掉。 提问:取模访问服务与 取模访问DB,是否会影响各连接上请求的负载均衡?

    1.6K100

    Java面试系列18-servlet

    Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其...数据库连接池的基本思想就是为数据库连接 建立一个“缓冲池”。 预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。...如何连接不同的数据库呢?我们采用的策略是:设计一个符合 单例模式的连接池管理类,在连接池管理类的唯一实例被创建时读取一个资源文件,其中资源文件中存放着多个数据库的url地址()?用户名()?...对于同一个数据库有多个用户使用不同的名称和密码访问的情况,也可以通过资源文件处理,即在资源文件中设置多个具有相同url地址,但具有不同用户名和密码的数据库连接信息。...之后每个用户请求都导致一个调用前面建立的实例的service方法的线程。 最后,当服务器决定卸载一个servlet时,它首先调用该servlet的destroy方法。

    81280

    面试必备:一线大厂Redis设计规范与性能优化

    的流量,对于普通的千兆网卡(按照字节算是128MB/s)的服务器来说简直是灭顶之灾,而且一般服务器会采用单机多实例的方式来部署,也就是说一个bigkey可能会对其他实例也造成影响,其后果不堪设想。...当有需要扫描的需要时,建议使用scan方式渐进式处理3、合理使用select【推荐】redis的多数据库较弱,使用数字进行区分,很多客户端支持较差,同时多业务用多数据库实际还是单线程处理,会有干扰所以建议...redis使用数据库只用序号0的数据库即可,在0数据库里采用key前缀区分业务即可4、使用批量操作提高效率【推荐】当我们要插入多个key时,可以采用一些批量命令代替单个命令,提高查询效率,例如:1原生命令...5、redis事务功能较弱,不建议过多使用redis的事务命令 如果业务上有需要,可以使用lua替代【建议】三、客户端使用规范&性能优化1、避免多个应用使用同一个Redis实例【推荐】错误的做法:多个业务线公用同一个...redis实例,比如订单、库存、权限都用同一个redis实例,只要有一块业务有阻塞,所有业务都会受影响。

    63910

    数据库连接池引起的FullGC问题,看我如何一步步排查、分析、解决

    问题现象 在某个工作日,突然收到线上的服务告警,有大量的请求延时产生,查看线上服务发现基本上都是获取数据库连接超时,而且影响时间只有34秒钟,服务又恢复了正常。...当第一次告警产生时,第一反应是可能上层服务有大量的接口调用,并且涉及到一些复杂的SQL查询导致数据库连接数不够用,但是在分析了接口调用情况后发现异常前后的请求并没有明显的变化,排除突发流量造成的影响 查询...所以临时解决方案是保留一台实例现场,滚动重启其它所有的实例,避免大量的实例同时进行FullGC。否则很可能导致服务雪崩。...但是由于MySQL服务端的超时时间只有5分钟,所以大概率当Druid进行keepAlive操作时连接已经失效了。...由于数据库的活跃连接是波动的,且min-idle设置的是30,活跃连接处于波峰时,需要创建大量的连接,并且维护在连接池中。但是当活跃降到低谷时,大量的连接由于keepAlive失败,从连接池中被移除。

    1.4K10

    连接池

    相反,连接池允许闲置的连接被其它需要的线程使用。 事实上,当一个线程需要用 JDBC 对一个 GBase 或其它数据库操作时,它从池中请求一个连接。...其主要用于对多个连接池对象的管理,具有以下功能:①装载并注册特定数据库的JDBC驱动程序;②根据属性文件给定的信息,创建连接池对象;③为方便管理多个连接池对象,为每一个连接池对象取一个名字,实现连接池名字与其实例之间的映射...private void loadDrivers(Properties props)//装载数据库驱动程序 } 3、连接池使用 上面所实现的连接池在程序开发时如何应用到系统中呢?...之后每个用户请求都导致一个调用前面建立的实例的service方法的线程。最后,当服务器决定卸载一个servlet时,它首先调用该servlet的 destroy方法。...根据servlet的特点,我们可以在初始化函数中生成连接池管理类的唯一实例(其中包括创建一个或多个连接池)。

    1.1K70

    JAVA设计模式1:单例模式,确保每个类只能有一个实例

    主打方向:Vue、SpringBoot、微信小程序 本文讲解了 Java 设计模式中的单例模式,并给出了样例代码,单例模式,确保每个类只能有一个实例,并提供一个全局访问点来获取该实例。...实现单例模式可以有多种方式,其中最常用的方式有两种:懒汉式和饿汉式。 1.1 懒汉式单例模式 懒汉式在首次调用获取实例的方法时才创建对象。...资源共享:当多个对象需要共享同一个资源时,使用单例模式可以确保只有一个实例被创建,从而避免资源的重复创建与浪费。 配置信息:单例模式可以用于管理全局的配置信息,保证配置信息的一致性和唯一性。...数据库连接池:在数据库连接池的实现中,使用单例模式可以确保只有一个连接池被创建,从而避免连接资源的滥用和浪费。...如何确保在多线程环境下单例模式的正确工作? 单例模式是否能被继承和被克隆? 如何防止通过反射来破坏单例模式的实现? 单例模式是否有线程安全问题?如果有,如何解决? 饿汉式和懒汉式单例模式的区别是什么?

    44980

    《Spring设计思想-事务篇》1.数据库连接和Java线程的关系

    结论: 结合上述的两个症结,为了提高JDBC数据库连接的使用效率,目前普遍的解决方案是:当线程需要做数据库操作时,才会真正请求获取JDBC数据库连接,线程使用完了之后,立即释放,被释放的JDBC数据库连接等待下次分配使用...如何解决? JDBC数据库连接 如何管理和分配?...,在connection对象上,清空尚未提交的所有SQL语句 } } 综上所述,解决多个线程访问同一个Connection对象时,必须遵循两个基本原则: 以资源互斥的方式访问Connection...当一个事务结束,java.sql.Connection实例有必要释放销毁吗?...实例 而实际上,在第三步骤,是完全没有必要销毁java.sql.Connection 实例的,这是因为,在第二章节我们介绍的Connection的性质:当建立了 java.sql.Connection

    2.2K30

    数据库连接池的好处有哪些_计算机系统坏了怎么修复

    更快的系统响应速度 数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于池中备用。此时连接的初始化工作均已完成。...新的资源分配手段 对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接的配置,实现数据库连接池技术,几年钱也许还是个新鲜话题,对于目前的业务系统而言,如果设计中还没有考虑到连接池的应用,...,由私有构造函数调用 private void loadDrivers(Properties props)//装载数据库驱动程序 } 3、连接池使用 上面所实现的连接池在程序开发时如何应用到系统中呢...之后每个用户请求都导致一个调用前面建立的实例的service方法的线程。最后,当服务器决定卸载一个servlet时,它首先调用该servlet的destroy方法。   ...根据servlet的特点,我们可以在初始化函数中生成连接池管理类的唯一实例(其中包括创建一个或多个连接池)。

    37240

    『学习笔记』WebLogic 中的多域配置与管理

    配置域间的共享资源……配置数据源……假设 Domain_A 和 Domain_B 都需要访问同一个数据库,如何在这两个域中配置共享的数据源:登录 WebLogic 控制台(例如 http://localhost...集群和目标配置不一致可能导致应用程序部署失败或者无法正常工作。资源竞争在 WebLogic 中,多个域可能共享某些资源(如数据源、JMS 队列、连接池等)。...当多个域之间共享同一资源时,可能会遇到资源竞争的问题。这种竞争可能导致性能下降、连接池溢出、数据源连接失败等问题。...每个域的连接池应根据其特定需求配置,避免多个域共享同一连接池。JMS 队列和主题:每个域应使用自己的 JMS 队列或主题,尽量避免多个域共享同一个 JMS 资源。...例如,可以使用 WebLogic 的全局数据源(Global Data Source)功能,允许多个域中的服务器实例共享同一个数据源。

    16920

    JavaWeb篇

    Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其...在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层. 10、tomcat容器是如何创建servlet类实例?用到了什么原理?   ...(有时候也是在第一次请求时实例化)   在servlet注册时加上1如果为正数,则在一开始就实例化,如果不写或为负数,则第一次请求实例化...为什么要使用连接池。   1,数据库连接是一件费时的操作,连接池可以使多个操作共享一个连接。   2,数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。...预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。

    1.6K80

    用了这么久的数据库连接池,你知道原理吗?

    预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。...如何连接不同的数据库呢?我们采用的策略是:设计一个符合单例模式的连接池管理类,在连接池管理类的唯一实例被创建时读取一个资源文件,其中资源文件中存放着多个数据库的url地址等信息。...根据资源文件提供的信息,创建多个连接池类的实例,每一个实例都是一个特定数据库的连接池。连接池管理类实例为每个连接池实例取一个名字,通过不同的名字来管理不同的连接池。...对于同一个数据库有多个用户使用不同的名称和密码访问的情况,也可以通过资源文件处理,即在资源文件中设置多个具有相同url地址,但具有不同用户名和密码的数据库连接信息。...最大连接数是连接池中允许连接的最大数目,具体设置多少,要看系统的访问量,可通过反复测试,找到最佳点。 如何确保连接池中的最小连接数呢?有动态和静态两种策略。

    1.2K20

    数据库连接池原理

    预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。...如何连接不同的数据库呢?我们采用的策略是:设计一个符合单例模式的连接池管理类,在连接池管理类的唯一实例被创建时读取一个资源文件,其中资源文件中存放着多个数据库的url地址等信息。...根据资源文件提供的信息,创建多个连接池类的实例,每一个实例都是一个特定数据库的连接池。连接池管理类实例为每个连接池实例取一个名字,通过不同的名字来管理不同的连接池。...对于同一个数据库有多个用户使用不同的名称和密码访问的情况,也可以通过资源文件处理,即在资源文件中设置多个具有相同url地址,但具有不同用户名和密码的数据库连接信息。...最大连接数是连接池中允许连接的最大数目,具体设置多少,要看系统的访问量,可通过反复测试,找到最佳点。 如何确保连接池中的最小连接数呢?有动态和静态两种策略。

    51020

    用了这么久的数据库连接池,你知道原理吗?

    预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。...如何连接不同的数据库呢?我们采用的策略是:设计一个符合单例模式的连接池管理类,在连接池管理类的唯一实例被创建时读取一个资源文件,其中资源文件中存放着多个数据库的url地址等信息。...根据资源文件提供的信息,创建多个连接池类的实例,每一个实例都是一个特定数据库的连接池。连接池管理类实例为每个连接池实例取一个名字,通过不同的名字来管理不同的连接池。...对于同一个数据库有多个用户使用不同的名称和密码访问的情况,也可以通过资源文件处理,即在资源文件中设置多个具有相同url地址,但具有不同用户名和密码的数据库连接信息。...最大连接数是连接池中允许连接的最大数目,具体设置多少,要看系统的访问量,可通过反复测试,找到最佳点。 如何确保连接池中的最小连接数呢?有动态和静态两种策略。

    40510

    用了这么久的数据库连接池,你知道原理吗?

    预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。...如何连接不同的数据库呢?我们采用的策略是:设计一个符合单例模式的连接池管理类,在连接池管理类的唯一实例被创建时读取一个资源文件,其中资源文件中存放着多个数据库的url地址等信息。...根据资源文件提供的信息,创建多个连接池类的实例,每一个实例都是一个特定数据库的连接池。连接池管理类实例为每个连接池实例取一个名字,通过不同的名字来管理不同的连接池。...对于同一个数据库有多个用户使用不同的名称和密码访问的情况,也可以通过资源文件处理,即在资源文件中设置多个具有相同url地址,但具有不同用户名和密码的数据库连接信息。...最大连接数是连接池中允许连接的最大数目,具体设置多少,要看系统的访问量,可通过反复测试,找到最佳点。 如何确保连接池中的最小连接数呢?有动态和静态两种策略。

    38010

    谁的速度快!谁背锅(技术解析)

    我们平常的编码中,通常都会共用这样的资源池。因为它写起代码来简单,不需要动脑。 但如果你的服务本身,并没有做好拆分以及隔离,问题就是致命的。比如,你把报表接口和高并发的C端接口放在了一个实例上。...不一小会儿,服务的状态就变成这样: 数据库连接池50个连接,迅速占满,而且几乎全被慢查询占满 Tomcat连接池的200个连接,迅速被占满,其中大部分是速度快的接口B,因为它的请求量大速度快 所有接口都...如何解决 增加Tomcat连接池的大小,或者增加连接池的大小,并不能解决问题,大概率还会复现。 最好的解决方式,当然是把耗时的服务和正常的服务拆分开来,比如时下流行的微服务。...如上图,我们在同一个工程里,创建了两个MySQL数据库连接池,指向了相同的MySQL地址。使用这种方式,连接池的操作,就能够相对做到互不影响。...而那些耗时接口,由于平常就是那个鸟样,倒没人关注它的异常情况。 一堆接口连接了同一个数据库,当数据库发生抖动,受影响最大的,依然是那些又快请求又大的接口。

    88450
    领券