文档章节

服务共享 vertx Server sharing

天舒
 天舒
发布于 2016/04/19 09:58
字数 497
阅读 48
收藏 1
点赞 1
评论 0

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 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 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
AeroGear.js 1.1.0 发布,手机Web脚手架

AeroGear.js 1.1.0 发布了,该版本包含全新的 Notifier 插件,可支持基于 websocket 和 vert.x 的消息服务通讯,修复了很多 bug,包括: Changelog Bump version to 1.1.0 Update jQuery de...

红薯
2013/06/25
945
1
Vert.x Blueprint 系列教程(二) | 开发基于消息的应用 - Vert.x Kue

Vert.x 蓝图项目已经发布至Vert.x官方网站:Vert.x Blueprint Tutorials 本文章是 Vert.x 蓝图系列 的第二篇教程。全系列: Vert.x Blueprint 系列教程(一) | 待办事项服务开发教程 Vert.x B...

sczyh30
2016/07/26
721
0
Vert.x Core 中文使用手册(3.5版)(持续更新)

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

-_-一条狗
2017/10/18
0
0
Microsoft Exchange本地和Exchange Online可以与第三方服务共享

很多人都知道Office 365中的Microsoft Exchange本地和Exchange Online可以与第三方服务共享您的个人数据?例如,在Exchange电子邮件中找到的任何地图地址都会发送给Bing。这些地址可以与第三...

惊艳了青春
03/17
0
0
Vert.X 入门手记 (二) 下载&安装

Vert.X 中文站:vertx.tk(临时域名) 目前中文化正在进行中,有人来帮忙否?? QQ交流群:219655467 下载 官方下载地址:http://vertx.io/downloads.html 本系列文章所使用的是 2.1RC1版本。 ...

Vity
2014/03/07
0
5
SolrCloud+tomcat7+zookeeper集群配置及使用

solrCloud的主要功能: 主要功能包括强大的全文搜索,点击显示,面搜索,动态聚类,数据库集成,丰富的文件(如Word,PDF)处理,和空间搜索,而且他具有高度的可扩展性,提供容错的分布式搜索...

力谱宿云
2016/07/19
499
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JPA @MappedSuperclass 注解说明

基于代码复用和模型分离的思想,在项目开发中使用JPA的@MappedSuperclass注解将实体类的多个属性分别封装到不同的非实体类中。 1.@MappedSuperclass注解只能标准在类上:@Target({java.lang....

海博1600
9分钟前
0
0
Scala Configuration 相关API

Play使用了 Typesafe config library,但是也提供了一个有着更多Scala高级特性的的 Configuration 封装。不熟悉Typesafe配置的开发者可以移步 configuration文件的语法和特性文档。 读取配置...

Landas
今天
1
0
使用cookie技术 记住账号

1. 效果 2. 实现过程 2.1 前端 将用户的选中传递给后台 这个参数的获取是 参考:https://my.oschina.net/springMVCAndspring/blog/1860498 // var rememberLogin = $("#rememberLoginId").i...

Lucky_Me
今天
1
0
《趣谈网络协议》02之网络分层的真实含义

一、提出问题 1.提出问题 当你听到什么二层设备、三层设备、四层 LB 和七层 LB 中层的时候,是否有点一头雾水,不知道这些所谓的层,对应的各种协议具体要做什么“工作”? 2.这四个问题你弄...

aibinxiao
今天
2
0
Python3学习日志二 Python中的集合set和字典dict

1.集合set 定义一个集合set 我们可以看到定义集合set有两种不同的形式,如果要定义一个空的集合set不能用{}而是要用set();另外,集合是无序的,而且set中的元素是不可重复的,如果你定义了一...

Mr_bullshit
今天
0
0
adb 操作指令详解

ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。 注:有部分命令的支持情况可能与 Android 系统版本及定制 ROM 的实现有关。...

孟飞阳
今天
0
0
nodejs安装以及环境配置(很好的node安装和配置文章,少走很多弯路)

一、安装环境 1、本机系统:Windows 10 Pro(64位) 2、Node.js:v6.9.2LTS(64位) 二、安装Node.js步骤 1、下载对应你系统的Node.js版本:https://nodejs.org/en/download/ 2、选安装目录进...

sprouting
今天
1
0
Redisson

了解了Redisson,发现使用挺简单的,接下来准备深入学习一下。 Redisson介绍 Redisson是架设于Redis基础之上的一个Java驻内存数据网格(In-Memory Data Grid) Redisson在基于NIO的Netty框架上...

to_ln
今天
0
0
python有哪些好玩的应用实现,用python爬虫做一个二维码生成器

python爬虫不止可以批量下载数据,还可以有很多有趣的应用,之前也发过很多,比如天气预报实时查询、cmd版的实时翻译、快速浏览论坛热门帖等等,这些都可以算是爬虫的另一个应用方向! 今天给...

python玩家
今天
0
0
python爬虫日志(3)-爬去异步加载网页

在浏览器检查元素页面中,选取Network中的XHR选项即可观察每次加载页面,网页发出的请求,观察url的规律即可利用封装的函数对每一页进行爬取。

茫羽行
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部