【发布时间】:2018-08-30 05:14:05
【问题描述】:
我计划分三步将我现有的云整体式 Restful Web API 服务迁移到 Service Fabric。 我的云服务中大量使用了内存缓存(处理中)。
步骤 1) 将云服务迁移到具有 1 个副本和单个分区的 SF 有状态服务。缓存代码保持原样。不使用可靠的集合。
第 2 步) SF Monolithic 有状态服务水平扩展至 5 个副本和单个分区。缓存代码修改为使用可靠集合。
第 3 步) 将 SF 单体服务分解为微服务(无状态/有状态)
上述方法更干净吗?有什么推荐吗。?有什么缺点吗?
更多关于第 2 步)SF 有状态服务的水平扩展
- 我不打算使用 SF 分区策略,因为我无法在我的应用程序中考虑统一的数据分布。
- 通过添加更多副本并且不使用 SF 有状态服务进行分区,我只是让我的服务更加可靠(可用性)。我的理解正确吗?
- 我将修改缓存代码以使用可靠集合 - 字典。所有副本都将提供相同的状态数据。
- 我知道 GET 可以在任何副本上执行,但更新/写入需要在主副本上执行?
- 如何在不分区的情况下扩展我的 SF 有状态服务?
所有副本(包括辅助副本)都可以监听我的客户端请求并做出相同的响应吗? GET 应该能够执行,PUT 和 POST 调用如何工作?
在这一步我是否应该更喜欢使用外部缓存存储 (Redis) 而不是 Reliable 收集?使用无状态服务?
【问题讨论】:
-
我在使用顺丰一年后的建议是.. 除非你有足够的资源和一个非常有能力的团队,否则不要。作为一个平台,它太不成熟了,而且对于很多应用程序来说都太过分了。慢慢来。启动您的应用程序的两个实例并将它们放在负载均衡器后面。看看结果如何,然后看看将一些热读取数据移动到 redis。 Fwiw 可靠的集合比 P 更 CA。使用 SF 只是为了利用分布式字典作为缓存,imo 有点糟糕的选择
-
另一个问题:为什么你的 REST api 是有状态的?
-
谢谢马尔多克斯。 REST API 是无状态的。但是我们已经使用进程内缓存(内存缓存)来处理热数据以减少数据延迟。您说得对,我们计划使用分布式字典作为缓存来存储进程内缓存数据。
标签: azure azure-service-fabric service-fabric-stateful