netty与vert.x的区别和联系

netty与vert.x的区别和联系,第1张

Vert.x是一个用于下一代异步、可伸缩、并发应用的框架,旨在为JVM提供一个Node.js的替代方案。开发者可以通过它使用JavaScript、Ruby、Groovy、Java、甚至是混合语言来编写应用。

在内部,一个vert.x实例会管理着一个小的线程集合,每个线程针对服务器上的一个可用内核。基本上每个线程都实现了一个事件循环。当部署一个vert.x应用实例(又叫做verticle)时,服务器会选择一个事件循环分配给该实例。接下来针对该实例的任务都会通过该线程进行分配。由于在某一时刻可能会有成千上万个verticle在运行,因此在同一时刻会将单个事件循环指定给多个verticle。

Verticle可与运行在相同或不同vert.x实例中的其他verticle进行通信,这是通过消息事件总线实现的,它类似于Erlang的actor模型。消息传递旨在让系统能够在多个可用核心上进行扩展而无需以多线程的方式来执行verticle代码。

事件总线是分布式的,并不只会跨越服务器,还会渗透进客户端的JavaScript以处理“实时”的Web应用。

除了并发与消息传递外,vert.x还具有如下特性:

TCP/SSL服务器与客户端

HTTP/HTTPS服务器与客户端

WebSockets/SockJS支持

InfoQ有幸采访到了VMWare的高级工程师Tim Fox以了解vert.x:

InfoQ:能否从架构上介绍一下vert.x及其构建方式?

Tim:vert.x的核心是用Java编写的,接下来我们为每一种支持的JVM语言编写了一个薄薄的API层,这样每种语言都有一个适合于该语言的API了。我们并没有向这些语言直接公开Java API。这意味着Ruby用户会通过Ruby的方式编写代码,JS用户会通过JS的方式编写代码。

InfoQ:能否描述一下在vert.x上典型的开发流程么,特别是与开发者使用Node.js的体验进行一下对比?

我觉得这与node.js是非常类似的。实际的工作流程取决于你是在本地还是云中运行应用。但这并非vert.x所特有的。

InfoQ:就调试、监控与运维来看,在JVM与Node.js上运行实时应用有何差别?

我想说监控与运维实际上与部署vert.x的环境之间的关系更为密切而非vert.x本身。比如说,如果将vert.x部署到云中,那么云提供商可能就会为你提供监控。顺便说一下,社区成员目前已经在OpenShift与Heroku上运行了Vert.x。我们希望不久之后CloudFoundry支持就会到来。

InfoQ:vert.x与Node.js有什么基准比较么?

我们尚未发布任何的官方基准。但我自己已经完成了一些,在我所做的测试中,vert.x的性能与可伸缩性都远远超越了node.js。我希望在不久之后能够发布一些基准。

InfoQ:vert.x与Netty相比如何呢?

Netty是个很棒的底层IO库。Vert.x实际上使用了Netty。但vert.x是个用于编写异步应用的完整。Vert.x还提供了一个组件模型、文件IO及各种Netty所没有的东西。我要说的是,在JVM世界中,Vert.x是更类似于Akka(也使用了Netty)之类的完整框架。

英文 VERTEX

中文 顶点,最高点,头顶

英文 编辑

vertex: [ və:teks ]

n. 顶点,最高点,头顶

2 宿命点 编辑

宿命点与反宿命点的宫位能提示我们会在哪里经历人生的转折,在哪里遇到命运中的定数与宿命。就像之前提到的,宿命点一般落在星盘的西边,第五到第八宫之间,与反宿命点成 180 度对等。

宿命点落在第五 / 十一宫头,一般指会与朋友或者在所处团体(十一宫)中遭遇到一段宿命性的情感或创造性的经历(五宫)。

宿命点落在第六 / 十二宫头,意味着转折点,或者拖延点,能够影响到我们日常的生活,或者意味着通过帮助那些弱势群体,或者通过做白日梦或者幻想来连接我们的灵魂与肉体。

