问个问题,如果创业公司的架构师和技术 leader,是因为关系比较熟,被拉进来的,但是根本没有该方面的经验,这样的公司一般结局是怎样的

2015-11-29 10:27:42 +08:00
 li24361

举例子,原来架构全是 java ,但是因为人员动荡,来了新的 cto 和架构,都是老板的很熟的关系,但是原来是做.net 和 python 的,不了解消息队列,缓存,高并发,就是说 title 和经验不匹配,那么这种公司,一般倒掉,还是换人,有相同经验的 v 友可以分享下。

9880 次点击
所在节点    程序员
104 条回复
Mirana
2015-11-29 22:38:57 +08:00
@mzer0 说了这么多 你并不能证明所有的 Pythoner 都不懂你说的东西,也不能证明所有的 javaer 都懂你说的东西
HentaiMew
2015-11-29 22:54:51 +08:00
我没有这方面的经验,但是我的看法是:
1. Python 和.NET 的对“消息队列,缓存”以及高并发等概念和技术半点都不懂的话,说实话,他们还仅仅停留在 Coding 阶段,不懂最基本的应用系统架构方面的东西,换做其他语言都是如此。对于(当前)工作而言,层次太浅。
2.Java 程序员不懂上述内容的多得是,不一定比 Python 和.NET 程序员少。懂的基本都是中、高级软件工程师,初级程序员只会写 CRUD 的多得是。
3.几乎任何“消息队列”和“缓存”产品都是异构性质的,和语言无关。并不是找几个会 Java 的就一定会用, Python 和.NET 程序员学习一定时间也能用,只是需要一个实践的过程。
4.“高并发”是一个概念,或者说是一个大型架构系统基本原则之一,“高并发”的能力是无上限的,不考虑硬件的情况下完全取决于架构的优良性。但不是一门技术或者一门语言就能解决的,一个优秀的架构师是很必要的。
5.创业公司,呵呵。越复杂的架构,死得越快。适合的就是最好的,任何系统的架构是演变过来的,不是一次性就完美的。
boyhailong
2015-11-29 23:57:36 +08:00
语言和架构有关系吗 醉
zjb861107
2015-11-30 01:52:44 +08:00
键盘侠不得不来插一嘴,你站的高度不够,看待问题的角度跟老大不同。
一个产品、一个公司的成功,在不同阶段侧重点是不一样的,技术从来都不是决定一个公司生死的最重要因素
JamesRuan
2015-11-30 02:46:10 +08:00
@mzer0 看到这样大段大段地用“!”就来气。

“让服务器的 cpu 真正跑到 100%的占用率”本身就是一个错误的方向。

架构上第一重要的是业务绝对安全,第二是开发成本和维护成本,第三是运营成本,第四是扩展性。性能什么的优先级非常地低。

真的重要了,也是因为性能不好导致运营成本大于改进性能的维护成本了。

一个弄 Java 的不一定比弄 C#, python 的更会考虑上述这些。
JamesRuan
2015-11-30 02:47:02 +08:00
@zjb861107 没错,商业运营比技术重要多得多。
binux
2015-11-30 03:32:23 +08:00
@mzer0
> 给你一台 20 核的服务器, 要求以最快的速度解决一千万个请求, 你会怎么做?

我会把这个需求拍回去,一千万个什么请求是什么想清楚再来?
vavava
2015-11-30 03:46:08 +08:00
如果这个 cto 真的技术经验不足而大刀阔斧才危险
最怕的是那种管理特别扁平的

一个正在走下坡路的大公司的项目只能用指定的某云
有各种大延迟高丢包和莫名的错误数据
这也是有经验的管理层做出的决定

真希望做决定的人能平庸一些些
mzer0
2015-11-30 08:31:10 +08:00
@JamesRuan 对于 Java 程序员而言,任何一台机器, cpu 占用率跑不到 100%都是一种耻辱。

Java 那种手动控制线程调度的语言,与 php 、 python 那类自动控制线程调度的语言,有着极大的差异。手动控制线程调度的情形下,只要设计模型是正确的,在线程安全的同时,必然拥有良好的峰值性能。对 Java 而言,安全性与性能是统一的,两者中有一者不足,都说明另一半是有隐患的。

