微服务 mysql 连接池_【mysql】druid,连接池和微服务的问题
我所知道的 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,连接池和微服务的问题相关推荐
- druid连接池mysql自动关闭_探究Druid连接池“违反协议”异常
作者:董添 使用Druid连接池和PreparedStatement Cache后,应用访问数据库的效率提高了,针对连接池的监控手段也变多了,但是随之而来也出现了一些新的问题,最近发现在给表增加字段后 ...
- java druid mysql连接池_java使用Druid连接池连接mysql
1.先在mysql创建需要的数据库和表 use book; create table t_user( `id`intprimary key auto_increment, `username` var ...
- log4j mysql 异步_spring boot:配置druid数据库连接池(开启sql防火墙/使用log4j2做异步日志/spring boot 2.3.2)...
一,druid数据库连接池的功能? 1,Druid是阿里巴巴开发的号称为监控而生的数据库连接池 它的优点包括: 可以监控数据库访问性能 SQL执行日志 SQL防火墙 2,druid的官方站: http ...
- wamserver怎么把mysql找回来_将php连接wampserver自带的MySQL数据库 所遇到各种问题解决办法...
将php连接到MySQL数据库的方法有很多,在这里我使用的是mysqli_connect方法, 此博客所解答的问题汇总: 1.wampserver服务器离线但图标为正常绿: 2.wampserver ...
- mysql 常用数据库连接池_常见的数据库连接池
欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入 2.C3P0 在Hibernate和Spring中默认支持该数据库连接池 需要引入:c3p0-0.9.1.2.jar包,如果 ...
- mysql配置数据库连接池_三种数据库连接池的配置
三种数据库连接池的配置及使用(For JDBC) 连接池的优缺点 优点 使用连接池的最主要的优点是性能.创建一个新的数据库连接所耗费的时间主要取决于网络的速 度以及应用程序和数据库服务器的 ( 网络 ...
- mysql连接串_[MySQL] - MySQL连接字符串总结
一.MySQL Connector/ODBC 2.50 (MyODBC 2.50)连接方式 1.本地数据库连接 Driver={MySQL};Server=localhost;Option=16834 ...
- druid连接池mysql5.7_MySQL Druid连接池,Apache的DbUtils使用
一.Druid连接池在程序初始化时,预先创建指定数量的数据库连接对象存储在池中. 当需要连接数据库时,从连接池中取出现有连接: 使用完毕后, 也不会进行关闭,而是放回池中,实现复用,节省资源. 1.1 ...
- mysql异常恢复工具_[MySQL异常恢复]mysql ibd文件恢复
在mysql中由于某种原因保存有ibd文件,但是表已经被删除或者frm文件损坏亦或者ibdata文件损坏/丢失等.本文模拟在这种情况下,通过mysql自身技术即可完成ibd文件恢复. 测试环境mysq ...
- # 再次尝试 连接失败_新一代高效连接池HikariCP设计简要分析
1 概述 应用程序建立与数据库的连接其实是一项开销很大的工作,其中涉及网络连接的建立.会话的建立.数据库端与应用程序的适配等诸多操作.因此,大部分情况下我们会选择将数据库连接进行池化管理. 连接池基本 ...
最新文章
- 【一个诡异的问题】用饿了么的自定义主题之后发现表格顶部的复选框checkbox错位了
- Linux字符模式下的“远程桌面共享”及屏幕录制
- Delphi - SEH研究
- android系统的发展态势,2020年安卓手机发展的7个趋势,只有延伸,并无革命性的变化...
- php yii多表查询
- HBase集群环境部署
- servlet过滤器 实例_Java Servlet过滤器示例教程
- oracle11 刚刚安装后提示invalid username password logon denied
- Socket通信的安全策略问题
- sd卡卡槽_还在傻傻分不清楚SD卡、Micro SD、TF卡?卡槽马上都要取消了
- linux搭建饥荒服务器
- python根须系统斜杠_尝试在Win10系统搭建esp32编译系统.下
- HttpClient设置HTTP请求头Header
- python模块,库
- 一维DOA估计之Capon算法(含程序)
- excel查找功能_如何使用VBA代码实现Excel的查找和替换功能?
- 自学生物信息学(思维+超全常用网站)
- 机器学习:几种常见的学习方法
- 语义网、本体、OWL基础知识梳理
- python 计算给定日期是该年的第几天数
热门文章
- linux程序已经在后台运行冻结了_让linux下程序永远后台运行
- 电子助力方向机控制模块_17款路虎揽胜:偶发性电子助力失效
- OpenShift 4 - 基于CPU负载和网络负载的HPA
- 安装和配置SQL Server Reporting Services (SSRS)
- 解码Core ML YOLO对象检测器(二)
- 如何为项目和产品提供资源——优化工作时间、激励团队和预算
- ubuntu无法登陆mysql_ubuntu11.04mysql报错、无法正常工作、无法登陆mysql
- deepin安装windows虚拟机_Deepin Linux V20系统通过安装wine实现运行windows程序
- java调用lua 路径_luacom打开中文路径的Word文件
- extract提取返回结果中的内容_httprunner如何提取数据串联上下游接口