Java容器化部署架構方案_第1頁
Java容器化部署架構方案_第2頁
Java容器化部署架構方案_第3頁
Java容器化部署架構方案_第4頁
Java容器化部署架構方案_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、Java 容器化部署架構從應用服務器到云原生Java 應用程序的部署方式三個迷思困惑容器鏡像包和軟件啟動速度Java Cloud Native概述哪個在先,哪個在后?部署包的體積,占用的內(nèi)存更容易運維管理組件間交互和效率迷思之一: 單體 vs 微服務IDL文件 = 客戶端,服務器代碼編寫服務器實現(xiàn)編譯成多個可執(zhí)行文件多個服務器進程運行注冊到命名服務器中集群和高可用編寫腳本,維護服務器運行Java剛誕時都是微服務架構CorbagRPCDubbo多種語言Java接口定義IDLIDLJava Interface協(xié)議IIOPProtobuf/Http2dubbo等多種異步響應式callbackstre

2、amcallback服務治理對照表:業(yè)界主流技術發(fā)展瀏覽器和前端技術GUI客戶端RPC瀏覽器HTTP通信瀏覽器終端設備REST1 傳統(tǒng)Client-Server2 J2EEHTTP瀏覽器3 JavaEE with SpringREST4 JS 框架和 REST5 Microservice架構基于 Java EE,依賴注入框架,集成了各種技術庫Spring FrameworkJava EESpring Framework依賴注入CDIIoC ContainerAOPIntercepterSpring AOPPersistenceJPAJPA, JDBC, SpringDataTransactio

3、nJTA, EJBJTA, JDBC, JPARestJaxRSSpringMVCMessagingJMS, EJBSpring Messaging, JMSSecurityJavaEE Security, EJB, ServletSpring Security架構部署包組成部署包是否可執(zhí)行應用服務器容器說明CS獨立服務器jar客戶端維持狀態(tài)JEEear,war,jarServlet/EJB分布對象的爭議Spring webwarServletMVC模式JS / RestwarServlet異步響應式Java微服務war or jar可選三個維度劃分復制狀態(tài)Servlet 的 Session

4、信息有狀態(tài) Session BeanHibernate 緩存Wildfly 利用 Infinispan優(yōu)化后性能上乘(狀態(tài)緩存在JVM中)應用服務器集群狀態(tài)復制基于 Spring 的可引導的程序可選擇不同的 Servlet Starter開發(fā)微服務應用與 Servlet 容器包含關系:和Spring框架開發(fā)的war包 正好相反Spring BootSpring BootTomcat StarterConfigurationVSWar SpringFrameworkTomcatSpring Cloud 和 MicroProfile微服務要考慮的要素微服務要素Spring CloudMicropr

5、ofile配置管理Config serverConfig服務發(fā)現(xiàn)EurekaJavaEE naming負載均衡RibbonBy Application Server性能指標Spring Boot ActuatorMetrics, health分布式跟蹤Spring Cloud SleuthOpentracing故障容錯HystrixFault-tolerance路由和攔截器ZuulJavaEE Servlet, interceptor以 Spring 微服務舉例:JDKSpring Boot Spring Cloud 各種三方庫Jar 包非常龐大啟動時,需要相關服務就緒Java微服務Sprin

6、g BootTomcat StarterJPA StarterMessgaing Starter StarterSpring Could Config EurekaZuulManagementConfigurationJava 包,功能為返回REST數(shù)據(jù)信息部署包數(shù)據(jù)對比方式JavaEE war包Spring war包Spring Boot jar包Spring Boot / Spring Cloud jar大小7K6.4M16.7M39.4M包含容器 總體積217M30M16.7M39.4M+40.1M(Eureka)啟動時長4500ms1800ms1850ms7200ms占用內(nèi)存60M45

7、M42M初始600M,GC 后約170M說明Wildfly 14 full profileTomcat 9, Spring4.2SpringBoot 2.1.4,Tomcat 9SpringCloud 1.4.0, Zuul 1.3Java EE Container 和 Docker container迷思之二: 容器Container所指的是?以進程為單元,資源受限應用開發(fā)和部署應當:受容器管控向容器設施申請資源提供全局管理功能平臺提供接口,方便應用開發(fā)應用容器化部署Kubernetes容器編排,管理大規(guī)模集群概念對照容器部署組件容器JavaEE應用服務器Docker and Kuberne

8、tes無狀態(tài)組件Managed Bean, Stateless EJBPods有狀態(tài)組件Servlet Session, Stateful EJBStatefulSet任務Scheduled BeanJob, CronJob主控和任務節(jié)點DomainController, NodeMaster, Worker Node控制器ControllerController manager服務群組Server groupsLabel selector擴展性ExtensionCustomResourceDefinitions提供服務治理功能,業(yè)務組件專注邏輯實現(xiàn)Service Mesh幫助微服務“減肥”流

