日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

通过google app engine 在google cloud 部署支持quic的Java web 应用(多种方式)

發布時間:2024/4/11 java 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过google app engine 在google cloud 部署支持quic的Java web 应用(多种方式) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

quic最先是由google提出并完善的,18年google cloud支持了quic協議,我嘗試在google上部署一套自己的應用,并使其支持quic協議

google的文檔還是非常完善的,只是類似的文檔有點多反而不好選擇了。在部署過程中遇到不少問題,都會在博客里記錄下來,最后會把自己成功部署的操作分享出來

google app engine

在以提供物理資源為目的的 IaaS ( Infrastructure as a Service )領域里, Amazon EC2是當之無愧的領先者。而在以提供平臺為目標的 PaaS( Platform as a Service)領域里, Google App Engine 的美譽度是非常高的。

Google App Engine(GAE) 是 Google 的平臺即服務(PaaS)產品,允許開發人員和企業使用 Google 的高級基礎架構構建和運行應用程序,并自動根據應用所承受的負載來對應用進行擴展,免去用戶對應用和服務器等的維護工作。

Google App Engine: Java版應用服務器和Python版基本一致,也是基于標準的Java Web容器,而且選用了輕量級的Jetty技術,并跑在Java 6上。

簡單來說, Amazon EC2只是提供了最基礎的虛擬機器,需要什么我們都要自己在上面安裝部署。
而Google App Engine 提供的是平臺服務,它幫我們封裝了很多操作命令以便開發者快速進行部署,比方說實例的維護和擴容,自動將web應用部署在web服務器里等 。

部署spring-boot應用到google cloud (app engine)

一開始按照google的文檔嘗試了多次,但是最后都沒有部署成功,有的部署成功了但是無法正常訪問,最后按照文檔提供的官方示例成功部署了
代碼示例
java-docs-samples/appengine-java8/springboot-helloworld

1. 下載Google Cloud SDK

https://cloud.google.com/sdk/docs/install

安裝成功后雙擊Google Cloud Shell啟動,按照上面的提示操作

  • gcloud init: 初始化cloud sdk
  • 初始化后會咨詢你是否需要選擇部署區域,根據自己的需要選擇即可

2.在當前的google cloud項目里創建一個app engine 應用

gcloud app create

3.創建自己的app engine 項目

項目的創建方式和普通的spring-boot項目一樣(我部署的是war包),創建完成后需要修改如下配置:

1) 在pom.xml添加 App Engine Maven插件

<plugin><groupId>com.google.cloud.tools</groupId><artifactId>appengine-maven-plugin</artifactId><version>2.2.0</version><configuration><!--你在google cloud創建的項目id--><projectId>myProjectId</projectId><!--GCLOUD_CONFIG表示自增長的App Engine版本,也可以用具體的版本號來代替--><version>GCLOUD_CONFIG</version></configuration> </plugin>

