1
hand515 2020-07-22 14:01:16 +08:00 10
虽然我也是搞 java 的,但你这样问,我觉得好尴尬
|
2
wshcdr 2020-07-22 14:02:11 +08:00
绕的开啊
|
3
kop1989 2020-07-22 14:03:09 +08:00
语言是工具,架构师就是用适合的工具来根据需求规划技术抉择。
所以掌握 java 并非成为架构师的充要条件。 |
4
smallpython 2020-07-22 14:03:30 +08:00
java 性能好, 而且更严谨不容易出错
|
5
songsong 2020-07-22 14:08:19 +08:00
java 是刀, 各种编程语言都是刀, 架构师是厨师, 觉得什么时候用什么刀
|
6
dongisking 2020-07-22 14:15:11 +08:00 6
那楼上能不能举几个非 java 打造的架构说说啊,非杠
|
7
opengps 2020-07-22 14:16:42 +08:00 3
我用 C#不行吗?好歹线上项目也用了差不多一百台服务器的规模了
|
8
waising 2020-07-22 14:20:20 +08:00
大数据暂时 java 那套比较好用 ,应用架构 go c# 不都可以吗 反正都是用组件
|
9
wysnylc 2020-07-22 14:21:58 +08:00
目前能称得上工程化语言的只有 Java 吧,其他的造造小房子挺不错但是难以制造摩天大厦
|
11
LostPrayers 2020-07-22 14:27:48 +08:00
你可以用 k8s 那套,应用也全部上 golang,再包括 sql 、mq 、cache 等等中间件,基本上都有非 JAVA 方案
|
12
janxin 2020-07-22 14:33:40 +08:00 1
@dongisking 你来举几个用 Java 打造的架构不能用其他语言实现的啊,非杠
|
13
opengps 2020-07-22 14:34:33 +08:00
@wysnylc 说大不大说小不小,就是我做的车载 gps 防盗器项目,上百万台车载终端 tcp 长连接回传位置数据等信息,提供 web 集群对外查询。
至于那一堆“流行”中间件。实际业务则是根据需求可有可无,用了中间件有用了的好处(解耦把各种极端故障难题丢出去),不用中间件直接怼数据库也有直接怼数据库的优缺点(做好了异常处理不中断业务也照样撑起业务) |
14
BoarBoar 2020-07-22 14:37:28 +08:00
@dongisking google 哪个架构用的 java?非杠
|
15
dongisking 2020-07-22 14:43:08 +08:00
@janxin 小弟目前后端打杂,在网上看了关于微服务在 php ( swoft ),和 golang ( gin 、斗鱼的 Jupyter )都没实现的太完整。另一方面从 nginx,mq 一致性,redis,分布式锁、可重入锁等等都没 java 的案例多,我甚至找解决方案先去看看 java 怎么做,然后再找别的语言实现
|
17
janxin 2020-07-22 14:48:50 +08:00
@dongisking 这是没有像 Java 一样有打包方案吧... 因为 Java 的使用比例目前在国内都是比前面两个要高,资料多也是很正常的。但是这些跟架构没关系,难道一个架构师没有框架就不会做事了么...这种架构师应该叫调包侠吧...
|
18
wysnylc 2020-07-22 14:49:12 +08:00
@opengps #13 百万车载也就看着唬人,你这并不涉及到并发问题,负载均衡横向扩展(加机器)可以解决那么最终就都是单机问题
还以为是哪家的订单或者支付呢 |
19
mogami18 2020-07-22 14:50:02 +08:00 1
@dongisking 新兴的比如,TensorFlow 内核,UBER 的 Horovod,NVIDIA 的 NCCL 。已有的 Redis/memcached,MySQL 等等。即使是 Java 生态圈 HDFS,MapReduce,HBase,也分别脱胎于 Google 用 C++实现的三驾马车 GFS,MapReduce,BigTable 。
|
21
gantleman 2020-07-22 14:50:41 +08:00
看到多机,多服务,多并发就想到前面在💩山上拉💩的帖子。
只在胃里一阵翻腾之后…尤其远远的看见山上的架构师。 |
22
dongisking 2020-07-22 14:51:38 +08:00
@janxin 是啊,这样的打包方案是很多踩坑哥辛辛苦苦总结出来的,在其他语言论坛也有,不过真不够活跃
|
23
mogami18 2020-07-22 14:51:48 +08:00 1
搞软件架构也需要理论的支持,建议楼主多多参考一下经典的顶会论文,比如 OSDI/SOSP/ATC/EuroSys/ASPLOS 的论文等等。编程语言只是工具
|
24
dongisking 2020-07-22 14:52:08 +08:00
@mogami18 好的老哥
|
25
mogami18 2020-07-22 14:54:21 +08:00
@dongisking 我自己就是从事系统架构方向的研究人员,也在业界大厂待过,感觉能把最新的系统 /架构的理论落地应用的,公司里面还是没多少人的,楼主可以抓住一个方向,重点突破一下,之后去大厂混个早 11 晚 7 的靠谱工作问题不大
|
26
wejsve 2020-07-22 14:57:57 +08:00
无力吐槽,微服务的基石 K8S 就是 golang 写的
|
27
wangritian 2020-07-22 14:58:34 +08:00
非 java,云服务,懂一点 k8s,正在学习使用 istio,各种中间件也是走网络协议的
|
28
PopRain 2020-07-22 14:58:49 +08:00
说的软件好像只有互联网企业是开放软件,其它企业都是乡下盖房吗????
|
29
janxin 2020-07-22 14:58:56 +08:00
@dongisking 对于其他语言来说,发展是需要时间、人员投入等等很多东西。实际上架构落地是一件十分有成就感的事情,不过如果把它简单的抽象为调包,架构会迟早出问题的,作为架构师的你可能根本不知道瓶颈在哪。不过好在一般人可能遇不到这种瓶颈,这也是很多混子架构师的原因...
|
32
mogami18 2020-07-22 15:13:02 +08:00
@maxxfire 目前最火的是分布式机器学习系统方向,工作要求比如能独立的完成,根据业务需求优化开源 TensorFlow 内核的某个组件的实现,并且能帮助算法工程师分析系统性能瓶颈,给出优化方案。对机器学习理论的基础知识(线代,概率,统计)和经典模型(CTR,图像识别)有理解和实战经验,但是不要求过高的数学能力,同时有大规模分布式系统开发维护经验,有分布式系统的理论经验(发表过国际系统方向顶会论文的更好),熟悉 parameter server 原理和实现更佳。
|
33
mogami18 2020-07-22 15:15:32 +08:00
@gantleman 得看哪个方向啊?分布式机器学习系统? RDMA 通信?分布式存储? disaggregated data center ?方向太多了呀。就像人工智能机器学习算法,也分为:纯理论方向,(凸)优化方向,视觉方向,自然语言处理,推荐系统等等。每一个小方向都有很多值得深究的论文
|
35
cs419 2020-07-22 15:17:47 +08:00
小孩子才做选择题
|
37
opengps 2020-07-22 15:32:40 +08:00
|
38
gantleman 2020-07-22 15:41:25 +08:00
@mogami18 软件开发本身是没有门槛的,任何人拿电脑都可以写软件。对于只写理论而没有配套软件的论文我持怀疑态度。简单的说提出可以改变世界赚到大钱的理论,提理论的人为什么不自己写软件去赚钱?这是让我想不明白的逻辑悖论。所以在软件工程里应该不存在无法落地的理论。考虑到软件复制成本几乎为零的特点。很容易就可以得到结论,理论等于软件等于产品等于钱的结论。所以不能做成软件的学术论文就是废纸,没什么深究的意义。能做成软件的学术理论也不会变成论文,而是直接变成钱。学术论文在软件工程里的意义就变成了。这个方向被某人研究过了,写不出软件赚不到钱,走不通只能发个论文水一下。
|
39
mogami18 2020-07-22 15:46:32 +08:00
@gantleman "能做成软件的学术理论也不会变成论文,而是直接变成钱" => 我稍稍反驳一下,还是 TensorFlow,作者是 Jeffrey Dean 等一众 Google 的科学家,发表在 OSDI 2016 上面,不仅有正确的理论,还革新了机器学习训练的系统,同时作者们都享受着独一无二的高薪。Parameter Server 的作者 Eric Xing 开了个公司,挣了很多钱,同时他是 CMU 的教授,发了很多有价值的 paper 。还有李沐,MXNET 作者,AWS 科学家,等等
但是,确实如老兄所说,绝大多数的论文,即使是顶会的论文,也都是在灌水!!! |
40
mogami18 2020-07-22 15:48:08 +08:00
@gantleman 我的个人看法是,如果软件规模开始变得很大,掌握一些靠谱的理论,是可以让软件开发变得高效实用和可控的。至于哪些理论靠谱,诚然,还是需要在工作中利用越来越多的经验慢慢总结积累
|
41
Helix225 2020-07-22 15:50:14 +08:00
某些人让我吐了,当初没走 java 路真是太好了,我可不想在职场看到这些同类,以后架构相关,我偏去看 C++和 Go
|
42
xuanbg 2020-07-22 15:55:51 +08:00 1
架构和语言有什么关系?架构是方法论,语言只是工具。楼主你需要跳出编程的层面去看问题,这样才能找到问题的核心。
|
43
sean250031 2020-07-22 16:18:47 +08:00
虽然说可以避开 java,但是也没有必要"强行"避开吧。。。也考虑考虑招开发人员的问题。。java 一抓一大把好招人啊,不是所有厂都是大厂
|
45
yiyi11 2020-07-22 16:47:27 +08:00 via Android
别尬吹 /黑,生态之王的事实罢了。
|
46
gantleman 2020-07-22 16:54:24 +08:00
@mogami18 软件工程这个行业是最现实的,两三年做不出东西被公司裁员比比皆是,35 岁没有侥幸财务自由和做不出产品的工程师都会被行业淘汰。没人会记得谁发表过什么和说过什么。
|
47
yiyi11 2020-07-22 17:01:55 +08:00 via Android
说 xxx 语言做的啥东西好,那只是有人愿意做,做成了时代的幸运儿,先入为主罢了。说 xxx 语言做的啥东西差,那只是没人愿意做,而且有更好的替代品罢了。
|
48
mogami18 2020-07-22 17:23:41 +08:00
@gantleman 中国确实是这样,所以我 25 岁从 TMD 离职(睡前 40w rmb),目前已经移民加拿大温哥华,半夜上网中,不用担心下半辈子了,逃:)
|
49
magiclz233 2020-07-22 17:42:07 +08:00
不是说绕不开 而是 Java 这方面的生态最成熟,大部分公司以及个人在搞架构时自然而然就想到用 Java 那一套,你想用哪个方向都有轮子 demo,你用其他语言的话,性能比 Java 好的,轮子太少,除非公司有大牛,Java 就像一碗面,你饿了的时候第一时间就相当吃一碗,你不饿的时候,又感觉吃的难受,不如喝个奶茶,吃个其他的舒服
|
50
WngShhng 2020-07-22 17:48:42 +08:00
很好奇你第一个结论是怎么得出来的
|
51
hoyixi 2020-07-22 18:23:37 +08:00
架构是钢筋骨架,架构设计好了,具体搭积木的时候,用 Java 还是用 Node 还是用 Go,随你。
只不过 Java 被普遍使用,生态丰富,很多东西开箱即用。 现在开源大行其道,很多公司说白了就是在拼拼凑凑,稳定现成可用的越多,成本越低,自然普及。 |
52
newmlp 2020-07-22 18:27:41 +08:00
软件架构不止有 web 应用
|
53
azh7138m 2020-07-22 18:37:01 +08:00
|
54
useben 2020-07-22 18:40:38 +08:00
你当云原生的儿子 go 不存在啊
|
55
newtype0092 2020-07-22 18:44:31 +08:00 2
coolshell 一篇文章里的说的,感觉有一定道理
“我以为用 Java 适合做架构这事应该是常识了,但是评论中有很多人非常反对这个事。那我解释一下吧:首先,小型的项目用什么语言都行,爱用什么用什么。但是,真正的企业级架构就不一样了,其中并不仅仅只是 RESTful API 或 RPC,还有各种配套设施和控制系统,比如:应用网关,服务发现、配置中心、健康检查、服务监控、服务治理(熔断、限流、幂等、重试、隔离、事务补偿)、Tracing 监控、SOA/ESB 、CQRS 、EDA……这些东西在非 Java 的技术栈体系内,很难看到全貌,Java 强大的生态环境,就是让你把注意力放到更高层次的架构和业务上来的。(千万不要觉得,整几个服务 RPC 一下,加个缓存,加个队列,就能叫架构,那只是系统集成罢了)” |
56
dexterzzz 2020-07-22 18:51:30 +08:00 via Android
sap,dynamic 这些 erp,crm 要什么 java,bi 领域也是
|
57
hallDrawnel 2020-07-22 18:53:47 +08:00
腾讯就不是用 Java 的啊,按你的逻辑腾讯就没有架构了 /滑稽
|
58
dexterzzz 2020-07-22 18:54:56 +08:00 via Android
top 3 的 bi,power bi,tableau,qlik 都是 windows 技术,java 的 bi 都不入流
|
59
libook 2020-07-22 18:58:00 +08:00 7
如果一个架构师说架构只能用 Java 做,那基本上说明这个人还没有成为真正的架构师。
架构师的工作中有一项叫做技术选型,需要架构师具备广泛的知识储备,以及可靠的技术雷达,当遇到一项需求的时候,能够合理分析,选择适合需求的技术来实现。 所以当今只要是上了一定规模的系统,都是由多种技术栈组合而成的,举个例子:某企业业务逻辑部分用 Java,高性能组件用 C++,微服务是 Go,API 网关是 Node.js ,大数据分析是 Scala 和 Python 。物尽其用。 技术都是工具,虽然每个工具的功能都比较丰富,但是工具总是有其擅长的领域,所以得从实际需求出发,合理选择技术。 除了需求本身的特性以外,架构师还要考虑现有的技术包袱、人员的能力、管理成本以及未来的规划,比如如果团队里综合最熟练的只有 Java,而且用 Java 也不会带来高成本或高风险问题,那也是可以考虑整体全用 Java 的。 架构其实就是解决问题的思路,比如说 MVC,并不是特指的只能用 Java 来实现的架构,而是一种通过将系统抽象成 Model 、View 、Controller 三层来实现一种动态的程序设计,使后续对程序的修改和扩展简化。需要说明的是,MVC 是 1978 年提出的,而 Java 是 1995 年发行的。 所以可以说 Java 以其悠长的历史、广大的社区、丰富的案例储备,能让人了解到和学习各种架构。但是也并不是说离了 Java 就没法谈架构了,你看,前端工程师近几年也在架构上玩得 66 的(阿里云已经实现前端微服务架构了,用于解决云控制台大量模块和技术栈混合的问题)。 |
60
vissssa 2020-07-22 18:58:27 +08:00
@newtype0092 #55 微软百度腾讯点赞
|
61
libook 2020-07-22 19:09:29 +08:00
补充一下,当前技术是多元化发展的,而且在诸如云原生等概念的推广下,系统的非业务部分逐渐被各种中间件、基础设施来实现,如横向扩展、通信可靠性、服务容灾、削峰填谷、优雅降级、灰度发布等等,让代码更专注与业务逻辑,以提高企业变现能力。
|
62
areless 2020-07-22 19:17:49 +08:00 via Android
我印象中,十年前印度的软件产业基本只有 java ~所以乃至今日,印度都没有中美这么多有趣的互联网产品。java 只是令印度诞生了一批美国大公司的印度人高层。
|
65
opengps 2020-07-22 20:01:24 +08:00 via Android
|
66
cheng6563 2020-07-22 20:04:59 +08:00 via Android
Java 喜欢搞大架构,所以搞架构就很适合 Java
|
67
luckyrayyy 2020-07-22 20:15:35 +08:00
评论区真的有意思哈哈哈哈,文人相轻,程序员鄙视链远比我想象的严重
|
68
inktiger 2020-07-22 20:36:40 +08:00
java 是世界上最好的语言(逃)
|
70
qoras 2020-07-23 01:21:22 +08:00
java 很多东西确实 go 也有, 但成熟度确实是有差距的. 另外就是 java 好招人, go 要难一些, 特别是高级以上
|
72
yuyuko 2020-07-23 01:32:32 +08:00 via iPhone
@gantleman 论文重要的是 idea,系统架构师采集汇总各种 idea 来实现业务的需求,有的系统 2 年也就刚刚可用
|
73
CoderGeek 2020-07-23 01:44:36 +08:00
慢慢就绕的开了 需要沉淀 JAVA 的生态和商业价值沉淀了多少年
|
74
holinhot 2020-07-23 02:49:30 +08:00
java 是刀, 各种编程语言都是刀, 架构师是厨师, 觉得什么时候用什么刀
但是作为厨师你不用用这刀怎么了解啥刀适合干啥,难道都靠道听途说 |
75
xiaomingVTEX 2020-07-23 06:27:37 +08:00 2
转: [别让自己“墙”了自己]( https://coolshell.cn/articles/20276.html/comment-page-1)
> 离开 Java 的世界,基本上离开了做架构的世界(相关解释见文末) > 注:我以为用 Java 适合做架构这事应该是常识了,但是评论中有很多人非常反对这个事。那我解释一下吧:首先,小型的项目用什么语言都行,爱用什么用什么。但是,真正的企业级架构就不一样了,其中并不仅仅只是 RESTful API 或 RPC,还有各种配套设施和控制系统,比如:应用网关,服务发现、配置中心、健康检查、服务监控、服务治理(熔断、限流、幂等、重试、隔离、事务补偿)、Tracing 监控、SOA/ESB 、CQRS 、EDA……这些东西在非 Java 的技术栈体系内,很难看到全貌,Java 强大的生态环境,就是让你把注意力放到更高层次的架构和业务上来的。(千万不要觉得,整几个服务 RPC 一下,加个缓存,加个队列,就能叫架构,那只是系统集成罢了) |
76
jedihy 2020-07-23 06:40:13 +08:00
这叫 java 构架师。构架师本身和语言有什么关系?
|
79
iConnect 2020-07-23 07:36:32 +08:00 via Android
@opengps 我在网上一搜好多品牌看花了眼,后来就随便找了个销量大的买了,暂时还没出现问题。主要是也没时间各家都对比一下呀,不知道是不是真有很大差距🐣 你专业的做这个的,挑选车载防盗器主要看哪些方面?
|
81
urnoob 2020-07-23 08:17:57 +08:00 via Android
@wysnylc 没必要贬损其他人的项目。做过类似的也做过订单支付类的。我真没觉得后者更有难度。前者要求的技术深度还更高。
|
82
opengps 2020-07-23 08:44:53 +08:00
@wysnylc 刚注意到你的回复。如果你要争论,那么你赢了。
至于业务算大算小我不在乎,我只在乎业务是否转的好(无论负载多少),我不在乎使用什么语言(但我会综合优缺点进行选择),百万连接我已经说了,说大不大说小不小,你觉得小就往小的方向理解即可,毕竟再大的项目归根揭底还是很简单的 crud 。 再大的项目都有个共同点:不去挑战单机极限,都在回避单点瓶颈。 |
83
janxin 2020-07-23 08:56:20 +08:00
@xiaomingVTEX 适合做和只能 Java 做是两回事情,这文章里面有其中一个观点说的很清楚,不要对自己设限,不要看不上 Java 也不要因为学了 Java 就看不起其他语言做架构。反倒后面作者和后续讨论的人都跑偏到语言之争上,远离了本文的宗旨之一,实在是令人遗憾。
|
84
wupher 2020-07-23 09:20:54 +08:00
架构与语言无关
很多公司并不像那家电商公司一样全都是 Java 的。比如企鹅,比如飞期布克。 架构是 App 与 App,Service 与 Service 之间的组成方式。 |
85
594duck 2020-07-23 09:29:30 +08:00
@opengps C# 和 JAVA 是一个级别的东西。 这要比得用 GO 或者 Python 或者这种天天上微信朋友圈的系统来和 JAVA 以及 C#对杠.
|
86
securityCoding 2020-07-23 09:43:01 +08:00
大数据 java 比较多 , 你要说 web 的话选择就多了去了,随便一个都能撑起业务的
|
87
tkl 2020-07-23 09:47:07 +08:00
插一句 如果要用全文搜索 貌似只有 ES ?
|
88
opengps 2020-07-23 09:52:47 +08:00
@594duck 咱不杠,只是中立的说事实(这样依然有人反对那就无所谓了,起码咱没褒贬之意)。
我想说的其实就一句话:架构跟语言无关。 我自从写过 socket 开发之后,认识到任何一门语言只要能收发 byte,就能构造出 webserver,同理也能构造出其他 server,只不过语言库的支持程度不一样,比如某些从来没用作 web 宏图的需要语言级别的底层封装 |
89
dongisking 2020-07-23 09:54:57 +08:00
@tkl 不是,只是基于 lucene 来讲 es 做的还不错,通用解决方案已经很成熟
|
90
wysnylc 2020-07-23 10:14:53 +08:00
|
91
tkl 2020-07-23 10:25:48 +08:00
@dongisking 比如?
|
93
index90 2020-07-23 11:05:57 +08:00
因为很多公司对架构师的要求不只是架构师,更是 TL 。
TL 要做什么?攻克技术难题。 那大部分公司都用什么技术? Java 。 |
94
wysnylc 2020-07-23 11:09:42 +08:00
@ldxy #91 单向传输是 GPS 或者北斗,他这个很像但不是完全一致只是做个类比
这种高并发但是无用户争抢的场景从业务或者架构层面来讲并不难,做好无状态一致性哈希动态负载均衡后剩下的就是无限加机器 |
95
gadsavesme 2020-07-23 11:32:20 +08:00
算是滚雪球吧,其实很多语言都能搞一个大型的应用,但是现在 java 的解决方案多啊,除了问题兜底容易啊。所以用的人就多,用的人多了好的方案就更多了,然后就循环了。
|
96
Rwing 2020-07-23 11:50:20 +08:00
国内避不开
|
97
dongisking 2020-07-23 11:55:30 +08:00
@tkl golang 的 RiotSearch (好像是非 lucene ),v 站还有个人搞了 kalaserach
|
98
Mithril 2020-07-23 12:01:33 +08:00
@wysnylc 不是只有互联网才需要架构师,也不是只有电商的场景才叫难。不同行业领域有不一样的需求和困难,电商的高并发一致性难点在其它领域里可能就不存在,其他领域的难点在电商也不一定有。
架构师主要的作用就是解决自身领域内的难点,设计适合自己场景的架构。 |
99
wysnylc 2020-07-23 12:06:49 +08:00
@Mithril #97 任何行业都有造摩天大厦的需求,别人已经用这个语言造成功了你再造就会很简单成本更低因为你知道这条路是可以成功的
你说的解决难点就是一句废话,任何的工作都要解决难点难题 Java 的魅力不在于他有多优秀,而是前人留下的经验可以帮企业剩下巨大成本 |
100
hatebugs 2020-07-23 12:25:10 +08:00 via Android
对
|