宿命点落在第七 / 一宫头,突然出现的事件能从根本上影响自己重要的社会关系。

宿命点落在第八宫头,宿命的感觉可能性爱的,或者渴望体验快乐,安全,平和,(第二宫)

宿命点与反宿命点所在的星座,表示我们体验这个轴力量的方式。

白羊-天秤 分享或者个人独享问题,

金牛-天蝎 关于安全与冒险的问题

双子-射手 知识与先知对比

巨蟹-摩羯 强调的是保守与进取心

狮子-宝瓶 自我的表达与群体分享的对立

处女-双鱼 约束性与无限的渴望之间的对比

3 宿命点落在十二星座的意义 编辑

Vertex in Aries

宿命点落白羊

你尝试扛起领导的担子,开创新的方向,选择决定性的立场,克服一些禁制,活化个人的魄力,学习勇气,及征服恐惧。(好吧,就是一战神...)

干这些东西会令你满足。这可以挑战你领导的能力,解决困难的能力或创新的能力。而且可以把这些能力由你的无意识间带出来。你会察觉到个人的勇气及自我认同。

达不到以上种种或许会把这种进取心放到他人手上,又或者你会觉得不被满足,因为你妥协,或是堕落而成为一个平庸的人。亦可能是你会发展出一个人格夹缝,因为你心理上地在损害复合个性。

Vertex in Taurus

宿命点落金牛

你被期待去完成一些已预设的行动。其它人期待你变得自立自给,处理一些安全性的问题,及某程度上支持艺术。他们期待你去以一个物质的层面去应付这个世界。

实现这些或许要为一些剧烈的感情或是物质缺口创造一些解决方法。你对别人的信赖会成长,并处理自己的事务。

不干这些令你觉得极自傲的事情会令你难以获得自尊。你或者会觉得是一些社会责任或是感情上的债务。

Vertex in Gemini

宿命点落双子

被期待用你的天赋去杰出地沟通或写作,然后用些骨干的事实阐明现状。人们期待你想到新的点子并清晰地呈现,说,写或指令,辩论你的见解,并取得一席位成为一位演讲者。

干这些事情或者会令你想点子的能力更加进步,因为你学着细心的选择你的词汇去把事实表达出来。你也能获得一种舒服的表达方式,因为你拥有交际的技巧和保持年轻的好奇心。简而言之,面对检验你能准备妥当。

不发展这些技巧会使你允许自己去概括或思想行动发生突然的改变,失去目标。你可能会逃避探索,难以在精神上适应和清晰,或者你可能会阻断在一个简单的目标上而不能发展你所需要的多样性。

Vertex in Cancer

宿命点落巨蟹

你被期望处理人民或大众的利益,在工作中 *** 纵感情因素,学习树立女性或公众形象。人们能发现你的才能,接受你的背景或父母的角色,承认你本性中的情感方面。

做这些事也许能帮助提高你的素质和认识到自己在生活中依赖的需要如合法婚姻的忧虑。你可能还会发现拥有担当父母角色的能力。

不能完成这些事将使你仁慈地对待别人的情感。认为你使他们失望的人会把形势变得扭曲和分歧。你也许还会放弃引诱,抑制你的情感。

Vertex in Leo

宿命点落狮子

你被期待变成一个个体而非团队的成员,在特殊的关系中突出你的个人情感而非保持情感的分离。人们期待你成为教育工作的负责人,从事娱乐项目,或者关于年轻人或孩子们的工作。你应该承认和接受你对赞赏的需要。

完成这些事,你可能形成自己个性的意识或有创意的表达方式。你对自己慈爱、创意方面给予外部的表达。你用帮助他人发展来强化自己的自尊,你通过你的个人魅力和尊严向周围的人灌输信心和个人价值。