2) 添加app engine配置文件

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0"><threadsafe>true</threadsafe><runtime>java8</runtime> </appengine-web-app>
  • 啟動和部署應用
  • 本地運行: mvn package appengine:run
    部署到google cloud: mvn package appengine:deploy
    部署成功后可以看到如下日志信息:

    app engine其他部署方式

    除了前面成功的部署,我還嘗試過使用其他辦法部署,有的一開始沒有成功,不過多次嘗試后最終也都成功了,記錄一下, 在部署期間還是有一些小問題,如果有人能幫忙解答下就更好了

    通過Google Cloud SDK 部署

    參照的文檔如下:
    使用入門:設置開發環境

  • 安裝Google Cloud SDK和App Engine Java 組件
  • 向賬戶授權 gcloud auth application-default login
  • 創建新目錄,并初始化新的app-engine應用
  • mvn archetype:generate -Dappengine-version=1.9.59 -Djava8=true -DCloudSDK_Tooling=true -Dapplication-id=quic-test-303806
  • 在pom.xml中添加插件
  • <plugin><groupId>com.google.cloud.tools</groupId><artifactId>appengine-maven-plugin</artifactId><version>2.2.0</version><configuration><projectId>your-project-ID</projectId><version>1</version></configuration></plugin>
  • 添加對應的配置文件,在src/main/appengine/app.yaml 目錄下:
  • # 不知道為什么不能使用Java8,部署的時候會報錯: # Cannot process application with runtime: java8 - runtime: java11
  • 需要使用jar包的方式部署,指定main-class
  • <plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><mainClass>com.xx.xx.App</mainClass></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin>

    否則會報如下錯誤:

    通過IDEA Cloud Code插件部署(標準環境)

    參考文檔:創建適用于 App Engine 標準環境的應用

  • 安裝IDEA Cloud Code插件 File > Settings > Plugins, 安裝完成后重啟idea
  • 創建新項目,使用 App Engine 標準環境 (我第一次安裝Cloud Code插件后其創建頁面并不是這樣的,后面的項目部署也不成功,我也不知道為什么,卸載插件后重新安裝就ok了,具體的錯誤信息我列在最后了)

    3.點擊項目右鍵 添加框架支持(Add Framework Support) 這里我已經在創建項目的時候使用了Google App Engine Standard,所以就不需要再添加了,我只是添加了一個maven的框架支持
  • 項目的pom.xml如下 ,就是正常maven項目的配置:

    <properties><spring.boot.version>1.4.3.RELEASE</spring.boot.version><jdk.version>1.8</jdk.version></properties><packaging>war</packaging><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring.boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>19.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><encoding>${file.encoding}</encoding><source>${jdk.version}</source><target>${jdk.version}</target><showWarnings>true</showWarnings></configuration></plugin><plugin><artifactId>maven-war-plugin</artifactId><version>2.6</version><configuration><failOnMissingWebXml>false</failOnMissingWebXml></configuration></plugin></plugins><finalName>quic</finalName></build>
  • 啟動項目,有如下報錯提示:

    于是我修改了項目生成時的appengine-web.xml的文件位置,改為src\main\webapp\WEB-INF\appengine-web.xml 目錄下,再次運行就可以成功部署了
  • 怎么使應用支持quic協議

    部署完應用之后,可以在App Engine的管理頁面里看到對應的版本和實例信息

    接下來就需要部署對應的外部Https負載均衡器,配置頁面
    https://console.cloud.google.com/net-services/loadbalancing/

    配置對應的后端: 類型選擇 無服務器網絡端點組,協議選擇HTTPS (這里配置的就是我之前部署的springboot項目)

    配置前端: 開啟quic, 協議選擇https, 添加證書,這里的ip是自動生成的
    證書的申請在另一篇博客里都有說明:不花一分錢申請免費域名和ssl證書

    配置完成后就可以通過域名進行訪問了

    除了通過app engine部署應用(app engine會幫助我們自動擴縮容,所以就不需要搭建應用集群了),還可以使用原始的實例來部署,感興趣的可以參考以下文章: 如何在Google Cloud上創建負載均衡器?

    部署一個實例組,然后創建指向該實例組的負載均衡器。

    最后的問題

    部署成功后,訪問域名發現目前google cloud只能支持h3-Q050等協議,不能支持h3-29

    部署踩坑

    在使用Idea的Cloud Code插件部署項目時,一開始安裝插件后其新建Google App Engine項目的頁面和文檔的不太一樣,創建后的項目部署起來也總是有問題

    使用Flexible 柔性環境部署后會訪問項目會出現如下提示:

    500 Server Error\br Error: Server Error The server encountered an error and could not complete your request. If the problem persists, please report your problem and mention this error message and the query that caused it.

    在google cloud的控制臺觀察其實例也發現其及其不穩定,經常處理健康檢查失敗的狀態

    后面就嘗試使用了標準環境來部署,部署后的實例狀態看上去到是正常,但是在通過google 部署后提供的域名訪問應用的時候一直提示404

    最后我是通過卸載插件并重新安裝插件重啟IDEA 解決了這個問題

    參考資料:

    外部 HTTP(S) 負載平衡概覽

    總結

    以上是生活随笔為你收集整理的通过google app engine 在google cloud 部署支持quic的Java web 应用(多种方式)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。