服务器架构:组件位置
Architecture of server: location for components
我有以下东西:
1) Django + Tornado 服务器(SQL 数据库是远程的)
2)Redis
3) RabbitMQ
4) 着陆页(只是静态的)
5) 电子邮件服务器 (iRedMail) 连接到与 Django 和 Tornado 相同的数据库。
我的问题:如果我将它们全部安装在同一个物理服务器(实例)上可以吗?
或者像 (1,2,3) 和 (4,5) 这样的最佳分离方式?
我担心电子邮件服务器,因为它似乎会使用很多资源。另一方面,在那里注册的用户不超过 4 个。
如果方法安装在同一台机器上,安全性如何?
尽管您的问题非常针对您的应用程序。但是,我只能根据我的个人经验、吸取的教训以及我在其他地方阅读的最佳实践给出一个笼统的答案
您需要问自己几个问题,回答这些问题将有助于您找到解决问题的最佳架构:
1。可扩展性
您的解决方案中每项服务的使用模式是什么?您能否在不扩展其他服务的情况下扩展其中一些需求量大的服务?
Would you (at some point) require a higher throughput from RabbitMQ service and add more instances in a cluster to keep up with the load, without having to scale up the email server as well?
2。一致性
您会使用什么策略在同一服务的多个实例之间分配工作负载? (复制、分区、集群、分片等)?
RabbitMQ can work in a load-balanced cluster. but maybe your mail server cannot?
3。效率
如果您扩大某些服务的规模(向它们投入更多 CPU/RAM)而不是扩大规模(添加更多实例),它们的性能会更好。明智地选择
4。安全
这是一个很大的话题,但我个人认为有几点是必须的:
您的大部分服务都会暴露可能受到攻击的端点(TCP 套接字)。将所有内容置于严格的防火墙之后,仅公开最关键的端口(您的场景中的 Web 和邮件服务器)
服务应该相互验证和验证(只要可能)。如果一项服务暴露,它不应该危及整个系统。
我有以下东西:
1) Django + Tornado 服务器(SQL 数据库是远程的)
2)Redis
3) RabbitMQ
4) 着陆页(只是静态的)
5) 电子邮件服务器 (iRedMail) 连接到与 Django 和 Tornado 相同的数据库。
我的问题:如果我将它们全部安装在同一个物理服务器(实例)上可以吗?
或者像 (1,2,3) 和 (4,5) 这样的最佳分离方式?
我担心电子邮件服务器,因为它似乎会使用很多资源。另一方面,在那里注册的用户不超过 4 个。
如果方法安装在同一台机器上,安全性如何?
尽管您的问题非常针对您的应用程序。但是,我只能根据我的个人经验、吸取的教训以及我在其他地方阅读的最佳实践给出一个笼统的答案
您需要问自己几个问题,回答这些问题将有助于您找到解决问题的最佳架构:
1。可扩展性
您的解决方案中每项服务的使用模式是什么?您能否在不扩展其他服务的情况下扩展其中一些需求量大的服务?
Would you (at some point) require a higher throughput from RabbitMQ service and add more instances in a cluster to keep up with the load, without having to scale up the email server as well?
2。一致性
您会使用什么策略在同一服务的多个实例之间分配工作负载? (复制、分区、集群、分片等)?
RabbitMQ can work in a load-balanced cluster. but maybe your mail server cannot?
3。效率
如果您扩大某些服务的规模(向它们投入更多 CPU/RAM)而不是扩大规模(添加更多实例),它们的性能会更好。明智地选择
4。安全
这是一个很大的话题,但我个人认为有几点是必须的:
您的大部分服务都会暴露可能受到攻击的端点(TCP 套接字)。将所有内容置于严格的防火墙之后,仅公开最关键的端口(您的场景中的 Web 和邮件服务器)
服务应该相互验证和验证(只要可能)。如果一项服务暴露,它不应该危及整个系统。