我是azure和云平台开发的新手 - 我有一个Web应用程序,我使用
创建多个公司公司表和 分开 company_products 使用外键: companyid
是否可以运行多个实例,其中每个实例都拥有自己的SQL数据库?我想这样做是因为每个客户都是独特的,他们可能需要量身定制的模块。
答案 0 :(得分:1)
您构建应用的方式没有限制。您可以根据需要创建任意数量的数据库,并根据需要拥有多个Web应用程序(无论是在同一个应用程序服务计划中还是在多个应用程序服务计划中)。你如何做到这一点完全取决于你,但不是 - 没有什么能迫使你使用单个数据库做任何事情。
答案 1 :(得分:1)
如果我正确理解您的问题,您希望每个客户都拥有自己的实例和单独的数据库吗?
看一下这篇文章:https://msdn.microsoft.com/en-us/library/ff966499.aspx
我建议使用Azure App Service,并在自己的应用中运行每个客户。您可以节省资金,因为所有应用程序都在相同的应用服务计划下运行。但是,在一个实例上使用不会影响另一个实例的性能。 App Service有很多好处。
首先,我建议为每个客户使用单独的Azure SQL数据库。这是为了省钱,因为你可以相对便宜地启动S0 / S1数据库。然后,您可以通过Azure门户为您的应用服务计划下的每个应用设置连接字符串。
如果您最终快速扩展,请查看弹性数据库。您需要为数据库服务器付费,并为每台服务器获取200个数据库。因此,如果您拥有相当多的客户并且可以证明成本合理,那么它真的很经济。但是,有一些有用的Azure工具可以更轻松地管理弹性数据库池。有关详细信息,请查看Azure文档。
设置此体系结构后,您可以通过门户管理实例/数据库,也可以设置另一个逻辑应用程序来管理所有实例。通过门户网站开始管理它的开发工作要少得多,但如果这是一个SaaS产品,并且要快速扩展,您可能需要提前投资自动化某些流程以便部署新实例不必手动完成。
我也更喜欢这种方法,因为您可以在不同的自定义应用中指定不同的子域。 (即customer1.yourdomain.com,customer2.yourdomain.com)。每个应用程序已经在azurewebsites.net下拥有自己的域名,因此如果您不介意使用该域名,您可以坚持使用它。这是一个很好的原因,那么您不必管理自己的DNS或担心SSL证书,而不是因为它已经为您管理了。如果您确实需要自己的自定义域名,那么就有大量的文档。 Azure还有一个DNS服务,用于自动创建CNAME记录,同时自动启动新应用程序并将数据库部署到池中并初始化数据库等......
答案 2 :(得分:0)
正如大卫所说,你可以这样做。我的建议是在你的应用程序的web.config中使用连接字符串来控制你想要与之通信的数据库实例,然后你可以配置你的azure web app部署"插槽设置&# 34;在azure门户(或您的ARM模板)中覆盖该部署的Web配置设置。
所以 - 您可以创建描述您的基础架构的ARM模板,并可以将您的应用服务计划,Web应用程序,Web配置,sql数据库部署到特定命名的资源组(即针对您的一个客户)。这将具有指向该资源组中的数据库实例的配置,以及可能打开/关闭客户特定功能的其他配置。尽量保持代码和部署尽可能通用,否则您将来会遇到维护噩梦。
有关天蓝网络应用中配置设置的信息,请参阅https://azure.microsoft.com/en-gb/documentation/articles/web-sites-configure/。