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
更多关于TileDB云计算平台招聘高级Golang软件工程师的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
这是一个非常吸引人的高级Golang职位,专注于构建和扩展TileDB Cloud的云原生基础设施。从技术角度看,这个职位要求工程师具备处理高性能、分布式系统的核心能力。以下是基于职位描述的技术分析:
核心技术栈分析:
- 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
// 执行高性能数组计算
}
- 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)
}
- 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
}
- 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在基因组学和地理空间数据领域的应用也增加了技术复杂性,需要处理特定领域的数据模式和查询优化。

