《小代价高收益编写运行在 K8s 平台上的 Vert.x 应用-高琳 .pdf》由会员分享,可在线阅读,更多相关《小代价高收益编写运行在 K8s 平台上的 Vert.x 应用-高琳 .pdf(31页珍藏版)》请在三个皮匠报告上搜索。
1、-Eclipse Vert.x 社区与应用开发小代价小代价,高收益高收益,编写运行在编写运行在 K8s K8s 平台平台上的上的 Vert.x Vert.x 应用应用高琳高级软件工程师 Vert.x 简介Vertx 社区和组件运行在 k8s 平台上Ag e n d a3简介Eclipse Vert.x is a tool-kit for building reactive applications on the JVM.5Eclipse Vert.x 简介反应式程序反应式宣言反应式宣言Ec lip s e V e r t.x 简介简介简介简介-D e mo b a s i c一切的开始,来源于
2、一个 Vertx 实例Vertx 实例像一个魔法棒,使用它就可以变出很多有用的东西Ec lip s e V e rt.x 简介-V e r t x Co r evertx.createHttpServer()vertx.createNetServer()vertx.createNetClient()vertx.createHttpClient()vertx.createDnsClient()vertx.createDatagramSocket()vertx.deployVerticle()vertx.setTimer()vertx.sharedData()vertx.fileSystem()v
3、ertx.eventBus()Netserver/NetclientHttpServer/HttpClientTimer/EventBus Consumeretc模块化自动清理业务逻辑分开使用 EventBus 交互易于横向扩展线程绑定保证所有 Verticle 里的代码都运行在在同一个线程中使用 Verticle 的好处E clipse V ert.x 简介-V e r t i c l eVert.x EventBusNervous system of Vert.x1 2尽最大努力消息发送顺序最大缓存数量可靠性地址为任意字符串内容采用 codec 转换成 buffer一个地址注册多个 han
4、dlerbridge地址与内容发送订阅点对点请求应答发送消息每个node 启动 NetServer ClusterManager 不负责 payload内部和外部地址集群环境Ec lip s e V e r t.x 简介-Ev e n t Bu s简介-D e mo mu l t i i n s t a n c e s运行在 JVM 上的语言Kotlin/Groovy/Scala/Javascriptva v a 为主Es4x for JavascriptMunity vert.x bindingsRxjava/Rxjava2/Rxjava3vertx-sockjs-service-proxy
5、社区多语言的支持得益于该项目生成对应语言的实现v e r t x-c o d e g e n可以同时部署由不同语言写成的 verticle同样的生命周期不同语言有各自的写法V e r t i c l e 支持多语言支持-PolyglotEclipse Vert.x 简介-P o l y g l o tYesYesYesYesYesYesYesNoYesNoNoYes-当读取速度大于写入速度缓存区越来越大服务器内存使用越来越多解决方案:背压(back pressure)Ec lip s e Ve rt.x 简介-Ba c k P r e s s u r e带有分割符的解析适合基于分行的协议带有固
6、定长度的解析适合先发送数据长度,再发送内容的协议长度在解析过程中也可以变化混合型解析模式在解析过程中随时更改适合复杂的协议解析,比如数据库文件Ec lip s e V e r t.x 简介-R e c o r d P a r s e r记录解析器帮助实现自定义协议社区与组件社区与组件This slide comes from Julien Ponge自动生成客户端 stubServiceBinder 注册多语言支持底层交互自动生成Java 定义接口vertx-sockjs-service-proxy无 Ev e n t Bu s AP I 引用业务 API 更为简洁兼容 EventBus AP
7、Ivertx-service-proxyVert.x 社区与组件-s e r v i c e p r o x y社区与组件-D e mo o f s e r v i c e p r o x y社区与组件-D e mo o f s e r v i c e p r o x yHibernate ORM 的反应式 API,支持非阻塞的数据库驱动。异步驱动多种数据库支持基于 mutiny API 和 vertx-sql-client在 Vertx 和 Quarkus 上使用使用 hibernate-reactiveEclipse Vertx 社区与组件-h i b e r n a t e-r e a
8、c t i v e社区与组件-h i b e r n a t e-r e a c t i v e社区与组件-h i b e r n a t e-r e a c t i v e运行在 k 8 s 平台上基于 Verticle,EventBus 模块化Native build imageEclipse Jkube 对 Vert.x 的支持Openshift-maven-pluginKubernetes-maven-pluginOpenshift-gradle-pluginKubernetes-gradle-pluginK8s 平台支持运行在 k 8 s 平台上运行在 k 8 s 平台上运行在 k
9、8 s 平台上Demo:https:/ Starter Github main repo:GitHub-eclipse-vertx/vert.x:Vert.x is a tool-kit for building reactive applications on the JVM Examples:https:/ Demo for this session:https:/ book by Julien Ponge:https:/ Discord Vertx uses:https:/ 1Red Hat is the worlds leading provider of enterprise open source software solutions.Award-winning support,training,and consulting services make Red Hat a trusted adviser to the Fortune 500.Q/O