不能完成这些任务将导致你精神上严重的尊严混乱或内心出现分歧。你会遭遇那些跟你一样没有人情味的待遇。

Vertex in Virgo

宿命点落处女

你被希望用你实际的洞察力和你的能力去发现缺点。人们希望你提供帮助,编写实用的材料,和提供工作细节。你会提高你的辨别能力,成为一个有用的有成效的社会成员,培养小心谨慎的习惯和接受批评的能力。

做这些事也许使你感到对世界有用,和抵消对自己健康的担忧。你还学会相信自身价值,不顾他人如何评价。最后,你能够在最能胜任的层次起作用,了解到你生命的意义。

不做这些将带来内心的分歧,因为你屈服于模糊不清。你会把自己隐藏起来。你还会出现生活失调和无用的感觉。

Vertex in Libra

宿命点落天秤

你被期待把相对的集团聚合起来,在一个公正的基础上进行劝告和仲裁,或者寻求一种令人满意的妥协方式。你也会提倡合作精神和公平的游戏方式去帮助自己及他人共同进步。面对复杂的迫害导致的内部分歧你会变得冷静。你会借以创造内部平衡及避免没理由的社会要求而与他人平等和睦的相处。你期望培养一种公正和妥协的艺术。

完成这些任务可以帮助你在与人合股中放下自负。你也会学习以公正的感觉与他人相处。最后,你学习怎样接受在你的私人生活和环境中所需的平衡。

不这样做的结果就是使你陷入产生有偏见评价的情况中,并且加之于你的虚荣心。你会以自我为中心而变得费劲,加深了关系中的压抑。然后你会陷入优柔寡断和迟钝中。

Vertex in Scorpio

宿命点落天蝎

你被期待着学习完全的自我控制。你将探索你欲望的限度,对界限的定义不仅在于自身条件,而且在于他人权利的要求以外。你将用相互的财政观点帮助别人做策划。你也许要处理有关死亡、治疗,实践对过时品的改良或回收。你也许会对提高合股的安全性提供明确的帮助,为了使视角尖锐而用形而上学认识自己,获得一种共同价值的感受。你可能还会在认知中产生前卫的超自然的理解。

通过做这些事,你可能会觉得每次在本性的欲望检验下,内在感情需要改良、回收、或者寻找个人重生。然后你获得在重生或更高领域的痊愈力的成长,你自身也得到了更高层次的复活。你可能会卷入工作的争端去获得别人的支持。

如果你不能完成这些目标,你将屈身于对他人的物质欲望,在内心产生怒火般的愤恨。结果,你也许会感到分歧和情感上的不安。

Vertex in Sagittarius

宿命点落射手

你被期待有广阔的视野,对事实背后的意义有一个较深刻的认识。你可能会显露出一种新的宗教意识或一种对事物的哲学观点。你会变得对探求高层次真理感兴趣。你可能会走向或得到关于法律原则的高等教育,讲授关于宗教或哲学的课,编辑,推销,或者对困难形势的理解力。

做这些事可以帮助提高你的自信,你的能力和生活目标。你将学会的是,对自己的信任必定来自于对外界事物的信任。

不能完成你的任务可能会驱使你在没有回顾过去历史怎样实际的影响着人们的前提下去接受一种法律或准则。你将觉得难以接受你所获得的赞扬和奖励,取而代之的是,在生活中无目的的漂泊。

Vertex in Capricorn

宿命点落魔羯

你被希望接受承担任务和责任的事实,你做好准备安置巨大的责任。你需要接受局限和勤奋去克服他们。你将认识到你被迫发展组织的能力、小心、谨慎和耐性。你可能在没有人想要的处境中管理一间事务所。你需要接受限制因素,不管它们来自自身或外界。

完成这些目标将使你意识到组织能力的重要性。你还将在斗争和约束中净化自己。

