V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  monsterxx03  ›  全部回复第 2 页 / 共 24 页
回复总数  467
1  2  3  4  5  6  7  8  9  10 ... 24  
2021-04-09 21:17:52 +08:00
回复了 lrvinye 创建的主题 Kubernetes 关于 Bitnami 的 Helm Chart 持久化配置的几个疑惑
@lrvinye 为什么要挂在同一个 pv 下?即使不考虑 k8s,在裸机上部署,三个副本跑在三个机器上肯定也是三块硬盘啊,所以你需要三个 pv,statefulset 就是用 volumeClaimTemplate 动态生成对应的 pv
2021-04-09 16:11:39 +08:00
回复了 lrvinye 创建的主题 Kubernetes 关于 Bitnami 的 Helm Chart 持久化配置的几个疑惑
如果你说的是 bitnami 的 mongodb chart 的话, 理解有点问题.

mountPath 都是每个容器单独的, 每个副本用自己的 mountPath, 为啥要挂载在不同子目录?

这个 chart 有 standalone 和 replicaset 两种部署模式, existingClaim 只在 standalone 模式下有效, 此时只有一个 mongo 实例.

replicaset 模式下,多个 statefulset 的实例是用 volumeClaimTemplate 动态 provision pv 的.
2021-04-08 13:17:21 +08:00
回复了 Ptu2sha 创建的主题 程序员 觉得数据库不重要人 能找到高薪工作?
现在 v 站上的讨论真是鸡同鸭讲, 连个前提都没有, RDBMS 和 NoSQL 是一回事, OLTP 和 OLAP 是另一回事, 互联网业务里的 SQL 和 ERP 系统里的 SQL 又是另另一回事.
2021-04-07 17:51:11 +08:00
回复了 yayiji 创建的主题 问与答 at rest 在这个语境下是什么意思
encryption at rest 一般指文件加密后存储在磁盘上.
caseid 如果是 unique key,可以用 insert ignore
2021-03-25 17:35:46 +08:00
回复了 zhoudaiyu 创建的主题 Docker 想问问大家这两种方式进到 Docker 的容器中有啥区别吗?
@baiyi 用 cgo 倒没啥, 就没想到还能在 go runtime 启动前执行代码
2021-03-25 17:14:28 +08:00
回复了 zhoudaiyu 创建的主题 Docker 想问问大家这两种方式进到 Docker 的容器中有啥区别吗?
不是包的, 直接基于 syscall setns 实现的, 代码在 runc 里.

这里还个挺有意思的事情, go 里没法控制线程, 但是 setns 这个 syscall 必须在单线程环境下执行. runc 里用了个很 hack 的方式在 go runtime 启动前注入了一段 C 代码通过 pipe 来实现 https://github.com/opencontainers/runc/tree/master/libcontainer/nsenter

我是在 go 里调用 ptrace 这个 syscall 的时候遇到了一样的问题后, 才看到了 runc 的办法. go 做系统编程往底层还是有很多问题的.
2021-03-25 14:38:41 +08:00
回复了 zhoudaiyu 创建的主题 Docker 想问问大家这两种方式进到 Docker 的容器中有啥区别吗?
docker exec 是通过 docker daemon 的 api server 转发的, 可以认为 docker daemon 内部实现了 nsenter 的功能
2021-03-25 00:32:19 +08:00
回复了 omegatheta 创建的主题 云计算 请教 DigitalOcean 等 VPS 服务商的竞争优势
云计算是个规模效益很明显的行业,拼成本,拼价格,和大厂比基本没戏。如果是互联网公司,do 那点功能根本没眼看,要么上那几家大的,要么自建。会长期留在 do 的用户基本都是对 it 基础设施要求不高的公司,很难想象 do 能从这样的用户身上赚取高收益。专注为某个特定行业提供基础技术解决方案倒可能是个路子(直播,游戏等),aws 啥都有,但啥都不是最好的
2021-03-23 18:23:10 +08:00
回复了 whatisnew 创建的主题 问与答 像 tinder 探探 这一类的左滑右滑用户是怎么排除的呢?
一般是要提取用户特征, 比如 20 ~ 25 岁, 男性, 注册 7 天内, 爱好 xxx, 根据特征预计算出成百上千个 segment, 用户匹配的时候根据自己的特征去不同的 segment 里抽用户, 选择不喜欢, 可能只是在 userA->userB 的关系里记录一个负权重.
怎么及时得更新 user segment, 用户关系怎么存储都是个技术活, 高度取决于产品和运营策略.
sql not in 这种属于学生作业级别操作...有用户量的社交产品不可能这么高
2021-03-11 16:48:47 +08:00
回复了 zxCoder 创建的主题 数据库 关于数据库的“脏写”定义
@v2exblog 只谈 MySQL 的话, 默认配置下也不会发生有脏读, 除非自己把 isolation level 设置成 read uncomitted. 完整解释很麻烦, 看看 isolation level 相关的文章吧.
2021-03-11 16:38:40 +08:00
回复了 Aphsss 创建的主题 问与答 openshift 中的 s2i 和 docker 官方的多阶段构建有啥区别
从结果看没什么区别, 它主要是为了一些流程上的安全考虑.

