V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  eudore  ›  全部回复第 1 页 / 共 8 页
回复总数  156
1  2  3  4  5  6  7  8  
1 天前
回复了 caola 创建的主题 Go 编程语言 怎么把全局共享修改为并发的
每次请求创建一次 proxyInfo 副本就好了,可以运行加上-race 参数测试并发问题。

或者把这些参数通过 newProxy 函数传递过去也行。

```go
func proxyRequestHandler() http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
pi := &proxyInfo{}
//不是 https 的请求
if r.TLS == nil {
_, err := pi.getHostConf(getHostName(r.Host))
if err != nil {
w.WriteHeader( http.StatusBadRequest)
w.Write([]byte(err.Error()))
return
}
}

pi.requestPath = r.URL.Path
pi.requestRawQuery = r.URL.RawQuery

requestHeader := make(map[string]string)
requestHeader["Referer"] = pi.targetUrl
requestHeader["User-Agent"] = r.Header.Get("User-Agent")
requestHeader["Accept"] = r.Header.Get("Accept")
pi.requestHeader = requestHeader

//反代
proxy, err := pi.newProxy()
if err != nil {
panic(err)
}

proxy.ServeHTTP(w, r)
}
}
```
我放 github 的 go 项目,按照单元测试报告一行行改就好了; go 没有 catry 不考虑,只要不是多进程功能基本都可以覆盖到。

在覆盖过程中,一些表达式错误和逻辑不可达都可以发现,简单错误都可以排除,剩下一般都是非代码逻辑错误。
2023-10-17 20:41:09 +08:00
回复了 sidewalkerLin 创建的主题 Kubernetes 求一份 k8s 运维工程师的日常工作的简历
k8s 运维的日常就是摸鱼等下班,完成生态建设后就没啥事了。
设置 node 亲和性指定 node1node2 ,优先调度到这两个机器上;设置 pod 反亲和性时同一个 deploy 的 pod 调度到不同的 node 上;在机器数量充足且 node12 在线时,就可以优先选择 node12 ,然后再被反亲分别放到两个 node 上;如果 node 数量不足或 node12 存在下线时会优先 1 个或 2 个 pod(两个亲和规则权重影响)在 node12 ,然后在分配到其他 node 或在同一个 node 上。
2023-09-04 13:40:07 +08:00
回复了 inSpring 创建的主题 程序员 求推荐低代码平台?
今天看到的: 《亚马逊终止低代码 Honeycode 服务》

https://www.infoq.cn/news/cJgNCmuqrkgdeXbj0aKe
2023-09-02 08:39:35 +08:00
回复了 guonaihong 创建的主题 Go 编程语言 高性能 websocket 库 quickws 发布
@guonaihong go get -v -u 已正常

一段 action 修改建议,使用 matrix 区分 arch ,另外 race 和 cover 可以一起测试,但是 covermode 有个值不支持。

```yaml
strategy:
max-parallel: 2
matrix:
go: [ '1.20']
arch: [amd64, 386]
name: Go-${{ matrix.go }} ${{ matrix.arch }}
env:
GOARCH: ${{ matrix.arch }}
steps:
- name: Run Tests
run: go test -v -timeout=1m -race -cover -coverprofile=coverage.out ./...
```
2023-09-01 19:46:45 +08:00
回复了 guonaihong 创建的主题 Go 编程语言 高性能 websocket 库 quickws 发布
稍微看了一下单元测试覆盖也就 66%,跑一下`go get -v github.com/antlabs/quickws ;CGO_ENABLED=1 go test -v -race github.com/antlabs/quickws`出现直接失败,堆栈太长 v2 粘不全。

