V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  lvlongxiang199  ›  全部回复第 4 页 / 共 6 页
回复总数  107
1  2  3  4  5  6  
为楼主独立思考, 没有盲从微服务点个赞

按我的理解, 微服务为了解决单体搭便车上线翻车的问题.
单体的时代, 所有人的代码都跑在一个进程里, 你要上线的功能可能跟别人上线的功能跑在一个进程里头, 一般情况下上线完后, 如果出现异常情况, 运维会选择直接回滚, 如果别人的改动导致了回滚, 也可能会使你的那部分功能回滚. 不搭便车的话, 那就得一个功能一个功能的上线.
切分了微服务, 如果你跟别人改的服务没有相交, 可以同时上线, 即使他翻车了, 也只会回滚他的服务, 不会影响到你

当然在单体里头加 feature flag 也能避免搭便车翻车的情况, 有异常情况, 就直接禁用掉那部分功能

业务复杂并不是拆分微服务的充分条件, gitlab 业务也算复杂(工单管理, code review) 至今也就因为性能问题, 把 git 操作相关的从 rails 单体里头拆出来, 用 go 重写了 https://about.gitlab.com/blog/2022/07/06/why-were-sticking-with-ruby-on-rails/
@runlongyao2 我反驳的是 "单体架构下往往本身就是面条代码, 一条业务从入口开始就串联一大堆模块, 你不可能说这段代码你写那段代码他写吧?"
@lujiaxing "单体架构下往往本身就是面条代码, 一条业务从入口开始就串联一大堆模块, 你不可能说这段代码你写那段代码他写吧?" 为啥不可以 ? 我可以给不同的模块划分不同的维护者. 比如 tidb 进程内的每个模块都有不同的 owner: https://github.com/pingcap/tidb/blob/master/pkg/expression/OWNERS https://github.com/pingcap/tidb/blob/master/pkg/ddl/OWNERS

"难不成要变成 "你等他的模块写好, 他等另外的人的模块写好"" 为啥不能同时进行 ? 我可以抽象成接口进行 mock. 我可以约定好你这个模块产生什么样的输入, 然后两边并行开发

"还是说你先写好了结果顶着编译器报错提交代码" 微服务将接口改起来得小心翼翼, 避免变得不兼容. 单体改完接口还有编译器检查错误

"你负责订单你就一直负责订单, 订单完成后的事情, 什么加积分, 客户升星级, 结算分佣这些" 我可以在单体内划分出不同的模块, 每个人专注于不同的模块


"至于链路追踪就更搞笑了. 单体项目还需要什么链路追踪? " 为啥不需要呢 ? 比如 https://github.com/prestodb/presto, 一个 sql 打进了, 我想看到产生的逻辑/物理计划啥样, 切分成了哪些 fragment, 每个 fragment 有几个 task 打到了哪些节点上, 这不值得上个链路追踪吗 ?



"单体架构下往往本身就是面条代码, 一条业务从入口开始就串联一大堆模块," 一个服务把其他服务串联起来算是面条代码吗 ?

"生产环境哪里报错了有完整的调用堆栈. 甚至可以在错误日志里打上下文. 你拿着数据自己去调试就好了. " 你这是没被跑几百次才出现的 bug 折磨过
@lujiaxing
1. 微服务边界拆分不合理, 也会出现一个功能改多个微服务的情况. 我不明白你是咋得出"这时候微服务可以很好的让团队成员聚焦于某一个具体的模块"这个结论的. 如果把模块拆好, 一个功能只改一个模块, 就算是跑在一个进程里, 又有啥问题 ?

2. 放 docker 里

