我们正在将 rest api 单体拆分为微服务,我们遇到了以下问题
让我们假设以下
- 项目是asp.net mvc,托管在iis上
- 项目托管在专用服务器(不是云)上
- monolith rest api 定义了 url,例如 www.domain.com/orders/ www.domain.com/tickets/ 等
当将单体拆分为微服务时,理想的情况是我们最终得到
ms1 -> www.domain.com/orders/
ms2 -> www.domain.com/tickets/
由于微服务通常不与资源相关联,这可能会变得混乱,例如,一个微服务可以为多个资源提供服务,或者一个资源可以由多个微服务提供服务。
fe.
www.domain.com/tickets/ (ms1)
www.domain.com/tickets/reports (ms2)
or
www.domain.com/tickets (ms1)
www.domain.com/orders (ms1)
对此有什么解决方案?
所以基本上主要目标是让完整的 api apear 像
GET www.domain.com/tickets/5
GET www.domain.com/orders/5
POST www.domain.com/orders/
GET www.domain.com/invoices/100
等等
那么iis重写和api网关是这里唯一的两个选择吗?微服务应该直接暴露给客户端,还是应该通过 API 网关。在这种情况下,API 网关是否矫枉过正?
API 网关无疑会增加价值——您将实现拆分为更小的单元(微服务)——它允许您将 API 接口作为一个单独的单元集中管理、监控和治理,与实现分开。
公开单个微服务端点可能不容易管理 - 例如,您需要对每个端点单独应用访问控制策略。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句