我正在使用 spring boot + spring cloud + spring JDBC 为单体应用程序开发微服务。
目前,该应用程序通过 tomcat JNDI 连接池连接到单个数据库。
我们这里有一个瓶颈,在这个时间点不要因为大量的数据库对象、与其他系统的依赖关系等各种原因改变数据库架构。
所以我们根据应用特性隔离了微服务。我担心的是,如果我们开发微服务,每个微服务都有自己的连接池,那么与数据库的连接数量会呈指数级增长。
目前,我正在考虑两种解决方案
不确定第二种方法是否是微服务架构中的最佳实践。
您能否建议任何其他有助于
现在的情况?
最佳答案
这都是权衡取舍。
缺点 :正如您所说,需要进行一些分析和猜测才能达到每个应用功能的最佳连接数。
优点 : 与第二种方式不同,可以避免性能开销
优点 : 最少的前期工作
缺点 : 多一层,又多一层故障点。当您必须处理
serialization -> Http(s) network latency -> deserialization->(jdbc fun stuff which is part of either approach) -> serialization -> Http(s) network latency -> deserialization
时,性能会下降. (在您的情况下,这种性能成本可能可以忽略不计。但如果您的服务中每一毫秒都很重要,那么这是一个巨大的决定因素)在我看来,在我分析了我的域和我的数据存储之前,我不会单独拆分应用程序层。
这是一个很好的阅读:http://blog.christianposta.com/microservices/the-hardest-part-about-microservices-data/
关于spring-boot - 微服务 - 连接到单个遗留数据库时的连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52286072/