版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Java 容器化部署架構(gòu)從應(yīng)用服務(wù)器到云原生Java 應(yīng)用程序的部署方式三個迷思困惑容器鏡像包和軟件啟動速度Java Cloud Native概述哪個在先,哪個在后?部署包的體積,占用的內(nèi)存更容易運(yùn)維管理組件間交互和效率迷思之一: 單體 vs 微服務(wù)IDL文件 = 客戶端,服務(wù)器代碼編寫服務(wù)器實(shí)現(xiàn)編譯成多個可執(zhí)行文件多個服務(wù)器進(jìn)程運(yùn)行注冊到命名服務(wù)器中集群和高可用編寫腳本,維護(hù)服務(wù)器運(yùn)行Java剛誕時都是微服務(wù)架構(gòu)CorbagRPCDubbo多種語言Java接口定義IDLIDLJava Interface協(xié)議IIOPProtobuf/Http2dubbo等多種異步響應(yīng)式callbackstre
2、amcallback服務(wù)治理對照表:業(yè)界主流技術(shù)發(fā)展瀏覽器和前端技術(shù)GUI客戶端RPC瀏覽器HTTP通信瀏覽器終端設(shè)備REST1 傳統(tǒng)Client-Server2 J2EEHTTP瀏覽器3 JavaEE with SpringREST4 JS 框架和 REST5 Microservice架構(gòu)基于 Java EE,依賴注入框架,集成了各種技術(shù)庫Spring FrameworkJava EESpring Framework依賴注入CDIIoC ContainerAOPIntercepterSpring AOPPersistenceJPAJPA, JDBC, SpringDataTransactio
3、nJTA, EJBJTA, JDBC, JPARestJaxRSSpringMVCMessagingJMS, EJBSpring Messaging, JMSSecurityJavaEE Security, EJB, ServletSpring Security架構(gòu)部署包組成部署包是否可執(zhí)行應(yīng)用服務(wù)器容器說明CS獨(dú)立服務(wù)器jar客戶端維持狀態(tài)JEEear,war,jarServlet/EJB分布對象的爭議Spring webwarServletMVC模式JS / RestwarServlet異步響應(yīng)式Java微服務(wù)war or jar可選三個維度劃分復(fù)制狀態(tài)Servlet 的 Session
4、信息有狀態(tài) Session BeanHibernate 緩存Wildfly 利用 Infinispan優(yōu)化后性能上乘(狀態(tài)緩存在JVM中)應(yīng)用服務(wù)器集群狀態(tài)復(fù)制基于 Spring 的可引導(dǎo)的程序可選擇不同的 Servlet Starter開發(fā)微服務(wù)應(yīng)用與 Servlet 容器包含關(guān)系:和Spring框架開發(fā)的war包 正好相反Spring BootSpring BootTomcat StarterConfigurationVSWar SpringFrameworkTomcatSpring Cloud 和 MicroProfile微服務(wù)要考慮的要素微服務(wù)要素Spring CloudMicropr
5、ofile配置管理Config serverConfig服務(wù)發(fā)現(xiàn)EurekaJavaEE naming負(fù)載均衡RibbonBy Application Server性能指標(biāo)Spring Boot ActuatorMetrics, health分布式跟蹤Spring Cloud SleuthOpentracing故障容錯HystrixFault-tolerance路由和攔截器ZuulJavaEE Servlet, interceptor以 Spring 微服務(wù)舉例:JDKSpring Boot Spring Cloud 各種三方庫Jar 包非常龐大啟動時,需要相關(guān)服務(wù)就緒Java微服務(wù)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所指的是?以進(jìn)程為單元,資源受限應(yīng)用開發(fā)和部署應(yīng)當(dāng):受容器管控向容器設(shè)施申請資源提供全局管理功能平臺提供接口,方便應(yīng)用開發(fā)應(yīng)用容器化部署Kubernetes容器編排,管理大規(guī)模集群概念對照容器部署組件容器JavaEE應(yīng)用服務(wù)器Docker and Kuberne
8、tes無狀態(tài)組件Managed Bean, Stateless EJBPods有狀態(tài)組件Servlet Session, Stateful EJBStatefulSet任務(wù)Scheduled BeanJob, CronJob主控和任務(wù)節(jié)點(diǎn)DomainController, NodeMaster, Worker Node控制器ControllerController manager服務(wù)群組Server groupsLabel selector擴(kuò)展性ExtensionCustomResourceDefinitions提供服務(wù)治理功能,業(yè)務(wù)組件專注邏輯實(shí)現(xiàn)Service Mesh幫助微服務(wù)“減肥”流
9、量管理 故障處理 路由規(guī)則混合多個組件 微服務(wù)設(shè)施認(rèn)證授權(quán)三大功能:BuildServingEventingServerless廣泛應(yīng)用Knative 構(gòu)建函數(shù)運(yùn)算服務(wù)平臺函數(shù)化啟動速度容器鏡像大小占用內(nèi)存大小迷思之三: Java是否適應(yīng)云原?JDK AppCDS (Application Class-Data Sharing) 特性-Xshare:on-XX:+UseAppCDSSpringBoot on JDK11提升啟動速度AppCDSStartup timeoff2160mson1980ms啟動速度提升8.3%。一般應(yīng)用啟動速度能快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 應(yīng)用類加載Java 程序“靜態(tài)”化,“函數(shù)”化Quarkus 項(xiàng)目(官方給出的性能比較圖,分別為 傳統(tǒng)Java技術(shù)棧,Quarkus Java 和 Quarkus Native)如何減少運(yùn)行時內(nèi)存占用?REST數(shù)據(jù)服務(wù)性能比較方式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ī)范化技術(shù)Java EEMicroProfileOtherCDIConfigOpenAPIJAX-RSRest-ClientReactive StreamJPAMetricsReactive MessagingJSON-P / JSON-BFault ToleranceKeyCloakServletJWT SecurityCamelBean Validat
13、orVertxQuarkus技術(shù)棧核心組件和主要部件Quarkus ExtensionRestEasyUndertowHibernateBean ValidationNarayanaAgroalReactive SteamRest ClinetMetricsOpenAPIOpenSSLFault ToleranceQuarkus CoreGizmoJandexGraal SDKWeld ArcHotspotSubstrate利用 Graal 項(xiàng)目的 Substrate VM中 native- image 工具將 Java 應(yīng)用“轉(zhuǎn)換”為本 地代碼Java 原生程序編譯Compile提供Prov
14、ision組合AugmentJDK 虛擬 機(jī)運(yùn)行AOT 本地編譯運(yùn)行容 器鏡像在編譯時重寫 Java 代碼,使得程序 能夠被快速加載和啟動運(yùn)行能靜態(tài)初始化加載的盡量靜態(tài)構(gòu)造, 對原有的動態(tài)發(fā)現(xiàn)的進(jìn)行必要代碼重 寫需要考慮本地編譯的要求Quarkus 核心技術(shù)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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 測繪管理與法律法規(guī)-注冊測繪師《測繪管理與法律法規(guī)》名師預(yù)測卷1
- 課題申報(bào)參考:跨學(xué)科主題教學(xué)的價(jià)值、困境及出路研究
- 科技產(chǎn)品創(chuàng)新與安全生產(chǎn)的平衡
- 讀書助力職業(yè)發(fā)展-職場類書籍閱讀推廣方案
- 二零二四年幼兒早教中心品牌經(jīng)營許可及資產(chǎn)轉(zhuǎn)讓合同3篇
- 2025年貨運(yùn)飛機(jī)保險(xiǎn)合同
- 救生員勞務(wù)合同
- 2025年人教版(2024)九年級歷史上冊月考試卷含答案
- 2025年湘教版高三歷史下冊階段測試試卷含答案
- 2025年湘教版選修3歷史上冊階段測試試卷含答案
- 中央2025年國務(wù)院發(fā)展研究中心有關(guān)直屬事業(yè)單位招聘19人筆試歷年參考題庫附帶答案詳解
- 2024年09月北京中信銀行北京分行社會招考(917)筆試歷年參考題庫附帶答案詳解
- 外呼合作協(xié)議
- 小學(xué)二年級100以內(nèi)進(jìn)退位加減法800道題
- 保險(xiǎn)公司2025年工作總結(jié)與2025年工作計(jì)劃
- 2024年公司領(lǐng)導(dǎo)在新年動員會上的講話樣本(3篇)
- 眼科護(hù)理進(jìn)修專題匯報(bào)
- 介入手術(shù)室感染控制管理
- 2024北京初三(上)期末英語匯編:材料作文
- 2024年大型風(fēng)力發(fā)電項(xiàng)目EPC總承包合同
- 禮儀服務(wù)合同三篇
評論
0/150
提交評論