我所知道的 druid 配置,是在一个服务上进行配置

假如一台机器上装有 mysql

当我们用连接池去连接的时候

根据 https://blog.csdn.net/w059805… 说法

连接池的大小公式是:

连接数 = ((核心数 * 2) + 有效磁盘数)

这里应该说假定连接池大小的配置是在单一服务(工程)上配置

如果我们考虑微服务

有 N 个服务访问这个 mysql 机器的情况

假如每个服务的配置都是上述公式

那么总的连接池数就是 N((核心数 2) + 有效磁盘数)了

这应该就不对了

但是感觉也不能用这个连接数除以N来给每个服务分配连接数吧

因为N是不确定的,因为你不知道什么时候某个服务挂了,或者什么时候多加几个服务

其次,每个服务访问数据库的量也有差异

这个如何理解?

其次,druid的配置监控系统 Servlet 也是在单个服务下配置

而访问 url 诸如这种

http://IP:PORT/druid

那 N 个微服务岂不是会有 N 个配置监控系统 Servlet?

假如有几个微服务处于同一台机器上

那就还要配置不同的 url

这样感觉怪怪的?

或许一个解决方案是把对同一个 mysql 机器进行访问的所有的 dao 层

从各个微服务中抽出来,独立操作做成一个微服务可以解决上述问题?

这样的架构奇怪吗?

回答

而连接池大小的配置是在单一服务上配置

在 N 个服务访问这个 mysql 机器的情况下

加入每个服务的配置都是上述公式

那么总的连接池数就是 N((核心数 2) + 有效磁盘数)了

这不是悖论吗?

如何理解?

没有什么悖论呀。举个例子,比如一个mysql支持的并发连接最多100个,你有3个微服务应用需要同时连接这个数据库,每个微服务部署在一台独立的机器上,每个机器核心数为8,磁盘数为2。 3 (2 8 + 2) 远远小于100呀。

即使超过的mysql可以支持最大并发数,可以稍减少某些微服务的连接池连接数,没有说连接池中的连接数必须是(核心数 * 2) + 有效磁盘数。

其次,配置监控系统 Servlet 也是在单个服务下配置

而访问 url 诸如这种

http://IP:PORT/druid

那 N 个微服务岂不是会有 N 个配置监控系统 Servlet?

假如有几个微服务处于同一台机器上

那就还要配置不同的 url

这样感觉怪怪的?

不奇怪呀,不同的微服务只需要关注自己的druid的监控。如果需要总的监控信息,mysql 提供了很多状态变量,相关日志(比例慢查日期)等,当然了有很多针对mysql的监控的工具,这些工具收集分析这些日志,变量等信息,提供很友好的界面显示。

或许一个解决方案是把对同一个 mysql 机器进行访问的所有的 dao 层

从各个微服务中抽出来,独立操作做成一个微服务可以解决上述问题?

这样的架构奇怪吗?

奇怪,有一些mysql的中间件提供连接池的功能,这样就不需要再应用中初始化连接池了,多个微服务公用一个连接池。