s2i 从一个 base image 启动后直接注入代码,启动成一个 container 再 commit 成一个新的 image, 它只能在 base image 上加一层. 用 s2i 没法像 dockerfile 一样在 image 里执行任意命令,装任何东西, 只能把代码拷贝进去.

base image 可能由权限更高的人制作(还是用 docker build 一类工具), 开发就用 s2i 执行一个打包操作, 任何和 base image 相关的变更自己没法做.

不是对流程卡得非常严的场景使用意义不大.
2021-03-11 12:25:49 +08:00
回复了 zxCoder 创建的主题 数据库 关于数据库的“脏写”定义
额, 一定要说定义的话, 第二个例子里, 如果第二次提交后最终结果是第一次的结果, 那应该算脏写.

不过纠结一个事实上不存在的操作意义不大, 关注下脏读的条件还有点用.
2021-03-11 12:03:02 +08:00
回复了 zxCoder 创建的主题 数据库 关于数据库的“脏写”定义
满足 ACID 的 RDBMS 就不会有脏写, 你说的那个例子, 如果修改的是同一条数据, update 会上 exclusive lock, 第二次 update 会直接停在那, 第一次 update rollback, 第二次 update commit, 不会 roll back.
@zhoudaiyu 还有一个办法是启动一个 pod, nodeSelector 设置到你目标 pod 的节点上, 这个 pod 设置

hostPID: true,
securityContext:
privileged: true

这样可以取到目标节点上所有进程, 写过一个 shell 脚本做类似的事情, 没法直接用, 可以参考下 https://github.com/monsterxx03/kube-pyflame/blob/master/kubectl-pyflame
是想临时用一些工具 debug 主进程又不想重做 base image ?

把工具单独打一个镜像, 用 sidecar container 就行了,需要设置 shareProcessNamespace, https://kubernetes.io/docs/tasks/configure-pod-container/share-process-namespace/
2021-03-08 14:23:10 +08:00
回复了 nagatoism 创建的主题 程序员 用 redis 做分布式锁这种骚操作是怎么流行起来的?
有效讨论: 用 xxx 的问题在哪, yyy 在 zzz 的场景下比 xxx 强在哪里.
无效讨论: xxx 垃圾

回到用 redis 做锁的问题, 如果是单机 redis 用 setnx 做一个中心试锁, 在可用性要求不是特别极端的业务里未尝不可, 毕竟很多人运维的分布式系统未必有单机靠谱...

redlock 算法争议一直有, 我是不建议用的, 印象里这个算法的争议在于依赖系统时间的一致性. 比较严谨的分布式系统一般会用 Lamport timestamp 做逻辑时间(实现上就是一个单调递增的 counter).
2021-03-06 22:30:26 +08:00
回复了 chenqh 创建的主题 Go 编程语言 关于 golang 内存的问题
10M 左右对 go 来说并不多.

就你这个程序, 我尝试编译跑了一下, 一个目录里只有两个文件, 无新写入, 内存占用在 7M 左右
用 pmap 看了下, 3M 多是从 binary 里映射出来的 (不用 urfave/cli 估计能少 2M). go 的 gc 要等到 heap 增长到一定 size 才会触发

GODEBUG=gctrace=1 ./gtail --pattern xxx

可以看到 log:

gc 1 @164.953s 0%: 0.055+0.85+0.016 ms clock, 0.44+0.50/0.67/0.21+0.13 ms cpu, 4->4->0 MB, 5 MB goal, 8 P

在程序运行 164s 后触发了第一次 gc, 回收了 4M 的 heap 内存, 但你看到的 rss 并不会直接减少, runtime 会复用这段内存, 所以最后 rss 稳定在 7M 多.

python 跑一个没任何变量分配的死循环也要占用 7M 多, go 不到 1M. 你没给出 python 的代码, 不好说.

并没有 go 一定比 python 省内存这种说法, 完全取决于你的 workload, python 的引用计数+mark&seep 方式, 在简单代码里完全可能比 go 的 gc 省内存.
1  2  3  4  5  6  7  8  9  10 ... 24  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5065 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 29ms · UTC 01:15 · PVG 09:15 · LAX 18:15 · JFK 21:15
Developed with CodeLauncher
♥ Do have faith in what you're doing.