```bash
[root@node1 tmp]# CGO_ENABLED=1 go test -v -race github.com/antlabs/quickws
=== RUN Test_DefaultCallback
=== RUN Test_DefaultCallback/local:_default_callback
fatal error: checkptr: pointer arithmetic result points to invalid allocation

goroutine 22 [running]:
runtime.throw({0x969273?, 0xc0001162d8?})
/usr/local/go1.20/src/runtime/panic.go:1047 +0x5d fp=0xc000093480 sp=0xc000093450 pc=0x46e7fd
runtime.checkptrArithmetic(0x930ae0?, {0x0, 0x0, 0x952406?})
/usr/local/go1.20/src/runtime/checkptr.go:69 +0xaa fp=0xc0000934b0 sp=0xc000093480 pc=0x43e68a
github.com/antlabs/wsutil/rsp.ClearRsp({0x9ff570?, 0xc0001162a0})
/root/go/src/github.com/antlabs/wsutil/rsp/rsp.go:19 +0x249 fp=0xc000093548 sp=0xc0000934b0 pc=0x86cb09
github.com/antlabs/quickws.upgradeInner({0x9ff570, 0xc0001162a0}, 0xc00011a500, 0xc0000803c0)
/root/go/src/github.com/antlabs/quickws/upgrade.go:76 +0x17a fp=0xc000093770 sp=0xc000093548 pc=0x87b4da
github.com/antlabs/quickws.Upgrade({0x9ff570, 0xc0001162a0}, 0x7fb16e226818?, {0xc0000938a0, 0x1, 0x0?})
/root/go/src/github.com/antlabs/quickws/upgrade.go:53 +0x225 fp=0xc0000937d8 sp=0xc000093770 pc=0x87b2e5
github.com/antlabs/quickws.Test_DefaultCallback.func1.1({0x9ff570, 0xc0001162a0}, 0x4a8297?)
/root/go/src/github.com/antlabs/quickws/callback_test.go:34 +0xfd fp=0xc0000938f8 sp=0xc0000937d8 pc=0x8b7d3d
net/http.HandlerFunc.ServeHTTP(0xc0000cc120, {0x9ff570, 0xc0001162a0}, 0x1?)
/usr/local/go1.20/src/net/http/server.go:2122 +0x4e fp=0xc000093928 sp=0xc0000938f8 pc=0x829fee
net/http.serverHandler.ServeHTTP({0xc00009f050?}, {0x9ff570, 0xc0001162a0}, 0xc00011a500)
/usr/local/go1.20/src/net/http/server.go:2936 +0x683 fp=0xc000093a50 sp=0xc000093928 pc=0x82d8a3
net/http.(*conn).serve(0xc0001321b0, {0x9ff960, 0xc00009ef30})
/usr/local/go1.20/src/net/http/server.go:1995 +0xbd5 fp=0xc000093fa0 sp=0xc000093a50 pc=0x8283f5
net/http.(*Server).Serve.func3()
/usr/local/go1.20/src/net/http/server.go:3089 +0x59 fp=0xc000093fe0 sp=0xc000093fa0 pc=0x82e559
runtime.goexit()
/usr/local/go1.20/src/runtime/asm_amd64.s:1598 +0x1 fp=0xc000093fe8 sp=0xc000093fe0 pc=0x4a5221
created by net/http.(*Server).Serve
/usr/local/go1.20/src/net/http/server.go:3089 +0x818
```
2023-08-28 12:56:03 +08:00
回复了 huage 创建的主题 Kubernetes 在 k8s 中如何实现 NGINX 的高可用?
在 k8s 环境下应该放弃使用 nginx 作为 http 入口,改使用 ingress 模式进行 http 反向代理,一些不常见配置 nginx 需求应该直接转移实现位置,nginx 和 Traefik 都是 ingress 的实现方式之一。

暴露 svc 地址就可以暴露 ip ,使用 loadbalance 或 nodeport ;另外一种是 daemonset+hostnetwrok 直接暴露 pod 端口 不推荐。
2023-01-27 22:21:44 +08:00
回复了 hub2008 创建的主题 Go 编程语言 Hugo 100w 文章生成
md 本身可以实现流式解析
2023-01-22 23:34:39 +08:00
回复了 GopherDaily 创建的主题 Go 编程语言 约束 GOMAXPROCS 带来的收益
没配置对,uber 有个库就可以根据 limit 去设置 maxprocs ,jvm 也有相识的内置参数。
2022-12-06 20:21:54 +08:00
回复了 lamesbond 创建的主题 Kubernetes 多环境下的 k8s 的 yaml 配置管理
首页集群配置是不允许开发修改,其次运维缺少标准化应用模板。

