专栏名称: MacTalk
MacTalk 开通于2012年末,内容起于 Mac 而不止 Mac,内容覆盖了技术、创业、产品和人文思考。文风有趣,又有一点力量。相关图书《MacTalk·人生元编程》《MacTalk·跨越边界》
目录
相关文章推荐
51好读  ›  专栏  ›  MacTalk

追忆左耳朵耗子

MacTalk  · 公众号  · 科技自媒体  · 2025-05-14 12:09

正文

请到「今天看啥」查看全文


所有做科学实验都是走这条路的,不断地做实验、拿数据,在数据里面把它标注好,关联起来,然后找信息 ,从信息里面找因果关系,从因果关系里看看能不能推出一些公式。大概就是这么一个逻辑。
所以我觉得,今天所有监控系统都做错了,都在拼命地采集数据,而不思考这些数据到底里面有什么样的联系。
举个例子,我们做监控系统时,要说清楚这个对外的 API,后面连着多少 service?以及这些 service 运行在哪些 resource 上?又使用了哪些数据库、中间件?你如果说不清楚这些关联数据,是没办法做的。
今天的运维,因为是按技能分工,我只关心我的底层资源,不关心你的应用层。这就导致了一个问题。比如说我来问你,我想下线这台机器,它到底影响哪些用户?
我可以告诉你,在今天,中国没有人,没有任何一家公司,可以说清楚这个事情,包括 BAT。国外可以说得清清楚楚,因为数据有关联,我知道你这台机器到底服务着前面哪些 API,这些 API 有多少用户在用?我说的清楚这个事,因为数据是关联着的。
这就是我们公司为什么要走这条路。 一个是拿着流量的调度,另外一个是数据,我觉得这两个事,然后再辅以像 Spring Cloud 服务治理、Kubernetes 资源治理这样的产品,就完全齐活了 。这就是整体的基础设施。
我们公司叫 MegaEase,翻译成中文就是“巨大且容易”(笑)。
MegaEase 的 GitHub 地址:
https://github.com/megaease。
为什么我公司会选择 Go 语言?
我可能又要唠叨一点了哈哈。
首先,做流量网关,其实国内现在已经有一些东西了,一种是偏应用,一种是偏控制面。偏控制面的像 Nginx 或者 HAProxy;偏应用的像 Envoy,还有 Java 的 Spring Cloud 或者 Zuul 。但 Java 那些东西的性能又很糟糕,性能好的就在 C 和 C++ 这边,但我觉得语言门槛太高了,一般人是玩不了的。
因为流量调度网关,一定是会有业务逻辑侵入的。有业务逻辑侵入的话,就必然需要大家可以定制、可以在上层进行开发扩展 。所以我们选择技术,首先你要有很高的扩展性,而且技术门槛要低。
如果用 C 语言,我相信能够参与贡献 Commit 的人少之又少,Node.js、PHP、Java、Python 都属于门槛比较低的,Go 也是,但是我们又需要兼顾性能。看了一圈所有,只有 Go 语言和 Rust 语言。
但是你要说为什么没有选 Rust 语言?首先 2016 年 Rust 还不怎么样,这几年非常火我们也在用。我想告诉大家 Rust 语言是一个很好的语言,但是我觉得它的门槛也是非常非常高的,甚至会比 C 和 C++ 还要高,真的。
所以我们觉得,要让大家可以去贡献、去扩展,语言门槛放在这里就会导致整个社区变凉,为什么像 PHP 的社区,像 Java 的社区、 Python 社区、Node.js 这种社区很多很多?就是因为门槛低参与人多,所以基于这些方面的考虑,我们选择了 Go 语言,这是第一个因素。
然后第二个因素, 为什么我们会选择 Go 语言,而不是其他的?
因为我觉得一个流行技术必须要满足这么几个条件。第一个门槛低。除了门槛低以外还需要有大公司在后面撑着,没有大公司用的话不行,因为大公司用了以后就会在上面贡献更多的特性。
而且大公司用得越多,就一定会有标准化的东西出来,比如 Java、C 和 C++,很多公司都在用,就有一个标准化组织。第三个,社区很重要,必须要有社区。第四个它必须要有杀手级应用。杀手级应用的意思就是它必须要有个成功案例,没有成功案例不行。
所以这 4 个因素: 门槛低、有大公司撑着、好的社区,还有杀手级应用,决定这个技术会不会成功,会不会爆。
PHP 也有大公司用,比如 Facebook,社区也很好,门槛也低,又有杀手级应用 LAMP,所以 PHP 能爆火。虽然我不是很喜欢这个语言,我非常非常不喜欢。像 Java 语言也是全部都有,门槛也低,大公司不断地投入。Go 语言其实也是这样。
但 Rust 目前来说还没看到。Rust 门槛比较高,社区并不活跃。大公司只有 AWS 说要用。杀手级应用才刚刚开始有苗头,一个是 WebAssembly 就是 Web 上的汇编,一个是它逐步进入内核了。所以现在, Rust 有一点点起势的苗头。 但是它有一个非常致命的缺点,就是门槛太高。
我很早就总结过:Java 适合做业务层,Go 适合做中间件、Rust 适合做系统层。很多公司业务层也都在用 Go 写,我觉得没啥问题。是这样,业务层 Go 可以写,你拿 Node.js 也能写业务层,我以前都是拿 C 语言写业务层,所以你拿什么东西写都可以。
Go 语言写业务层,我觉得天然有一个好处就是 Go 没有太多乱七八糟的东西,它特别适合写面条代码。 所谓的面条代码就是这个业务流程长啥样就怎么写,不需要任何抽象,这些代码也懒得重用 ,我直接写就好。国内的很多 Go 语言开发者,我觉得可能有 80% 都是从 PHP 转过来的,因为太适合写面条代码了。
但是,当你的架构变得越来越大、越来越复杂,里面一定要有一个框架的。比如 MVC 框架。 为什么你发现 Java 代码写不烂,因为它有框架保证。 但 Go 语言代码我看烂的就有一大堆。另外,服务越来越多,你开始要运维,做配置中心、服务治理那些中间件,但这方面,你会发现 Go 语言可用的不是很多,而 Java 那边成熟的一大堆。
所以,早期的项目,你用什么语言都行。 假如说我们把场景分成 0 到 1、1 到 10、10 到 100 ,我今天跟大家说, 0 到 1 你爱用什么语言用什么语言,随便你用,Rust、Swift、Kotlin 随便什么,C 语言都行,你要用汇编写业务代码,我觉得都没问题。
但是 1 到 10,你开始要尊重两个东西 。第一个你的开发速度要快,第二个你的稳定性、性能这些要保证因为要扩展用户,这个时候,你就必须得选一些工业化的语言。像 PHP 可能就有点受不了,Go 语言或者 Java、Ruby、Python 这些都还可以,因为生产力各方面都还可以。但是如果 10-100 的话,哎呦,我估摸着只剩 Java。所以,关键是你公司在哪个阶段。
有时候我们上网一看,哇, 大量都是 Java 不行、Java 反人类、Java 太啰嗦,但是你可以看看,说的那些人他们可能都在小公司哈哈哈 ,因为他的业务场景的确不需要用 Java,他说的是对的。或者是那些独立开发者,都是从 0 到 1,他爱用啥就用啥,自己舒服就好。
但是你看那些大公司,银行、电商、电信,只要是这种有交易型的用户公司,包括哔哩哔哩所谓的自己用 Go,但是他做电商,你看他用啥,还是用 Java。Java,跑不掉的这个事情。
创业几年的反思
我创业也是很坎坷崎岖的。看似很好的一条路,但是一到创业的过程中,就发生了像中美贸易、疫情、资本趋于谨慎等等各种问题,互联网一片惨淡。现在也还有很多各种问题,所以其实都还是挺不容易的。
但是我坚持“条件受限是好事”,让我可以去想一些更重要的东西 。比如很多公司可能想怎么样拿投资,现在我在想的是,怎么样能让我们的公司不拿投资,自己成为一个能盈利的公司,能成为一个真正的公司,不是被人包养需要寄养的一个公司。这些是我每天在思考的。
其实大家也可以去思考, 这个世界其实并不完美,你会遇到很多很多让你很无助的事情, 我也经历过工资发不出来,自己掏钱给团队发工资的时候,我一晚上睡不着觉,也经历过。
但是我想说的就是,所有的路都是可以走的,不用担心。但不是纯靠坚持,关键是你一定要去想方法,想更好的、更优的解,这个事很关键, 千万不要使蛮力,没有太大意义。这是我创业学会的第一个道理 。方法会比努力更重要,所以我们不加班,如果团队在加班,我觉得我们肯定方法不对。
我创业学会的第二个道理是关注你的重点, 不追小兔子。能让你分心的事情太多太多了,你不知道你前面那座城池有多高 。因为你从来没见过,一路上都会有很多很多的小兔子来找你。你一看,这个兔子好看,我来追一下,那边又有一只蝴蝶,你就忘了你未来要去哪。
这两个东西我觉得挺重要,这也是我创业这几年来受到最大的两个教训。我觉得跟我们的人生也是很相通的。
我的梦想
我活到 40 岁了,算是看出来,之所以这些大公司能垄断,就是因为垄断了技术人员,垄断技术人员他就会垄断掉这些技术,用技术来压制你 。你们觉得有人写程序抢月饼,他把那些抢月饼的人开掉了,其实他在整个社会上跟你抢月饼,跟所有没有技术能力的人抢月饼,你们根本抢不过他。
所以我一定要把这个抢月饼的技术给到大家。我不觉得这个世界就是那一些公司在垄断的,我希望能够把技术惠及到所有人,大家都能抢月饼,就这意思。
所以我们公司的使命就是, 残酷无情地降低技术门槛,让普通的公司可以用到这些高级技术。 不是让你用云计算,我是要让你用到解决方案,让你一行代码不改做秒杀,让你系统再差也可以做秒杀,让你可以做高可用,成本很低地做高可用,成本很低地做灰度发布,就这样子,让你可以去跟大厂去抢月饼,他们每天都在用各种各样的技术手段在抢月饼。
我觉得这些技术并不难。难者不会,会者不难。
技术
技术不是用来写 CRUD 的






请到「今天看啥」查看全文