Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Microservices 我什么时候想要创建多个垂直链接(假设我在无状态微服务中使用非阻塞db客户端)?_Microservices_Vert.x_Vertx Verticle_Vertx Eventbus - Fatal编程技术网

Microservices 我什么时候想要创建多个垂直链接(假设我在无状态微服务中使用非阻塞db客户端)?

Microservices 我什么时候想要创建多个垂直链接(假设我在无状态微服务中使用非阻塞db客户端)?,microservices,vert.x,vertx-verticle,vertx-eventbus,Microservices,Vert.x,Vertx Verticle,Vertx Eventbus,假定 我正在构建一个无状态微服务,它公开了几个简单的API端点(例如,一个直通缓存,将一个条目保存到数据库) 我正在使用非阻塞数据库客户端,例如,和 我总是希望我的微服务通过HTTP相互通信(通过将EC2实例放在负载平衡器后面) 问题 什么时候我想使用超过1个标准垂直链接(即,将整个微服务编写为一个垂直链接,并部署它的n个实例(n=事件循环线程数))?。添加更多的垂直链接是否只会增加序列化和上下文切换成本 假设我将微服务拆分为多个标准垂直条(无论出于何种原因)。部署每个实例的n个(n=事件循

假定

  • 我正在构建一个无状态微服务,它公开了几个简单的API端点(例如,一个直通缓存,将一个条目保存到数据库)
  • 我正在使用非阻塞数据库客户端,例如,和
  • 我总是希望我的微服务通过HTTP相互通信(通过将EC2实例放在负载平衡器后面)
问题

  • 什么时候我想使用超过1个标准垂直链接(即,将整个微服务编写为一个垂直链接,并部署它的n个实例(n=事件循环线程数))?。添加更多的垂直链接是否只会增加序列化和上下文切换成本
  • 假设我将微服务拆分为多个标准垂直条(无论出于何种原因)。部署每个实例的n个(n=事件循环线程的数量)实例不总是比部署不同比例的实例提供更好的性能吗。因为每个垂直体只是一个地址上的侦听器,这意味着每个事件循环线程都可以处理各种消息,并且它们已经实现了负载平衡
  • 我希望何时以群集模式运行应用程序?基于文档,我觉得只有当您有多个垂直站点时,集群模式才有意义,而且当您有集群的实际用例时,也有意义,例如,不同的EC2实例处理不同用户的请求,以帮助确定数据位置(例如使用ignite)
  • 请注意,如果您能回答上述问题之一,请提供帮助

    我总是希望我的微服务通过HTTP相互通信(通过将EC2实例放在负载平衡器后面)

    如果您已经使用了这种过于复杂的方法,那么使用Vertx没有多大意义。 Vertx使用事件总线进行集群内通信,从而消除了前端对HTTP和LB的需求

    答复:

  • 为什么要这样做?如果垂直链接彼此不通信,那么序列化开销应该发生在哪里

  • 如果您的Verticle使用非阻塞调用(因此是多线程的),那么您将看不到同一台计算机上1个或N个实例之间的任何差异。另外,如果您的verticle通过某个端口启动(HTTP)服务器,那么所有实例都将通过所有线程共享该单一服务器(Vertex正在进行一些神奇的重新路由)

  • 集群模式是我在开头提到的东西。这是分发和扩展微服务的正确方法

  • 我总是希望我的微服务通过HTTP相互通信(通过将EC2实例放在负载平衡器后面)

    如果您已经使用了这种过于复杂的方法,那么使用Vertx没有多大意义。 Vertx使用事件总线进行集群内通信,从而消除了前端对HTTP和LB的需求

    答复:

  • 为什么要这样做?如果垂直链接彼此不通信,那么序列化开销应该发生在哪里

  • 如果您的Verticle使用非阻塞调用(因此是多线程的),那么您将看不到同一台计算机上1个或N个实例之间的任何差异。另外,如果您的verticle通过某个端口启动(HTTP)服务器,那么所有实例都将通过所有线程共享该单一服务器(Vertex正在进行一些神奇的重新路由)

  • 集群模式是我在开头提到的东西。这是分发和扩展微服务的正确方法

  • 竖线是一种构造代码的方法。所以,当你的主竖梃长得太大时,你可能会想要另一种类型的竖梃。多大?这取决于你的喜好。为了做一件事,我尽量把它们保持在相当小的位置,最多大约200海里

  • 不一定。不同的垂直体可以以不同的速度执行非常不同的任务。拥有N个实例并不一定是坏的,而是多余的

  • 可能永远不会。集群模式早于微服务。使用它会增加另一个层次的复杂性(例如,集群管理器Hazelcast),也意味着你不能像多道语言一样

  • 竖线是一种构造代码的方法。所以,当你的主竖梃长得太大时,你可能会想要另一种类型的竖梃。多大?这取决于你的喜好。为了做一件事,我尽量把它们保持在相当小的位置,最多大约200海里

  • 不一定。不同的垂直体可以以不同的速度执行非常不同的任务。拥有N个实例并不一定是坏的,而是多余的

  • 可能永远不会。集群模式早于微服务。使用它会增加另一个层次的复杂性(例如,集群管理器Hazelcast),也意味着你不能像多道语言一样


  • 我们在现有的堆栈(ELB后面的EC2)上投入了大量的监控/操作工作,节约成本是我们从NodeJ转向vertx的主要原因(我们有5000多台EC2服务器处理峰值http流量)。当我开始在vertx集群中运行我的微服务时,每个微服务1个垂直点有意义吗?而且他们只通过事件总线(没有http)相互交谈,每个微服务1个垂直通道是完全有意义的。Event bus==TCP上的p2p,调用也很简单。我们在现有的堆栈(ELB后面的EC2)中投入了大量的监控/操作工作,节约成本是我们从NodeJ迁移到vertx的主要原因(我们有5000多台EC2服务器处理峰值http流量)。当我开始在vertx集群中运行我的微服务时,每个微服务1个垂直点有意义吗?而且他们只通过事件总线(没有http)相互交谈,每个微服务1个垂直通道是完全有意义的。事件总线==TCP上的p2p,调用也很简单Hi alexey soshin我已将我的微服务代码拆分为多个文件夹/文件
    dao/
    entity/
    路由/
    ,以获取代码