使用 git 作为版本工具保存 ci 模板和 helm 模板即可,项目使用{{git 组-git 名称}}二元组作为 cicd 唯一资源标识,根据项目的类型、语言、框架分类,cicd 配置打包和部署对每一类使用同一个模板,在 gitlab ci 一类项目引用同一个 ci 配置文件,在 k8s 部署一类项目使用同一个 helm 模板,这样将所有应用进行标准化配置,开发只需要提交代码就可以使用 cicd 自动打包部署,至于其他非应用项目固定写死就好了。

每一类应用的应用参数都是提前配置好的不需要动,同时也是一个团队的技术规范,如果不能标准化容器操作会比较累,如果收不了开发的生产部署权限建议润。
2022-12-04 14:45:26 +08:00
回复了 ericgui 创建的主题 程序员 全文搜索(full text search)有什么好一点的低成本解决方案?
postgress mysql 自带的倒排,或者用开源简化版的全文检索引擎。
2022-11-10 09:36:56 +08:00
回复了 isno 创建的主题 程序员 我最近在写作 《高可用服务体系最佳实践》, 过来看看?
不错 支持
2022-11-09 08:39:19 +08:00
回复了 godfunc 创建的主题 Kubernetes Pod 有两个容器,如果能让容器 A 可以使用容器 B 里面的命令
然后两个容器挂载同一个 hostpath ,打通存储启动时将二进制进去,修改 env PATH 就有命令。 如果不是静态二进制,尽量系统环境一样依赖一样,可以使用动态链接二进制。
2022-11-09 08:37:38 +08:00
回复了 godfunc 创建的主题 Kubernetes Pod 有两个容器,如果能让容器 A 可以使用容器 B 里面的命令
1 、要是一个静态二进制
2022-11-01 09:23:11 +08:00
回复了 Features 创建的主题 程序员 企业级的语言或框架
例如某个"企业生产级容器调度和管理"的项目
2022-10-11 16:20:18 +08:00
回复了 rophie123 创建的主题 Windows 求 Mac 换 Windows 笔记本推荐
战 66G5 14 寸 约 7200 块,32G 内存 3200MHz 低压 12 代 I7 1T 固态 雾面高色域 MX570 typec hdmi 双硬盘位,轻薄本 重量不足 1.5kg 内置散热拉跨。
2022-09-23 09:01:04 +08:00
回复了 impl 创建的主题 DevOps 作为 DevOps 工程师,你知道什么是 git workflow?
gitflow 就是基于 git 的工作流,定义代码从开发到上线整个流程中,分支的特性、合并、命名、上线等规范。
2022-09-02 08:41:35 +08:00
回复了 honmaple 创建的主题 Go 编程语言 忽然发现 Gin 的路由冲突被解决了
你注册顺序写反了,常量>变量>通配符 要按照优先级顺序倒着写就冲突了,冲突是从 httprouter 继承过来的祖传特性。
2022-07-21 16:21:28 +08:00
回复了 longmeier90 创建的主题 Go 编程语言 go 项目想用阿里云的容器服务 Kubernetes 搭建怎么样?
ack 仅是一个阿里云强化版的 k8s ,需要的东西一个少不少了,就算能偷懒效果也会打折。

ack 提供阿里云服务的接入功能,权限控制可以使用 k8s 自带的 rbac 和阿里云 arm 同时生效;服务器可以使用 ecs 一键加入集群;存储可以使用 ack 默认提供的 sc 使用云盘作为 pv ;服务可以使用阿里云 slb 作为 lb svc ;监控可以直接接入 arms ;日志接入 sls ;然后阿里云还有一个自带的 k8s 面板,功能我觉得比开源的好一些。

但是服务治理也需要自己去手动实现;应用需要手写 helm 去编排全部业务部署; cicd 需要自己接入; arms 监控需要应用实现 metrics 采集 go runtime 监控和自定义数据;日志虽然 sls 和采集标准输出,但是需要自己去定义日志规范和日志监控;链路追踪好像 arms 也可以用来存储,但是需要自己去框架层接入 otel(go 基本就这个),服务发现看选型 k8s svc 本身就不错,要是不用也需要自己去接入和维护;配置中心也可以使用 k8s cm 或自定义。
1  2  3  4  5  6  7  8  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   948 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 29ms · UTC 21:04 · PVG 05:04 · LAX 13:04 · JFK 16:04
Developed with CodeLauncher
♥ Do have faith in what you're doing.