文档章节

服务共享 vertx Server sharing

天舒
 天舒
发布于 2016/04/19 09:58
字数 497
阅读 55
收藏 1

Server sharing

服务共享

When several HTTP servers listen on the same port, vert.x orchestrates the request handling using a round-robin strategy.

当几个http服务监听同一个端口,vert.x安排循环处理这个请求。

Let’s take a verticle creating a HTTP server such as:

让我们创建一个http服务:

io.vertx.examples.http.sharing.HttpServerVerticle

vertx.createHttpServer().requestHandler(request -> {
  request.response().end("Hello from server " + this);
}).listen(8080);

This service is listening on the port 8080. So, when this verticle is instantiated multiple times as 

with:

vertx run io.vertx.examples.http.sharing.HttpServerVerticle -instances 2

这个服务监听着8080端口,所以当verticle被实例化为多个。

, what’s happening ? If both verticles would bind to the same port, you would receive a socket exception. Fortunately, 

将发生什么?2个实例绑定到同一个端口,你将获得一个socket异常。幸运的是

vert.x is handling this case for you. When you deploy another server on the same host and port as an existing server it 

vert.x已经帮你处理了这个场景。当你在已经存在的地址、端口上发布另外一个服务。

doesn’t actually try and create a new server listening on the same host/port. It binds only once to the socket. When 

它事实上不会创建一个新的服务监听这个地址/端口,它只是一次性绑定到这个socket上。

receiving a request it calls the server handlers following a round robin strategy.

当收到一个请求,它会循环调用服务处理者。

Let’s now imagine a client such as:

我们想象有个client这样的。每100毫秒执行一次访问服务8080。

vertx.setPeriodic(100, (l) -> {
  vertx.createHttpClient().getNow(8080, "localhost", "/", resp -> {
    resp.bodyHandler(body -> {
      System.out.println(body.toString("ISO-8859-1"));
    });
  });
});

Vert.x delegates the requests to one of the server sequentially:

vert.x将依次请求服务。

Hello from i.v.e.h.s.HttpServerVerticle@1
Hello from i.v.e.h.s.HttpServerVerticle@2
Hello from i.v.e.h.s.HttpServerVerticle@1
Hello from i.v.e.h.s.HttpServerVerticle@2
...

Consequently the servers can scale over available cores while each Vert.x verticle instance remains strictly single threaded, 

因此,这些服务可以扩展并在有效的内核上伸缩

and you don’t have to do any special tricks like writing load-balancers in order to scale your server on your multi-core 

所有你不用再用特意的写动态平衡的代码来平衡你的多核机器。

machine.


© 著作权归作者所有

共有 人打赏支持
天舒
粉丝 11
博文 17
码字总数 9012
作品 0
东城
架构师
私信 提问
使用Vert.x构建Web服务器和消息系统

Vert.x亮点 Vert.x应用程序是事件驱动,异步和单线程的。 Vert.x过程通过事件总线,这是Vert.x的事件驱动架构的内置一块通信。 结合异步处理,单线程组件和事件总线产生高度的可扩展性,并编...

力谱宿云
2016/06/20
1K
0
Vert.x Blueprint 系列教程(二) | Vert.x Kue 教程(Web部分)

上部分蓝图教程中我们一起探索了如何用Vert.x开发一个基于消息的应用。在这部分教程中,我们将粗略地探索一下模块的实现。 Vert.x Kue REST API kue-http模块中只有一个类KueHttpVerticle,作...

sczyh30
2016/07/26
190
0
Vert.x 3.1.0 发布,JVM 上的 Node.js 替代

Vert.x 3.1.0 发布,主要更新内容如下: Vertx-syncis a set of utilities that allow you to perform asynchronous operationsand receive events in a synchronous way, but without bloc......

oschina
2015/10/09
2.4K
12
vert.x core vert.x的核心是一个java api的集合

At the heart of Vert.x is a set of Java APIs that we call Vert.x Core vert.x的核心是一个java api的集合 Repository. Vert.x core provides functionality for things like: 核心提供了......

天舒
2016/04/19
223
0
Vert.x Core 中文使用手册(3.5版)(持续更新)

开始使用 使用该框架第一步是创建Vertx对象,该框架的功能都依赖于Vertx,例如创建client,servers,获取event bus,设置timers等等操作。 简单创建Vertx 可以简单创建Vertx,代码如下: 创建...

-_-一条狗
2017/10/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

epoll中使用

1、一个线程epoll_wait时,另一个线程调用epoll_ctl是安全的。 2、使用edge触发,在socket有数据到来后,不收取数据,再次调用epoll_ctl将socket加入,仍会触发下一次动作。 asio用该方法来发...

gelare
5分钟前
0
0
PHP规范PSR2

PSR标准 - PSR-2 为了尽可能的提升阅读其他人代码时的效率,下面例举了一系列的通用规则,特别是有关于PHP代码风格的。 各个成员项目间的共性组成了这组代码规范。当开发者们在多个项目中合作...

geek土拨鼠
21分钟前
4
0
【极简】如何在服务器上安装SSL证书?

本文适合任何人了解,图形化操作。下面以腾讯云为例,并且服务器(linux)也安装了宝塔面板。 1.登陆腾讯云账号进入控制台,找到SSL的产品 2.按要求申请并填写表单,记住私钥密码 3.提交后,待...

皇冠小丑
29分钟前
0
0
深入理解编译器

深入理解编译器 原文出处 欢迎向Rust中文社区投稿,投稿地址,好文将在以下地方直接展示 1 Rust中文社区首页 2 Rust中文社区Rust文章栏目 3 知乎专栏Rust语言 编程语言是如何工作的 从内部理解...

krircc
31分钟前
0
0
Centos7&docker-ce&compose&wordpress

如题,最近帮人装个WordPress,想起来用docker方便,这里做个记录。 因为docker要求linux内核版本3.10以上我记得,所以直接用的centos7省去很多麻烦。 主机在国内的先把yum源改成国内的阿里云...

虚拟世界的懒猫
35分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部