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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Serverless 解惑——函数计算如何访问 Mongo 数据库

發布時間:2025/3/20 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Serverless 解惑——函数计算如何访问 Mongo 数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

函數計算(Function Compute):函數計算 是事件驅動的全托管計算服務。使用函數計算,您無需采購與管理服務器等基礎設施,只需編寫并上傳代碼。函數計算為您準備好計算資源,彈性地可靠地運行任務,并提供日志查詢、性能監控和報警等功能。借助函數計算,您可以快速構建任何類型的應用和服務,并且只需為任務實際消耗的資源付費。

訪問 MongoDB 數據庫是指在函數計算中通過編寫代碼調用數據庫驅動庫通過 TCP 協議實現對數據庫進行的插入、查詢等操作。通常函數計算中運行的不同函數實例之間是不共享狀態的,對于結構化的數據可以通過數據庫的形式進行持久化以實現狀態共享。由于用戶函數運行在函數計算的 VPC 中,而用戶的數據庫運行在用戶所屬的 VPC 中,所以在函數計算平臺訪問數據庫會涉及到跨 VPC 訪問的場景,下面我們先來介紹一下其工作機制。

工作機制

訪問 MongoDB 的原理、工作機制與訪問 Mysql 數據庫完全相同,本文不再重復闡述,更詳細的內容請參考 訪問 Mysql 數據庫 中的工作機制章節。

配置與函數編寫

公共配置