"链路追踪" 不是微服务特有的问题. 微服务比单体更容易实现 trace. 如果都在一个进程内, trace 只能靠手动埋点. 拆了微服务, 一般通过 rpc 调用, 可以用中间件的形式来统一实现 trace
2024-10-13 11:04:28 +08:00
回复了 Charlie17Li 创建的主题 程序员 [服务网格] 服务网格似乎没那么必要上?
@RicardoY 我在 https://v2ex.com/t/1079010?p=1#r_15371204 里头的确没提到这一点
2024-10-13 11:01:59 +08:00
回复了 Charlie17Li 创建的主题 程序员 [服务网格] 服务网格似乎没那么必要上?
@RicardoY 在读一遍我的问题. sidecar 上报这能无侵入的实现. 但是如何无侵入的**关联 traceCtx **, 知道这个 db 查询是哪个 rpc 请求触发的 ?
2024-10-12 14:47:19 +08:00
回复了 Charlie17Li 创建的主题 程序员 [服务网格] 服务网格似乎没那么必要上?
@mark2025 我的问题是 servicemesh 如何通过 sidecar 实现 trace. opentelemetry 更像是一个规范及 sdk, 从我之前的经验来看, 得需要埋点实现, 似乎没法做到侵入性的实现 trace 等功能
2024-10-12 14:41:20 +08:00
回复了 Charlie17Li 创建的主题 程序员 [服务网格] 服务网格似乎没那么必要上?
@mark2025 发这个连接有什么用吗 ?
2024-10-11 14:20:59 +08:00
回复了 Charlie17Li 创建的主题 程序员 [服务网格] 服务网格似乎没那么必要上?
@povsister 那是如何实现的 ? 用的魔改的 db 驱动 ?
2024-10-11 11:03:33 +08:00
回复了 Charlie17Li 创建的主题 程序员 [服务网格] 服务网格似乎没那么必要上?
@povsister 这种的 trace 能关联 rpc 跟 db 查询吗 ? 比如处理一个请求 req 的时候, 访问了服务 b, c 以及 db, 能在 UI 上看到这个 req 对 db 的访问吗 ? 预期的树形结构是这样的

|_____________________req____________|
|___b__| |__c__| |__db_|
2024-09-29 13:41:51 +08:00
回复了 mikewang 创建的主题 信息安全 代理检测:在线检测您是否在使用 Clash
自从 clash 爆出远程代码执行漏洞后, 就把它关在 docker 里的
2024-09-20 18:20:58 +08:00
回复了 displayabc 创建的主题 程序员 都说 VS 是宇宙第一的 IDE,到底是好在哪里?
@wu00 你这说了就跟没说一样. 调试工具怎么逆天了 ? "补全、感知、一键重构、代码风格等工程化配置" idea 也可以
2024-09-03 12:09:17 +08:00
回复了 idihs 创建的主题 Go 编程语言 GoLang 和 Python ,哪个更适合做 Java 程序员的第二语言?
其实也可以看下新的 java.
新的 java 也有些 python 的语法糖. 比如: https://www.infoq.com/articles/pattern-matching-for-switch/ https://www.baeldung.com/java-record-keyword
2024-09-03 12:04:23 +08:00
回复了 idihs 创建的主题 Go 编程语言 GoLang 和 Python ,哪个更适合做 Java 程序员的第二语言?
建议是 go. 学习的过程中, 可以思考下编程的最佳实践. 比如 https://go-proverbs.github.io/.
顺便可以思考如下问题
- 为啥 go 里头不能创建 thread, 只能创建 goroutine ?
- 为啥 go 舍弃了继承, 继承有什么缺陷
- 为啥 go 里头不流行跟线程池类似的协程池 ?
- 为啥 go 里没有异常 ? 这样的好处是什么 ?
2024-08-01 07:41:26 +08:00
回复了 ModiKa2022 创建的主题 数据库 大数据量联表操作
先明确下查询是 AP 还是 TP. 如果根据经过 filter 后, join 的数据量比较少是 TP 否则为 AP. AP 的话用 Doris 之类的 MPP 数据库吧

如果是 TP, 明确下为啥查询慢, join 顺序不对还是没加索引, 如果是前者的话, 通过 join hint 指定下 join 顺序
写业务感觉还是 java, ts 最方便. go 擅长写重网络 IO 的应用, 用同步的方式写异步比较舒服
2024-06-18 14:42:08 +08:00
回复了 bluebo 创建的主题 程序员 写了一个 mysql cdc table,有用么
MySQL 中的表发生 DDL 你是咋处理的 ? MySQL8 之前的 binlog 里头没列名, binlog 中元素对应的表结构可能跟当前 MySQL 那边的表结构不一样
2024-05-09 14:07:00 +08:00
回复了 acr0ss 创建的主题 程序员 Java 性能竟然优于 Rust,哪里有问题呢?
打个火焰图看看 ?
2024-04-30 15:15:49 +08:00
回复了 afxcn 创建的主题 Go 编程语言 golang 的 defer 真是个好设计
@w568w 1 这点没得洗. 但 2 这点, 带 gc 的语言一般都没有用 raii 这套的 (对象销毁时机不确定), try 这一套不太好表达把 ownership move 到其他函数这一点. defer 这玩意只能说有优点也有缺点
2024-04-30 14:40:40 +08:00
回复了 afxcn 创建的主题 Go 编程语言 golang 的 defer 真是个好设计
@hez2010 另外 java9 中已经废弃 finalize 了
1  2  3  4  5  6  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2403 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 25ms · UTC 15:31 · PVG 23:31 · LAX 08:31 · JFK 11:31
♥ Do have faith in what you're doing.