我想构建一个基于Azure Service Fabric的微服务应用程序.对于某些有状态的服务或演员,我想通过web api从外部访问该州.
有关以下内容的此类Service Fabric项目的一般权衡和最佳实践是什么?
在单个应用程序中使用一对多服务?因此,如果我为每个应用程序使用一个服务,我将为我的项目提供多个应用程序.每个应用程序使用一个服务何时有用?
在单个服务中使用一个与多个角色?每个服务有多个actor的时候有用吗?
为整个项目使用一个无状态Web api服务,为每个有状态服务或每个应用程序使用多个无状态Web服务?
我知道这些决定是基于具体项目的.但也许上述三点有一般优点和缺点.
Simon Houlton在他的回答中很好地解决了微服务的权衡问题,所以这里有一些专门针对您的Service Fabric问题的答案:
应用程序是服务的分组构造.理论上,通过协同工作来生成一组内聚功能或实现单个业务目标的服务通常会分组到一个应用程序中.在实践中:
升级适用于应用程序级别.通常需要一起升级的服务应该在同一个应用程序中.但您仍然可以单独升级应用程序中的服务.
在应用程序级别汇总运行状况,以便您获得应用程序中服务的全面运行状况概述.
Visual Studio工具使得使用具有多个服务的应用程序变得非常容易.
通常,服务是一个actor 类型的多个实例的主机.换句话说,您通常将一个actor 类型映射到一个服务类型.然后,您可以在服务中实例化该actor类型的多个实例.
取决于你真正想要的东西.什么是无国籍服务?如果您的用户需要一个入口点,那么您应该为整个项目安装一个无状态Web api.这是非常标准的.也许你有第二个无状态服务,只是为管理员或其他东西监听不同的端口.如果您为每个有状态服务都有无状态Web api服务,那么您必须担心将用户路由到正确的无状态服务.