Jay*_*Jay 13 java architecture spring web-services
单独部署Web服务或者它们是Web应用程序的一部分是一种好的做法吗?例如,我正在开发基于Spring rest的Web服务.该服务的功能是,用于获取用户数据.
查询此Web服务的每个Web应用程序都将其用户数据放在不同的模式中.那么,现在web服务需要知道谁在调用它 - 它是Appilcation A还是Application B?如果它是AppA,那么它应该从Schema A获取数据,如果它是AppB,那么它是另一个模式.请注意,AppA和AppB只是包含在两个不同战争中的相同代码,它们应该查询的模式是从属性文件提供的.
在这种情况下,使用webapp代码打包webservice并在不同的上下文中部署它是否有意义,因此它成为在不同上下文中运行的duplciate服务.或者,它是否应该单独部署,并且应该以某种方式将AppA和AppB标识为此Web服务?
我更喜欢以下方法,它用于50K并发用户.
您应该拥有Master Web服务集群和各个Web服务集群 - App-A和App-B
在此方法中,您的架构可以驻留在不同的数据库而不是单个数据库
这种方法的优点:
每个Web服务都可以水平扩展.如果要增加比例,只需添加其他VM节点即可.
如果在不同位置的不同数据库上有不同的模式,则可以避免OLTP查询中的网络性能瓶颈(联机事务处理查询).
缺点:
您正在尝试将数据提供者或 DAO 实现为服务。为了做到这一点——
您可以简单地拥有一个 Web 服务,部署在 Web 应用程序外部并驱动配置。配置本身可以存储为属性文件或来自数据库。客户端的标识符应在 Web 服务请求中传递。
这实际上是一种非常标准的方法,用于在数据库之外的数据层进行优化,例如缓存(再次由配置驱动)、过期、池化等。
另一个选项,即作为共享 jar 包含在 web 应用程序中,是的,具有代码重用的优点(您也可以通过外部部署的服务获得),但以下缺点超过了该选项。
希望能帮助到你。
| 归档时间: |
|
| 查看次数: |
822 次 |
| 最近记录: |