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 去访问的时候,结果是不一样的。

目录
相关文章
|
18天前
|
运维 监控 Cloud Native
一行代码都不改,Golang 应用链路指标日志全知道
本文将通过阿里云开源的 Golang Agent,帮助用户实现“一行代码都不改”就能获取到应用产生的各种观测数据,同时提升运维团队和研发团队的幸福感。
|
3月前
|
算法 安全 测试技术
golang 栈数据结构的实现和应用
本文详细介绍了“栈”这一数据结构的特点,并用Golang实现栈。栈是一种FILO(First In Last Out,即先进后出或后进先出)的数据结构。文章展示了如何用slice和链表来实现栈,并通过golang benchmark测试了二者的性能差异。此外,还提供了几个使用栈结构解决的实际算法问题示例,如有效的括号匹配等。
golang 栈数据结构的实现和应用
|
2月前
|
中间件 Go 数据处理
应用golang的管道-过滤器架构风格
【10月更文挑战第1天】本文介绍了一种面向数据流的软件架构设计模式——管道-过滤器(Pipe and Filter),并通过Go语言的Gin框架实现了一个Web应用示例。该模式通过将数据处理流程分解为一系列独立的组件(过滤器),并利用管道连接这些组件,实现了模块化、可扩展性和高效的分布式处理。文中详细讲解了Gin框架的基本使用、中间件的应用以及性能优化方法,展示了如何构建高性能的Web服务。
83 0
|
3月前
|
存储 监控 Go
面向OpenTelemetry的Golang应用无侵入插桩技术
文章主要讲述了阿里云 ARMS 团队与程序语言与编译器团队合作研发的面向OpenTelemetry的Golang应用无侵入插桩技术解决方案,旨在解决Golang应用监控的挑战。
|
4月前
|
存储 Prometheus 监控
Golang 搭建 WebSocket 应用(六) - 监控
Golang 搭建 WebSocket 应用(六) - 监控
45 3
|
4月前
|
人工智能 缓存 安全
Golang 搭建 WebSocket 应用(七) - 性能、可用性
Golang 搭建 WebSocket 应用(七) - 性能、可用性
57 1
|
4月前
|
人工智能 数据库连接 Go
Golang 搭建 WebSocket 应用(五) - 消息推送日志
Golang 搭建 WebSocket 应用(五) - 消息推送日志
42 1
|
4月前
|
人工智能 Go
Golang 搭建 WebSocket 应用(二) - 基本群聊 demo
Golang 搭建 WebSocket 应用(二) - 基本群聊 demo
45 1
|
4月前
|
人工智能 网络协议 应用服务中间件
Golang 搭建 WebSocket 应用(一) - 初识 gorilla/websocket
Golang 搭建 WebSocket 应用(一) - 初识 gorilla/websocket
192 1
|
4月前
|
Go 开发者