創建專有網絡VPC

  • 登錄 VPC控制臺。
  • 參閱 VPC 搭建專有網絡 創建VPC和交換機。
  • 創建安全組

    在安全組控制臺 新建安全組,點擊 創建安全組,設置安全組名稱,網絡類型選擇 專有網絡,并選擇剛才創建的專有網絡。

    創建與配置 MongoDB 實例

  • 創建適合業務需求的云數據庫 MongoDB 版實例可以參考 云數據庫 MongoDB 版。

    注意:創建云數據庫 MongoDB 版實例需要選擇和函數計算配置相同的 VPC 實例,可以配置和函數計算不同的可用區的交換機,因為相同的 VPC 實例下不同可用區交換機內網是互通的。

  • 創建成功后,在實例信息頁面左側的導航欄中單擊白名單設置

  • 單擊 default 區域框右側的修改

  • 在彈出的對話框中,將函數計算所在的 VPC 網絡的網段地址配置在白名單輸入框中。

  • 登錄 VPC 控制臺,在專有網絡列表中找到應用所在的 VPC,單擊該 VPC 的名稱進入專有網絡詳情頁面。
  • 復制應用所在的 VPC 的 IPv4 網段
  • 組內白名單設置框中粘貼該 VPC 的 IPv4 網段地址,然后單擊確定
  • 最后訪問 MongoDB 數據庫 host 為實例的內網地址,可以登錄阿里云控制臺查看:

    多種語言的客戶端連接阿里云 MongoDB 可以參考 MongoDB 客戶端連接。

  • 函數計算配置 VPC

    注意:函數計算服務所在區域與公共配置中創建的資源所在區域一致。

  • 在 函數計算控制臺 創建服務。
    • 創建服務步驟請參考文章 服務的增刪改查
  • 【專有網絡配置】選項中,選擇您在步驟一中創建的 VPC 網絡,交換機、安全組。
  • 【權限配置】選項中,選擇【新建角色】,點擊【點擊授權】,在角色快速創建頁面,點擊【同意授權】。
    • 這步的操作是授予函數計算對 ENI 的操作權限,函數計算訪問 VPC 中資源需要的權限請參考文章 配置函數計算訪問 VPC 內的資源
  • 點擊確定,新建服務完畢。
  • ###函數編寫與調試
    下面演示 Python3 開發語言訪問 MongoDB 數據庫函數示例創建:

    使用 Fun 工具在建立存放代碼和依賴模塊目錄下安裝依賴和項目部署。

  • 建立一個目錄,用于存放代碼和依賴模塊,在該目錄下新建 template.yml 文件,例如 /tmp/code/template.yml,內容為:
  • ROSTemplateFormatVersion: '2015-09-01' Transform: 'Aliyun::Serverless-2018-04-03' Resources:MongoDB-test:Type: 'Aliyun::Serverless::Service'Properties:Description: This is MongoDB serviceRole: 'acs:ram::XXXX:role/fc-public-test'LogConfig:Project: XXXLogstore: XXXVpcConfig:VpcId: vpc-XXXXVSwitchIds:- vsw-XXXSecurityGroupId: sg-XXXXInternetAccess: truepython-test:Type: 'Aliyun::Serverless::Function'Properties:Handler: 'index.handler'Runtime: python3Timeout: 10MemorySize: 128CodeUri: './'
  • 在該目錄下創建 Funfile 文件內容為:
  • RUNTIME python3 RUN fun-install pip install pymongo
  • 執行fun install命令安裝依賴:$ fun install using template: template.yml start installing function dependencies without docker 安裝過程。。。。 Install Success
  • 在函數根目錄下新建代碼文件,例如 /tmp/code/index.py,在代碼中使用 pymongo :
  • # -*- coding: utf-8 -*- import uuid from pymongo import MongoClient def handler(event, context):CONN_ADDR1 = 'dds-XXX.mongodb.rds.aliyuncs.com:3717'CONN_ADDR2 = 'dds-XXXX.mongodb.rds.aliyuncs.com:3717'REPLICAT_SET = 'XXX'username = 'XXX'password = 'XXXX'#獲取mongoclientclient = MongoClient([CONN_ADDR1, CONN_ADDR2], replicaSet=REPLICAT_SET)#授權. 這里的user基于admin數據庫授權client.admin.authenticate(username, password)#使用test數據庫的collection:testColl做例子, 插入doc, 然后根據DEMO名查找demo_name = 'python-' + str(uuid.uuid1())print ('demo_name:'+ demo_name)doc = dict(DEMO=demo_name, MESG="Hello ApsaraDB For MongoDB")doc_id = client.test.testColl.insert(doc)for d in client.test.testColl.find(dict(DEMO=demo_name)):print ('find documents:'+ str(d))return 'success'
  • 使用 fun 工具部署:$ fun deploy using template: template.yml using region: cn-hangzhou using accountId: ***********3743 using accessKeyId: ***********Ptgk using timeout: 60部署過程。。。function python-test deploy success service MongoDB-test deploy success
  • 登錄控制臺,即可看到相關的服務、函數被創建成功,且觸發執行可以返回正確的結果。

    總結

    通過本文介紹可以快速實現函數計算訪問 Mongo 數據庫。

    使用函數計算帶來的優勢:

  • 無需采購和管理服務器等基礎設施,只需專注業務邏輯的開發,可以大幅縮短項目交付時間和人力成本;
  • 提供日志查詢、性能監控、報警等功能快速排查故障;
  • 免運維,毫秒級別彈性伸縮,快速實現底層擴容以應對峰值壓力,性能優異;
  • 成本極具競爭力;
  • 加入我們

    團隊介紹

    阿里云函數服務是一個全新的,支持事件驅動編程模式的計算服務。 他幫助用戶聚焦自身業務邏輯,以 Serverless的方式構建應用,快速的實現低成本,可擴展,高可用的系統,而無需考慮服務器等底層基礎設施的管理。 用戶能夠快速的創建原型,同樣的架構能隨業務規模平滑伸縮。讓計算變得更高效,更經濟,更彈性,更可靠。無論小型創業公司,還是大型企業,都受益其中。我們的團隊正在迅速擴張,求賢若渴。我們想尋找這樣的隊友:
    基本功扎實。既能閱讀論文追蹤業界趨勢,又能快速編碼解決實際問題。
    嚴謹的,系統化的思維能力。既能整體考慮業務機會,系統架構,運維成本等諸多因素,又能掌控設計/開發/測試/發布的完整流程,預判并控制風險。
    好奇心和使命感驅動。樂于探索未知領域,不僅是夢想家,也是踐行者。
    堅韌、樂觀、自信。能在壓力和困難中看到機會,讓工作充滿樂趣!
    如果您對云計算充滿熱情,想要構建一個有影響力計算平臺和生態體系,請加入我們,和我們一起實現夢想!

    職位描述

    構建新一代 Serverless 計算平臺,包括:

  • 設計和實現完整可擴展的前端系統,包括身份驗證/權限管理,元數據管理,流量控制,計量計費,日志監控等等
  • 設計和實現彈性可靠的后端系統,包括資源調度,負載均衡,容錯處理等等
  • 豐富易用的 SDK/Tools/CLI/控制臺
  • 用戶需求驅動,追蹤業界趨勢,利用技術推動業務的成長
  • 職位要求

  • 算法/數據結構/操作系統等基礎知識扎實,優秀的邏輯思維能力。
  • 至少掌握一門編程語言。例如 Java/Go/C/C#/C++。
  • 有大規模、高可用分布式系統開發經驗者優先。
  • 有 Web/Mobile Backends/Microservice 開發經驗者優先。
  • 良好的溝通能力和團隊合作精神,有一定的組織協調能力。
  • 本科及以上學歷
  • 3 年以上工作經驗
    通過“阿里巴巴編碼規范” 認證的同學優先錄取,認證地址:https://edu.aliyun.com/certification/cldt02
  • 簡歷提交

    yixian.dw AT alibaba-inc.com

    “阿里巴巴云原生技術圈關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦云原生流行技術趨勢、云原生大規模的落地實踐,做最懂云原生開發者的技術圈。”

    總結

    以上是生活随笔為你收集整理的Serverless 解惑——函数计算如何访问 Mongo 数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

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