簡體   English   中英

Vert.x垂直方法

[英]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提供程序,例如ProductsRouterProviderInventoryRouterProviderOrdersRouterProvider

這些提供商中的每一個都負責特定的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM