TileDB云计算平台招聘高级Golang软件工程师

TileDB云计算平台招聘高级Golang软件工程师 TileDB 构建了一套产品组合,旨在赋能并加速处于医疗保健、地理空间分析及许多其他领域前沿的组织。

我们的 TileDB Cloud 服务提供了一套无服务器计算、数据管理和交互式计算工具(用户定义函数和任务图、访问控制和日志记录、托管笔记本等),旨在将 TileDB 库的优势带给组织规模的需求。

我们的开源 TileDB Embedded (https://github.com/TileDB-Inc/TileDB) 库提供了一个功能强大的存储和查询引擎,具有广泛的适用性,并特别关注多维数组。

我们正在推动的工作的一个例子是与 Rady 儿童医院新生儿基因测序项目的合作:使用 TileDB 以更低成本扩展基因组数据分析 - YouTube

完整描述和申请链接:高级 Golang 工程师 - TileDB, Inc.


职位描述

我们正在寻找一位高级 Go 工程师,帮助我们开发和维护 TileDB Cloud 产品 (https://tiledb.com/cloud)。您将加入一个不断壮大的团队,致力于改进 TileDB 的旗舰商业产品。您的主要职责将包括设计和实现新的功能集,例如高级访问控制策略、新的无服务器计算以及数据/计算货币化。您将帮助运行和维护我们基于 Kubernetes 和 AWS 构建的基础设施,并将其扩展到其他云提供商,如 Google Cloud、Microsoft Azure 和阿里云。这包括参与值班轮换。

工作地点

我们的总部位于美国马萨诸塞州剑桥市,在希腊雅典设有子公司。但是,只要您的居住地在美国或希腊,您就可以灵活地进行远程工作。美国候选人必须是美国公民,而希腊候选人必须是希腊或欧盟公民。

期望

在最初的 30 天内,您将熟悉 TileDB、TileDB Cloud 和我们的 Kubernetes 基础设施。30 天后,您将完全融入我们的团队。您将成为 TileDB Cloud 基础设施的积极贡献者和维护者,并准备好开始添加更多功能。

要求

  • 深入的 Golang 经验
  • 深入的 REST 服务设计经验
  • 拥有使用 Kubernetes 进行生产服务部署的经验
  • 拥有调试性能关键型应用程序的经验

优先条件

  • 具备 C/C++ 经验(例如,CGO)

福利

  • 有竞争力的薪水和股票期权
  • 100% 的医疗和牙科保险覆盖(为您和您的家属!)
  • 带薪育儿假
  • 带薪休假(假期、病假和公共假日)
  • 灵活的休假时间和工作时间
  • 远程工作的灵活性(美国或希腊的任何地方)

TileDB, Inc. 自豪地成为一家构建多元化和包容性团队的平等机会雇主。


更多关于TileDB云计算平台招聘高级Golang软件工程师的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于TileDB云计算平台招聘高级Golang软件工程师的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


这是一个非常吸引人的高级Golang职位,专注于构建和扩展TileDB Cloud的云原生基础设施。从技术角度看,这个职位要求工程师具备处理高性能、分布式系统的核心能力。以下是基于职位描述的技术分析:

核心技术栈分析:

  1. Golang深度开发:职位要求深入的Golang经验,考虑到TileDB Cloud处理的是多维数组数据和无服务器计算,工程师需要精通并发模式、性能优化和内存管理。
// 示例:TileDB Cloud可能涉及的并发数据处理模式
package main

import (
    "context"
    "sync"
    "time"
)

type ArrayProcessor struct {
    workers int
    queue   chan ArrayTask
    wg      sync.WaitGroup
}

type ArrayTask struct {
    ArrayURI string
    Query    map[string]interface{}
}

func (p *ArrayProcessor) Start(ctx context.Context) {
    for i := 0; i < p.workers; i++ {
        p.wg.Add(1)
        go p.worker(ctx, i)
    }
}

func (p *ArrayProcessor) worker(ctx context.Context, id int) {
    defer p.wg.Done()
    for {
        select {
        case task := <-p.queue:
            // 处理TileDB数组查询
            p.processArray(task)
        case <-ctx.Done():
            return
        }
    }
}

func (p *ArrayProcessor) processArray(task ArrayTask) {
    // 这里可能集成TileDB C++库通过CGO
    // 执行高性能数组计算
}
  1. REST API设计:需要设计支持多维数据查询和计算的API端点,可能涉及复杂的数据序列化和流式传输。
// 示例:TileDB Cloud风格的REST API处理器
package main

import (
    "encoding/json"
    "net/http"
    "github.com/gorilla/mux"
)

type QueryHandler struct {
    computeEngine ComputeEngine
}

func (h *QueryHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    var req QueryRequest
    if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
        http.Error(w, err.Error(), http.StatusBadRequest)
        return
    }
    
    // 执行TileDB查询
    result, err := h.computeEngine.ExecuteQuery(r.Context(), req)
    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
        return
    }
    
    // 流式传输结果
    w.Header().Set("Content-Type", "application/octet-stream")
    result.WriteTo(w)
}

type ComputeEngine interface {
    ExecuteQuery(ctx context.Context, req QueryRequest) (QueryResult, error)
}
  1. Kubernetes生产部署:基于Kubernetes的基础设施需要处理有状态服务(TileDB存储)和无服务器计算的混合部署。
// 示例:Kubernetes操作符风格的控制器
package main

import (
    "context"
    "fmt"
    v1 "k8s.io/api/core/v1"
    metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    "k8s.io/client-go/kubernetes"
)

type ServerlessController struct {
    k8sClient kubernetes.Interface
}

func (c *ServerlessController) ScaleFunction(ctx context.Context, functionName string, replicas int32) error {
    deployment, err := c.k8sClient.AppsV1().Deployments("tiledb-cloud").
        Get(ctx, functionName, metav1.GetOptions{})
    if err != nil {
        return fmt.Errorf("failed to get deployment: %v", err)
    }
    
    deployment.Spec.Replicas = &replicas
    _, err = c.k8sClient.AppsV1().Deployments("tiledb-cloud").
        Update(ctx, deployment, metav1.UpdateOptions{})
    return err
}
  1. CGO集成:优先条件中的C/C++经验表明需要与TileDB Embedded C++库深度集成。
// 示例:通过CGO调用TileDB C API
package main

/*
#include <tiledb/tiledb.h>
#include <stdlib.h>
*/
import "C"
import (
    "unsafe"
)

type TileDBContext struct {
    ctx *C.tiledb_ctx_t
}

func NewContext() (*TileDBContext, error) {
    var ctx *C.tiledb_ctx_t
    ret := C.tiledb_ctx_alloc(nil, &ctx)
    if ret != C.TILEDB_OK {
        return nil, fmt.Errorf("failed to create TileDB context")
    }
    return &TileDBContext{ctx: ctx}, nil
}

func (c *TileDBContext) Free() {
    C.tiledb_ctx_free(&c.ctx)
}

技术挑战:

  • 多维数组数据的高效序列化和网络传输
  • 无服务器计算任务的调度和资源隔离
  • 跨云提供商(AWS、GCP、Azure、阿里云)的部署一致性
  • 通过CGO与TileDB C++库的性能关键型集成
  • 基于Kubernetes的大规模状态管理

这个职位适合有分布式系统、云原生架构和高性能计算背景的Golang工程师。TileDB在基因组学和地理空间数据领域的应用也增加了技术复杂性,需要处理特定领域的数据模式和查询优化。

回到顶部