9、量管理 故障處理 路由規(guī)則混合多個組件 微服務設施認證授權三大功能:BuildServingEventingServerless廣泛應用Knative 構建函數(shù)運算服務平臺函數(shù)化啟動速度容器鏡像大小占用內(nèi)存大小迷思之三: Java是否適應云原?JDK AppCDS (Application Class-Data Sharing) 特性-Xshare:on-XX:+UseAppCDSSpringBoot on JDK11提升啟動速度AppCDSStartup timeoff2160mson1980ms啟動速度提升8.3%。一般應用啟動速度能快20%左右Java 9 之后支持模塊化可以通過 Jli

10、nk 工具,只提取必須的 jmod裁減JDKJDK11JDK占用空間Modules文件完整版310.6M130.8M只含有 java.base mod49.7M24.6M$ jar -create file myapp-1.0.jar -main-class app.StringHash -module-version 1.0 -C mods .$ jlink -module-path jmods:mods -add-modules myapp-output target官方的OpenJDK Slim 鏡像,基于Debian Slim FROM debian:stretch-slimDebia

11、n還是通用的Linux發(fā)行版可以使用Alpine Linux FROM alpine:3.9 Musl-libc 和 Busybox使用更小的鏡像源55.3M5.53M優(yōu)化 Java 應用類加載Java 程序“靜態(tài)”化,“函數(shù)”化Quarkus 項目(官方給出的性能比較圖,分別為 傳統(tǒng)Java技術棧,Quarkus Java 和 Quarkus Native)如何減少運行時內(nèi)存占用?REST數(shù)據(jù)服務性能比較方式Spring Boot jar包Quarkus JVMQuarkus native大小16.7M49.5K20M含libs總體 積16.7M9.8M20M啟動時長1850ms530ms1

12、0ms占用內(nèi)存(RSS)264M117M13.7M說明SpringBoot 2.1.4,Tomcat 9Quarkus 0.14, JDK 8Quarkus 0.14借用了 Java EE 和 Microprofile 部分規(guī)范Quarkus規(guī)范化技術Java EEMicroProfileOtherCDIConfigOpenAPIJAX-RSRest-ClientReactive StreamJPAMetricsReactive MessagingJSON-P / JSON-BFault ToleranceKeyCloakServletJWT SecurityCamelBean Validat

13、orVertxQuarkus技術棧核心組件和主要部件Quarkus ExtensionRestEasyUndertowHibernateBean ValidationNarayanaAgroalReactive SteamRest ClinetMetricsOpenAPIOpenSSLFault ToleranceQuarkus CoreGizmoJandexGraal SDKWeld ArcHotspotSubstrate利用 Graal 項目的 Substrate VM中 native- image 工具將 Java 應用“轉換”為本 地代碼Java 原生程序編譯Compile提供Prov

14、ision組合AugmentJDK 虛擬 機運行AOT 本地編譯運行容 器鏡像在編譯時重寫 Java 代碼,使得程序 能夠被快速加載和啟動運行能靜態(tài)初始化加載的盡量靜態(tài)構造, 對原有的動態(tài)發(fā)現(xiàn)的進行必要代碼重 寫需要考慮本地編譯的要求Quarkus 核心技術INFO - quarkus-maven-plugin:0.14.0:native-image (default) using- websockets -INFO io.quarkus.creator.phase.nativeimage.NativeImagePhase Running Quarkus native-image plugin

15、 on Java HotSpot(TM) 64-Bit Server VMINFO io.quarkus.creator.phase.nativeimage.NativeImagePhase /x1/java/javalib/graalvm-ce-1.0.0-rc16/bin/native-image -J- Djava.util.logging.manager=org.jboss.logmanager.LogManager - H:InitialCollectionPolicy=com.oracle.svm.core.genscavenge.CollectionPolicy$BySpaceA

16、ndTime -jar app-runner.jar -J- Djava.util.concurrent.ForkJoinPmon.parallelism=1 - H:FallbackThreshold=0 -H:+PrintAnalysisCallTree -H:-AddAllCharsets - H:EnableURLProtocols=http -H:NativeLinkerOption=-no-pie -H:-SpawnIsolates - H:-JNI -no-server -H:-UseServiceLoaderFeature -H:+StackTraceapp-runner:22

17、276classlist:2,884.84msapp-runner:22276(cap):1,091.63msapp-runner:22276setup:2,310.69ms20:48:44,880 WARNio.und.web.jsr UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used20:48:44,894 INFOio.und.web.jsr UT026003: Adding annotated server endpoint class org.acme.

18、websocket.ChatSocket for path /chat/username20:48:45,773INFOorg.jbo.threads JBoss Threads version 3.0.0.Alpha420:48:46,336INFOorg.xnio XNIO version 3.7.0.Final20:48:46,370INFOorg.xni.nio XNIO NIO Implementation Version 3.7.0.Finalapp-runner:22276(typeflow):10,598.82msapp-runner:22276(objects):9,051.49msapp-runner:22276(features):817.12msapp-runner:22276analysis:20,971.70msapp-runner:22276universe:555.74msapp-runner:22276(parse):1,794.73msapp-runner:22276(inline):3,270.11msapp-runner:22276(compile):19,523.92msapp-runner:22276compile:25,859.57msapp-runner:22276i

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論