[英]Vert.x verticals approach
想了解如果必須在Vert.x中構建多個(在我的情況下為三個)API時應遵循的方法
我們是否應該為每個API運行單獨的垂直模塊,即是否有一個主頂點,並且每個頂點都有三個頂點。 主級將消息發送到每個級,並且該級負責制定消息並將其發回
要么
只有一個垂直線,只需通過方法調用將其路由到單獨的方法
請提出我們應該如何決定方法的建議。
您的第一個選擇不是很好,因為通常您不需要主立式虛擬機中的負載平衡。 閱讀擴展-共享TCP服務器部分。
您可以在一個版本中運行所有API,也可以在一個版本中運行一個API。 第一個選項很容易在1個VM內擴展(請參閱上面的URL),但是第二個選項對於跨多個服務器和開發的可伸縮性更靈活,但是它需要負載均衡器(您可以使用nginx或HAProxy)。
我同意@berserkk。 將其保存在一個垂直目錄中,否則,API的不同部分必須在不同的端口上運行-因為您無法在偵聽同一端口的多個垂直目錄中創建多個HTTP服務器。
但是,拆分API的一種好方法可能是基於vert.x Routers
。 假設您具有這樣的API子模塊
/products/...
/inventory/...
/orders/...
對於這些子模塊中的每一個,您都可以創建一個Router
提供程序,例如ProductsRouterProvider
, InventoryRouterProvider
或OrdersRouterProvider
。
這些提供商中的每一個都負責特定的API模塊-基本注冊所需的路由。
class ProductsRouterProvider {
static Router create(Vertx vertx) {
Router router = Router.router(vertx)
router.get("/").handler(new ListAllProductsHandler())
router.get("/:productId").handler(new ProductDetailHandler())
...
return router;
}
}
最后,在基本Router
上注冊子模塊Routers
。
Router router = Router.router(vertx)
router.mountSubRouter("/", ProductsRouterProvider.create(vertx))
router.mountSubRouter("/", InventoryRouterProvider.create(vertx))
router.mountSubRouter("/", OrdersRouterProvider.create(vertx))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.