为了账号安全,请及时绑定邮箱和手机立即绑定

在 gcp 云功能中使用 gorillamux

在 gcp 云功能中使用 gorillamux

Go
慕容森 2022-06-21 09:53:01
我是新手Go,GCP所以我可能无法提供所有细节。但会尝试分享我所拥有的。我已经使用 docker 设置了一个小型微服务。docker-compose 文件运行我的main方法,该方法通过gorrillamux...注册 http 处理程序,它按预期工作。这是示例代码func main() {    r := gorrilamux.NewRouter()    r.HandleFunc("/stores/orders/{orderID}/status", handler).Methods("GET")    http.Handle("/", r)    fmt.Printf("%+v", http.ListenAndServe(":8080", nil))}func handler(w http.ResponseWriter, r *http.Request) {    fmt.Println("------ in handler!!!")}使用此代码,我可以在完成后调用我的服务docker-compose -up。我对此感到困惑的是,我将如何使用这个 gorrilla mux 在 goocle 云功能中路由我的呼叫?根据我的理解,对于 GCP CF,我会告诉入口点是什么方法,即,gcloud functions deploy service-name <removing_other_details> --entry-point handler每当handler收到每个请求时都会调用它,它不会是ListenandServce. 那么我该如何使用gorillamux呢?我最终想要做的是从传入请求中提取路径变量。一种方法是使用字符串操作并从request对象中获取路径变量。但这可能容易出错。所以我想我是否可以使用 gorilla mux 来处理这些事情。有任何想法吗
查看完整描述

2 回答

?
largeQ

TA贡献2039条经验 获得超8个赞

Google Cloud Functions 用于执行基于触发器(如 HTTP 或另一个 GCP 服务器到服务器触发器)的单一用途函数。你的 go 服务看起来更像是一个 HTTP 服务器,而不是一个单一的函数。

如果你想用 Cloud Functions 建立一个微服务架构,你要做的是创建一堆不同的函数,主要由 HTTP 触发(每个函数都会自动分配不同的 HTTP 地址),然后从你的应用程序中调用它们而不需要任何外部 HTTP 路由器。

如果您想拥有一个分布式微服务(每个服务共享相同的 URL,但在 URL 中具有不同的端点),您需要查看可以在其中部署服务器的Appengine 。您可以使用教程开始使用 Google Appengine


查看完整回答
反对 回复 2022-06-21
?
呼如林

TA贡献1798条经验 获得超3个赞

除了 PoWar 答案,我建议您使用 Cloud Run 而不是 App Engine。Cloud Run 在与 Cloud Functions 相同的底层基础架构上运行,并且许多功能相似。

此外,Cloud Run 使用容器,这是当前最流行的打包应用程序的最佳实践之一。您可以Dockerfile文档中使用这样的标准,然后使用 docker 构建。或者 Cloud Build,如果你还没有安装 docker

gcloud builds submit -t gcr.io/PROJECT_ID/containerName

或者,如果您不想编写或自定义您的 alpha 功能,您甚至可以使用Dockerfile,这是基于 buildpack

gcloud alpha builds submit --pack=image=gcr.io/PROJECT_ID/containerName

然后在 Cloud Run 上部署您的映像

gcloud run deploy --image=gcr.io/PROJECT_ID/containerName --platform=managed --region=yourRegion myService



查看完整回答
反对 回复 2022-06-21
  • 2 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号