开发函数计算的正确姿势——运行 Selenium Java
前言
首先介紹下在本文出現(xiàn)的幾個(gè)比較重要的概念:
函數(shù)計(jì)算(Function Compute): 函數(shù)計(jì)算是一個(gè)事件驅(qū)動(dòng)的服務(wù),通過(guò)函數(shù)計(jì)算,用戶(hù)無(wú)需管理服務(wù)器等運(yùn)行情況,只需編寫(xiě)代碼并上傳。函數(shù)計(jì)算準(zhǔn)備計(jì)算資源,并以彈性伸縮的方式運(yùn)行用戶(hù)代碼,而用戶(hù)只需根據(jù)實(shí)際代碼運(yùn)行所消耗的資源進(jìn)行付費(fèi)。函數(shù)計(jì)算更多信息參考。
Fun: Fun 是一個(gè)用于支持 Serverless 應(yīng)用部署的工具,能幫助您便捷地管理函數(shù)計(jì)算、API 網(wǎng)關(guān)、日志服務(wù)等資源。它通過(guò)一個(gè)資源配置文件(template.yml),協(xié)助您進(jìn)行開(kāi)發(fā)、構(gòu)建、部署操作。Fun 的更多文檔參考。
備注: 本文介紹的技巧需要 Fun 版本大于等于 2.10.2。
依賴(lài)工具
本項(xiàng)目是在 MacOS 下開(kāi)發(fā)的,涉及到的工具是平臺(tái)無(wú)關(guān)的,對(duì)于 Linux 和 Windows 桌面系統(tǒng)應(yīng)該也同樣適用。在開(kāi)始本例之前請(qǐng)確保如下工具已經(jīng)正確的安裝,更新到最新版本,并進(jìn)行正確的配置。
- Docker
- Fun
- Fcli
Fun 和 Fcli 工具依賴(lài)于 docker 來(lái)模擬本地環(huán)境。
對(duì)于 MacOS 用戶(hù)可以使用 homebrew 進(jìn)行安裝:
brew cask install docker brew tap vangie/formula brew install fun brew install fcliWindows 和 Linux 用戶(hù)安裝請(qǐng)參考:
安裝好后,記得先執(zhí)行 fun config 初始化一下配置。
注意, 如果你已經(jīng)安裝過(guò)了 fun,確保 fun 的版本在 2.10.2 以上。
$ fun --version 2.10.1快速開(kāi)始
初始化
使用 fun init 命令可以快捷地將本模板項(xiàng)目初始化到本地。
fun init vangie/selenium-java-example安裝依賴(lài)
$ fun install ...本地測(cè)試
測(cè)試代碼 ChromeDemo 的內(nèi)容為:
public class ChromeDemo implements StreamRequestHandler {public void handleRequest(InputStream inputStream,OutputStream outputStream,Context context) throws IOException {System.setProperty("webdriver.chrome.driver", "/code/chromedriver");ChromeOptions options = new ChromeOptions();options.setBinary("/code/headless-chromium");options.addArguments("--disable-extensions"); // disabling extensionsoptions.addArguments("--disable-gpu"); // applicable to windows os onlyoptions.addArguments("--disable-dev-shm-usage"); // overcome limited resource problemsoptions.addArguments("--no-sandbox"); // Bypass OS security modeloptions.addArguments("--headless");WebDriver driver = new ChromeDriver(options);driver.get("https://ide.fc.aliyun.com");outputStream.write(("Page title is: " + driver.getTitle() + "\n").getBytes());driver.quit();}}本地運(yùn)行
$ mvn package && fun local invoke selenium ... FC Invoke Start RequestId: 68c83b4c-b053-479c-9b0e-9503582ccb56 handle user request is com.aliyun.fc.selenium.ChromeDemo::handleRequest cache is null! Starting ChromeDriver 2.35.528139 (47ead77cb35ad2a9a83248b292151462a66cd881) on port 20652 Only local connections are allowed. Mar 05, 2019 11:34:27 AM org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Detected dialect: OSS Page title is: 云端集成開(kāi)發(fā)環(huán)境 FC Invoke End RequestId: 68c83b4c-b053-479c-9b0e-9503582ccb56RequestId: 68c83b4c-b053-479c-9b0e-9503582ccb56 Billed Duration: 5265 ms Memory Size: 1998 MB Max Memory Used: 240 MB部署
$ mvn package && fun deploy執(zhí)行
$ fcli function invoke -s chrome -f seleniumPage title is: 云端集成開(kāi)發(fā)環(huán)境關(guān)于文件尺寸
由于 chromedriver 和 headless-chromium 壓縮后體積已經(jīng)非常接近 50MB,留給用戶(hù) Jar 的空間非常少,所以另外制作了一個(gè)高壓縮比版本,使用壓縮比更高的 brotli 算法進(jìn)行壓縮,壓縮后的大小為 32.7MB。然后在運(yùn)行時(shí)使用 initializer 進(jìn)行解壓,解壓耗時(shí)大約為 3.7 S。https://github.com/vangie/packed-selenium-java-example
參考閱讀
加入我們
團(tuán)隊(duì)介紹
阿里云函數(shù)服務(wù)是一個(gè)全新的,支持事件驅(qū)動(dòng)編程模式的計(jì)算服務(wù)。 他幫助用戶(hù)聚焦自身業(yè)務(wù)邏輯,以 Serverless的方式構(gòu)建應(yīng)用,快速的實(shí)現(xiàn)低成本,可擴(kuò)展,高可用的系統(tǒng),而無(wú)需考慮服務(wù)器等底層基礎(chǔ)設(shè)施的管理。 用戶(hù)能夠快速的創(chuàng)建原型,同樣的架構(gòu)能隨業(yè)務(wù)規(guī)模平滑伸縮。讓計(jì)算變得更高效,更經(jīng)濟(jì),更彈性,更可靠。無(wú)論小型創(chuàng)業(yè)公司,還是大型企業(yè),都受益其中。我們的團(tuán)隊(duì)正在迅速擴(kuò)張,求賢若渴。我們想尋找這樣的隊(duì)友:
基本功扎實(shí)。既能閱讀論文追蹤業(yè)界趨勢(shì),又能快速編碼解決實(shí)際問(wèn)題。
嚴(yán)謹(jǐn)?shù)?#xff0c;系統(tǒng)化的思維能力。既能整體考慮業(yè)務(wù)機(jī)會(huì),系統(tǒng)架構(gòu),運(yùn)維成本等諸多因素,又能掌控設(shè)計(jì)/開(kāi)發(fā)/測(cè)試/發(fā)布的完整流程,預(yù)判并控制風(fēng)險(xiǎn)。
好奇心和使命感驅(qū)動(dòng)。樂(lè)于探索未知領(lǐng)域,不僅是夢(mèng)想家,也是踐行者。
堅(jiān)韌、樂(lè)觀、自信。能在壓力和困難中看到機(jī)會(huì),讓工作充滿(mǎn)樂(lè)趣!
如果您對(duì)云計(jì)算充滿(mǎn)熱情,想要構(gòu)建一個(gè)有影響力計(jì)算平臺(tái)和生態(tài)體系,請(qǐng)加入我們,和我們一起實(shí)現(xiàn)夢(mèng)想!
職位描述
構(gòu)建新一代 Serverless 計(jì)算平臺(tái),包括:
職位要求
簡(jiǎn)歷提交
yixian.dw AT alibaba-inc.com
“阿里巴巴云原生技術(shù)圈關(guān)注微服務(wù)、Serverless、容器、Service Mesh 等技術(shù)領(lǐng)域、聚焦云原生流行技術(shù)趨勢(shì)、云原生大規(guī)模的落地實(shí)踐,做最懂云原生開(kāi)發(fā)者的技術(shù)圈。”
總結(jié)
以上是生活随笔為你收集整理的开发函数计算的正确姿势——运行 Selenium Java的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Serverless 解惑——函数计算如
- 下一篇: 回顾 | Kubernetes SIG-