微服务 mysql 连接池_【mysql】druid,连接池和微服务的问题相关推荐

  1. druid连接池mysql自动关闭_探究Druid连接池“违反协议”异常

    作者:董添 使用Druid连接池和PreparedStatement Cache后,应用访问数据库的效率提高了,针对连接池的监控手段也变多了,但是随之而来也出现了一些新的问题,最近发现在给表增加字段后 ...

  2. java druid mysql连接池_java使用Druid连接池连接mysql

    1.先在mysql创建需要的数据库和表 use book; create table t_user( `id`intprimary key auto_increment, `username` var ...

  3. log4j mysql 异步_spring boot:配置druid数据库连接池(开启sql防火墙/使用log4j2做异步日志/spring boot 2.3.2)...

    一,druid数据库连接池的功能? 1,Druid是阿里巴巴开发的号称为监控而生的数据库连接池 它的优点包括: 可以监控数据库访问性能 SQL执行日志 SQL防火墙 2,druid的官方站: http ...

  4. wamserver怎么把mysql找回来_将php连接wampserver自带的MySQL数据库 所遇到各种问题解决办法...

    将php连接到MySQL数据库的方法有很多,在这里我使用的是mysqli_connect方法, 此博客所解答的问题汇总: 1.wampserver服务器离线但图标为正常绿: 2.wampserver ...

  5. mysql 常用数据库连接池_常见的数据库连接池

    欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入 2.C3P0 在Hibernate和Spring中默认支持该数据库连接池 需要引入:c3p0-0.9.1.2.jar包,如果 ...

  6. mysql配置数据库连接池_三种数据库连接池的配置

    三种数据库连接池的配置及使用(For JDBC) 连接池的优缺点 优点 使用连接池的最主要的优点是性能.创建一个新的数据库连接所耗费的时间主要取决于网络的速 度以及应用程序和数据库服务器的 ( 网络 ...

  7. mysql连接串_[MySQL] - MySQL连接字符串总结

    一.MySQL Connector/ODBC 2.50 (MyODBC 2.50)连接方式 1.本地数据库连接 Driver={MySQL};Server=localhost;Option=16834 ...

  8. druid连接池mysql5.7_MySQL Druid连接池,Apache的DbUtils使用

    一.Druid连接池在程序初始化时,预先创建指定数量的数据库连接对象存储在池中. 当需要连接数据库时,从连接池中取出现有连接: 使用完毕后, 也不会进行关闭,而是放回池中,实现复用,节省资源. 1.1 ...

  9. mysql异常恢复工具_[MySQL异常恢复]mysql ibd文件恢复

    在mysql中由于某种原因保存有ibd文件,但是表已经被删除或者frm文件损坏亦或者ibdata文件损坏/丢失等.本文模拟在这种情况下,通过mysql自身技术即可完成ibd文件恢复. 测试环境mysq ...

  10. # 再次尝试 连接失败_新一代高效连接池HikariCP设计简要分析

    1 概述 应用程序建立与数据库的连接其实是一项开销很大的工作,其中涉及网络连接的建立.会话的建立.数据库端与应用程序的适配等诸多操作.因此,大部分情况下我们会选择将数据库连接进行池化管理. 连接池基本 ...

最新文章

  1. 【一个诡异的问题】用饿了么的自定义主题之后发现表格顶部的复选框checkbox错位了
  2. Linux字符模式下的“远程桌面共享”及屏幕录制
  3. Delphi - SEH研究
  4. android系统的发展态势,2020年安卓手机发展的7个趋势,只有延伸,并无革命性的变化...
  5. php yii多表查询
  6. HBase集群环境部署
  7. servlet过滤器 实例_Java Servlet过滤器示例教程
  8. oracle11 刚刚安装后提示invalid username password logon denied
  9. Socket通信的安全策略问题
  10. sd卡卡槽_还在傻傻分不清楚SD卡、Micro SD、TF卡?卡槽马上都要取消了
  11. linux搭建饥荒服务器
  12. python根须系统斜杠_尝试在Win10系统搭建esp32编译系统.下
  13. HttpClient设置HTTP请求头Header
  14. python模块,库
  15. 一维DOA估计之Capon算法(含程序)
  16. excel查找功能_如何使用VBA代码实现Excel的查找和替换功能?
  17. 自学生物信息学(思维+超全常用网站)
  18. 机器学习:几种常见的学习方法
  19. 语义网、本体、OWL基础知识梳理
  20. python 计算给定日期是该年的第几天数

热门文章

  1. linux程序已经在后台运行冻结了_让linux下程序永远后台运行
  2. 电子助力方向机控制模块_17款路虎揽胜:偶发性电子助力失效
  3. OpenShift 4 - 基于CPU负载和网络负载的HPA
  4. 安装和配置SQL Server Reporting Services (SSRS)
  5. 解码Core ML YOLO对象检测器(二)
  6. 如何为项目和产品提供资源——优化工作时间、激励团队和预算
  7. ubuntu无法登陆mysql_ubuntu11.04mysql报错、无法正常工作、无法登陆mysql
  8. deepin安装windows虚拟机_Deepin Linux V20系统通过安装wine实现运行windows程序
  9. java调用lua 路径_luacom打开中文路径的Word文件
  10. extract提取返回结果中的内容_httprunner如何提取数据串联上下游接口