golang Iris 运行多个应用

本文涉及的产品
.cn 域名,1个 12个月
简介: golang Iris 运行多个应用

文章介绍了如何使用Iris框架在同一台服务器上同时运行多个独立应用,分别监听不同端口,并通过域名进行区分。通过`recover`中间件处理错误,并展示了通过`Switch`功能绑定不同域名到对应应用实例的方法。

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

在 Iris 里面,提供了一种方式可以让我们同时运行多个应用:

这里说的应用只是一个 Iris 框架实例,这个实例可以有完全不同的路由定义、中间件等。

不同端口不同应用

package main

import (
    "log"
    "net/http"
    "time"

    "github.com/kataras/iris/v12"
    "github.com/kataras/iris/v12/middleware/recover"

    "golang.org/x/sync/errgroup"
)

var g errgroup.Group

func startApp1() error {
    app := iris.New().SetName("app1")
    app.Use(recover.New())
    app.Get("/", func(ctx iris.Context) {
        ctx.JSON(iris.Map{
            "code":  iris.StatusOK,
            "message": "Welcome server 1",
        })
    })

    app.Build()
   return app.Listen(":8080")
}

func startApp2() error {
    app := iris.New().SetName("app2")
    app.Use(recover.New())
    app.Get("/", func(ctx iris.Context) {
        ctx.JSON(iris.Map{
            "code":  iris.StatusOK,
            "message": "Welcome server 2",
        })
    })

    return app.Listen(":8081")
}

func main() {
    g.Go(startApp1)
    g.Go(startApp2)

    if err := g.Wait(); err != nil {
        log.Fatal(err)
    }
}

在这个例子中,我们监听了两个端口 80808081,我们可以通过这两个端口来访问这两个应用。

不同域名不同应用

这个就有点类似于 nginx 了,同一个端口可以同时监听多个域名的请求:

package main

import (
  "github.com/kataras/iris/v12"
  "github.com/kataras/iris/v12/apps"
  "github.com/kataras/iris/v12/middleware/recover"
)

func main() {
  app3 := iris.New().SetName("app3")
  app3.Use(recover.New())
  app3.Get("/", func(ctx iris.Context) {
    ctx.WriteString("ha3")
  })

  app4 := iris.New().SetName("app4")
  app4.Use(recover.New())
  app4.Get("/", func(ctx iris.Context) {
    ctx.WriteString("ha4")
  })

  switcher := apps.Switch(apps.Hosts{
    apps.Host{
      Pattern: "app3.local",
      Target:  app3,
    },
    apps.Host{
      Pattern: "app4.local",
      Target:  app4,
    },
  })
  switcher.Listen(":9010")
}

在这个例子中,监听了 9010 端口,但是通过 app3.localapp4.local 去访问的时候,结果是不一样的。

目录
相关文章
|
17天前
|
存储 监控 Go
面向OpenTelemetry的Golang应用无侵入插桩技术
文章主要讲述了阿里云 ARMS 团队与程序语言与编译器团队合作研发的面向OpenTelemetry的Golang应用无侵入插桩技术解决方案,旨在解决Golang应用监控的挑战。
|
1月前
|
存储 Prometheus 监控
Golang 搭建 WebSocket 应用(六) - 监控
Golang 搭建 WebSocket 应用(六) - 监控
31 3
|
1月前
|
人工智能 缓存 安全
Golang 搭建 WebSocket 应用(七) - 性能、可用性
Golang 搭建 WebSocket 应用(七) - 性能、可用性
34 1
|
1月前
|
人工智能 数据库连接 Go
Golang 搭建 WebSocket 应用(五) - 消息推送日志
Golang 搭建 WebSocket 应用(五) - 消息推送日志
20 1
|
1月前
|
人工智能 Go
Golang 搭建 WebSocket 应用(二) - 基本群聊 demo
Golang 搭建 WebSocket 应用(二) - 基本群聊 demo
26 1
|
1月前
|
人工智能 网络协议 应用服务中间件
Golang 搭建 WebSocket 应用(一) - 初识 gorilla/websocket
Golang 搭建 WebSocket 应用(一) - 初识 gorilla/websocket
35 1
|
20天前
|
Go 开发者
|
1月前
|
Prometheus 监控 Cloud Native
性能监控之 Golang 应用接入 Prometheus 监控
【8月更文挑战第4天】性能监控之 Golang 应用接入 Prometheus 监控
88 0
性能监控之 Golang 应用接入 Prometheus 监控
|
2月前
|
Serverless Go C语言
函数计算产品使用问题之如何在Golang运行时环境中解决glibc依赖问题
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
1月前
|
人工智能 安全 Go
Golang 搭建 WebSocket 应用(八) - 完整代码
Golang 搭建 WebSocket 应用(八) - 完整代码
29 0