没有完成这些任务将使你由于表面上的不可靠、不稳定或错误,妨碍了提升自己职位的机会。你可能宣称缺乏必要时机的原因是家庭的体贴。如果你把自己看作是不稳定环境的受害者,你会体验内心的分歧。你还会由于缺乏纪律而对能力低的人有微妙的感觉。

Vertex in Aquarius

宿命点落水瓶

你被期望与各类人一起,即便是你感觉不能忍受。人们希望你建立足够的公正去提升个人的一些小事,因此你将你的同龄人视为“兄弟”而非陌生人。你摆脱同龄人群体的压力,通过发展真正的个性来成长。你需要接受你是群众中一员的意见。

做这些事可以帮助你避免感觉到优越性。作为一个朋友,你并不是非重要的事不能打扰的人。你将学会克服自己的自尊。

不完成以上的任务也许代表你变成对自己有偏见的任何人都没有耐性对待。你将会被那些你所抵制所阻碍,简单的因为它们拒绝创造你所需要的将来的开端。成就变得没有意义,而改造世界的失败撞击力出乎你的意料。

Vertex in Pisces

宿命点落双鱼

你被期望显露出无私和培养情感或心理的洞察,而不是来自于自身本能的现实和物质见识。人们希望你显示出同情和倾听内心受伤的人们倾诉的能力,简单的需要知道有他人的关心。你可能会决定从事分娩、公共机构、或者幕后工作。你将会需要接受的事实是,我们是宇宙的孩子,存在是为了传达无穷的爱的理想和纯洁的兄弟之情的美好。

如果你完成以上的任务,你将会与被你帮助过的人联系并获得成长。你将通过实际考虑的过程中增长见识,你会认识到,你基本上稳固的把握了对事情的计划。

不这样做你会回到自身,只是重新发现那些你已知道的东西。这些会产生对无效用的感觉,导致失望及自我毁灭。

在后台接口开发中,没有必要引入一些tomcat,或jetty这些web容器,同时提高系统的性能,提高系统的并发性,Vert.x 是以非阻塞IO的思想来实现高性能,非阻塞IO的实现,依据netty为底层基于Netty,大大降低了传统阻塞模型中线程对于 *** 作系统的开销,因此相比较传统的阻塞模型,异步模型能够很大层度的提高系统的并发量。

下表是一个整合的小案例

@Component

public class StaticServer extends AbstractVerticle{

    @Override

    public void start() throws Exception {

        Router router = Router.router(vertx)

        router.route().handler(BodyHandler.create())

        //请求路径

        router.get("/v1/customer")

                //.produces("application/json")

                //使用evenloop线程执行

                //.handler(this::getCustomerById)

                //创建新的线程执行(一般用于执行阻塞调用)

                .blockingHandler(this::getById)

            router.route().handler(StaticHandler.create())

            // 开启监听端口

            vertx.createHttpServer().requestHandler(router).listen(8080)

    }

    /**

      *  模拟调用方法

    * @param rc

    */

    private void getById(RoutingContext rc) {

    //获取请求参数

        Long id = Long.parseLong(rc.request().getParam("id"))

        System.out.println(id)

        /*

            * 返回请求值

        */

        rc.response().

        setStatusMessage("ok") //  http响应状态描述值

        .setStatusCode(200)//  http响应状态码

        .end("this is ok")//返回内容

      }

}

配置springboot启动类

@SpringBootApplication

public class App {

@Autowired

    private StaticServer staticServer

public static void main(String[] args)

{

try {

 // 不让springboot以web启动

new SpringApplicationBuilder(App.class).web(WebApplicationType.NONE).run(args)

} catch (Exception e) {

e.printStackTrace()

}

}

@PostConstruct

    public void deployVerticle() {

        Vertx.vertx(new VertxOptions()).deployVerticle(staticServer)

    }

}

然后浏览器访问http://127.0.0.1:8080/v1/customer?id=11 即可

后台会获取到请求参数id为11 


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10000071.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存