Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 使用自己的数据库部署微服务:如何保证复制和可靠性?_Docker_Kubernetes_Cloud_Microservices_Database Administration - Fatal编程技术网

Docker 使用自己的数据库部署微服务:如何保证复制和可靠性?

Docker 使用自己的数据库部署微服务:如何保证复制和可靠性?,docker,kubernetes,cloud,microservices,database-administration,Docker,Kubernetes,Cloud,Microservices,Database Administration,我正在构建一个要部署在云环境中的应用程序。 我在用库伯内特斯和多克 My image包含两个容器:一个用于应用程序,另一个用于Postgres DBMS(包括通过持久卷声明存储的自己的数据库) 我这样做是因为这样我可以线性扩展我的应用程序,因为我的主要要求是能够这样扩展它 因此,当我扩展我的部署时,它将或多或少地类似于下面的draw bellow(我的应用程序有N个pod): 我已经对这个体系结构进行了性能测试,它可以很好地满足我的需求,并且可以根据需要进行扩展 但是,我担心数据复制及其可靠性

我正在构建一个要部署在云环境中的应用程序。 我在用库伯内特斯和多克

My image包含两个容器:一个用于应用程序,另一个用于Postgres DBMS(包括通过持久卷声明存储的自己的数据库)

我这样做是因为这样我可以线性扩展我的应用程序,因为我的主要要求是能够这样扩展它

因此,当我扩展我的部署时,它将或多或少地类似于下面的draw bellow(我的应用程序有N个pod):

我已经对这个体系结构进行了性能测试,它可以很好地满足我的需求,并且可以根据需要进行扩展

但是,我担心数据复制及其可靠性

下面是我的问题:

  • 如何使用这种类型的体系结构进行复制?Kubernetes是否有办法通过特定的存储类来处理它?最好的方法是什么

  • 一般来说,DBA在研究该体系结构时的期望是什么?我可能会有太多的数据库,这可以接受吗


  • 无法按照建议执行Postgres缩放,并且无法在多个POD()中以读/写模式装入永久卷

    缩放后,可以考虑

    此外,将应用程序层与数据库分离有很多好处,包括对每一层上的扩展策略进行粒度控制



    附言:很好的图表。这使问题变得非常易懂。

    无法按照您的建议执行Postgres缩放,并且无法在多个POD中以读/写模式装入永久卷()

    缩放后,可以考虑

    此外,将应用程序层与数据库分离有很多好处,包括对每一层上的扩展策略进行粒度控制



    附言:很好的图表。这使问题变得非常容易理解。

    为什么要在同一个机架中部署数据库,而不是将数据库机架与应用程序机架分开?因为这样做的目的是,他们有自己的数据库,以便更好地扩展数据库。如果我只扩展应用程序,那么我的数据库就会成为一个瓶颈。如果通过引入新的服务实例来扩展,或者通过减少实例数来缩小,那么它是如何工作的。您已经保存的数据会发生什么变化?实例消失后,谁为它们提供服务?为什么要将DB部署在同一个pod中,而不是将DB pod与应用程序pod分开?因为他们有自己的数据库,以便更好地扩展数据库。如果我只扩展应用程序,那么我的数据库就会成为一个瓶颈。如果通过引入新的服务实例来扩展,或者通过减少实例数来缩小,那么它是如何工作的。您已经保存的数据会发生什么变化?我已经测试过了,效果很好。但为了简单起见,我使用HostPath对其进行了测试。两个独立的Postgres实例,愉快地写入它们的/var/lib/postgresql/data,却不知道在幕后,另一个实例正在写入相同的卷/HostPath?我们可以将它们映射到不同的装入点。例如:/data/app-001/data/app-002等等……我不明白。DBs如何同步?假设一个用户访问你的应用程序,他在PodA上注册。后来他回来了,但这次应用程序是从PodB提供的。如果他的用户名/通行证存储在PostgresA://data/app-001上,而PostgresB://data/app-002i中没有该用户名/通行证,PodB将如何知道他是注册用户?该用户名/通行证是由id分割的,因此我知道东西在哪里。当然,我在它前面有一些足够聪明的东西,可以找到它需要的东西。但这并不是问题的核心,我已经测试过了,效果很好。但为了简单起见,我使用HostPath对其进行了测试。两个独立的Postgres实例,愉快地写入它们的/var/lib/postgresql/data,却不知道在幕后,另一个实例正在写入相同的卷/HostPath?我们可以将它们映射到不同的装入点。例如:/data/app-001/data/app-002等等……我不明白。DBs如何同步?假设一个用户访问你的应用程序,他在PodA上注册。后来他回来了,但这次应用程序是从PodB提供的。如果他的用户名/通行证存储在PostgresA://data/app-001上,而PostgresB://data/app-002i中没有该用户名/通行证,PodB将如何知道他是注册用户?该用户名/通行证是由id分割的,因此我知道东西在哪里。当然,我在它前面有一些足够聪明的东西,可以找到它需要的东西。但这并不是问题的核心。