想必你也不懂什么叫消息队列 /缓存 /高并发。难道设计正确的线程调度模型, cpu 占有率会跑不到 100%?难道常年 cpu 占有率上不去的 Java 程序,你敢说它的模型没错?
unique
2015-11-30 08:35:34 +08:00
老板的抉择对他而言是正确的,底下的人最看重的是个人能力,这只有在你们工作中体现了,光在这里说也没有什么用
mzer0
2015-11-30 08:35:55 +08:00
对绝大多数 php 、 python 等自控制线程调度的语言来说,常年低 cpu 占用是正常的,这不能说明程序不安全。

但性能表现不如预期的 Java 程序, 100%是有 bug 的。

手动控制线程调度非常复杂,没有做过的人是不明白的。整天说安全性,不安全的 Java 程序能泡到 100%占有不崩溃?

你知道安全性有几种吗。线程安全,数据安全,异常安全,灾毁安全?动不动说安全,难道你的“安全”仅仅定义为没有手抖写错变量名?太低级了好不好!
mzer0
2015-11-30 08:37:10 +08:00
@binux 解决不了一千万个并发请求的人,根本不会懂什么叫大并发。你用过四路 cpu 的机器吗?怎么发挥性能?
binux
2015-11-30 08:40:08 +08:00
@mzer0 什么性能?
mzer0
2015-11-30 08:43:22 +08:00
@binux cpu 峰值持续时间、 cpu 上升沿、线程调度次数、同步量被锁定次数。
mzer0
2015-11-30 08:45:47 +08:00
一个写得好的线程调度算法,永远不可能同时满足高并发场景和低并发情景,高并发算法在低并发情形下必然是低效的,因此实时流量监测就非常重要。甚至某些基于数学定理的策略(非完全锁死)只在特定 cpu 运行情况下才能达到高成功率(论文指出可以超过 98%)。
mzer0
2015-11-30 08:51:36 +08:00
实时测定流量以后,线程池必须对流量有相应的正反馈,有很多研究者都发了论文来探索最优正反馈曲线,以及相应的比例系数。

整体弄 php 、 python 的哪懂这些?对 c++而言,分配内存都需要正反馈算法,算法的比例系数在不同 cpu 架构 /核数上还不一样,都是需要查论文的。

单单论 Java 高并发,能写 n 本书,选择正确的反馈模型就能写一本书, php/python 在多核多 cpu 的表现非常非常差,研究者认为核数超过 10 以后,脚本语言普遍都不能发挥计算机性能,这和脚本语言底层模型有直接关系,脚本语言底层模型是不检测计算压力的,因此选用的是中低压力下的最优模型。
binux
2015-11-30 08:55:12 +08:00
@mzer0 设计一个无锁无线程的不就完了?

> 给你一台 20 核的服务器, 要求以最快的速度解决一千万个请求, 你会怎么做?

我会把这个需求拍回去,一千万个什么请求是什么想清楚再来!
gulullu
2015-11-30 08:56:24 +08:00
这个,难道你是 ST 的?
mzer0
2015-11-30 08:56:44 +08:00
任何说高并发容易的人,你们一个月领多少钱?想过为什么吗?

高并发很容易?扯淡。

高并发的 Java 是需要重新设计 GC 策略的,你会实现 GC 吗?最优单次内存分配和 cpu 核数是什么关系知道吗?

如果你编程的时候都不用考虑这些,那你说高并发“很简单”,我只能心里默念:你真无知。

事实上 Java 最难的地方之一就是多线程,非常难,年年有人写论文来讨论。

我们之中有多少自以为是的人?以为自己两行代码能写出很多东西,就说 xxx 很容易, yyu 也很容易?你们的业务开那么多机器来跑分布式,真的不是因为性能太差吗? IO 表现那么差,真的不是因为反复锁死线程导致的?
mzer0
2015-11-30 08:58:14 +08:00
@binux 我只能说你幼稚。或者说傻逼。你是学生吧?工作了?无锁无线程?无脑儿。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/239745

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX