写点什么

有关京东商城采用.NET 架构的社区讨论

2011 年 12 月 30 日

​最近一段时间,随着双十一、双十二等优惠打折季的过去,有关电商网站的可靠性设计受到国内社区的热烈讨论。在知名问答网站知乎上,有人提出了这样一个问题:“京东今天还在用.NET 架构的原因是什么?”,半年来得到了许多技术圈内人士的回复,其中不乏有意思的内容,对读者朋友很有启发作用。我们简单的对精华回复进行下分类。​

观点:历史原因造成

陈皓——“我觉得京东用.NET 的原因应该很简单:一开始它就用.NET/Windows 了,所以长期就这样了。 那么,为什么它会一开始用.NET 呢?…我就只能推理了。Windows 的东西门槛低,而且有很多媒体为 Windows 做宣传,所以…大多数人都会用 Windows 平台的…(京东)觉得业务比技术重要,技术无所谓,做出来了就好了。Windows 的服务是很不错的,只要你愿意花钱。Windows 平台的性能有很多问题,但是可以看到微软在很努力很努力地解决。京东的问题和用 Windows 没有关系。但是作为超低利润的零售业来说,能用 Windows 这个平台真是大手笔。 我并不觉得这是技术问题,这分明就是管理问题,管理上的问题则暴露的是人的问题。 ”

冯大辉——“据说京东老刘(刘强东)最早也写代码的,估计就是用微软的技术写东西的。最早的工程师估计也都是用微软的技术干活的,而这些人随着公司的壮大,逐渐就有人掌权了,这就形成一个什么局面?话语权是属于微软体系的人。即使有人想用其他技术体系来做点东西,那要面对很大的阻力才成。「习惯」是一个团队很难改变的,除非从上往下推动,但是这样又风险太大。加上还要跟上高速发展的节奏,那就继续跑吧。看到路边的电动自行车了没?非常灵活,快的时候能跑到 40 迈,但是真的危险。”

​大熊​——“京东用.NET 是因为京东一开始的后端进销存体系就是.NEt 基础的,当然这里话说回来,国内大多数进销存以及 ERP 也都是.NET 基础下的。所以京东从一开始就是一个偏后端的厚重公司,在 Web 端的技术以及应用开发上只是凑合能用即可,所以就一直用.NET 到现在(能用.NET 支撑 Web 应用到现在实属不易了)。顺便说一下,我居然看到评论里有人说 MySpace 在使用.NET 以佐证 XXXXX 问题,可是你知道 MySpace 已经日薄西山了吗?另外,MySpace 正是用了 MS 技术外加不开源架构,错失了一轮又一轮的产品技术上的发展,还给自己带来了不必要的成本上的压力。当 MySpace 到了海量用户的时候,MS 要派出专门的小组常驻 MySpace,帮他们解决问题,这是一件惨绝人寰的事情。​”

观点:选择.NET 不明智

廖雪峰——​用.NET,意味着你被捆绑在 Windows 平台上。不是.NET 效率本身比 Java、PHP 差,语言其实差别很小,差距在于:

1. Windows Server 授权费太贵,Linux 免费,如果你有上千台服务器需要买上千台 Windows 授权…
2. Windows 不但贵,性能还远远不如 Linux,注意这里说的是服务器端性能,跟桌面一点关系都没有。
3. 许多的开源、高端服务器组件只有 Linux/Unix 版本,移植到 Windows 上的基本是半残品。
4. 许多优化技术、高性能分布式缓存、数据库、NoSQL 解决方案等等,仅针对 Linux。
5. 你需要的一切组件和技术几乎都可以在 Linux 平台上找到免费、稳定而且高性能的东西,如果是 Windows 平台,你需要祈祷微软赶快开发出来。
6. 在虚拟化的今天,一台高性能服务器可以跑十几台虚拟机,用 Linux,你得到的是免费、稳定的虚拟机,用 Windows,你一台服务器的授权费将 x N。​

总之,立志做大型互联网应用的企业,绝对绝对绝对不可以用 Windows Server 做平台。​

徐文浩——大型互联网应用不应该使用.NET 这样的结论我认为是没错的,无论是从效率、架构、人员招募,.NET 都有一些劣势,包括:

1. 授权费, 这有两个因素,一个是需要钱,第二个是即使费用不高,你还是要费口舌去说服大家花这个钱。
2. 系统运维,Windows Server 看起来操作简单,但是真正有能力做大型互联网产品的系统运维的人员,恐怕找 Linux 的比 Windows Server 的便宜得多。​
3. 开发成本,前端 App 使用.NET 比之 Python 和 PHP 并没有什么特别优势,后端比之 Java 也什么特别优势,找中等以上架构水平的人数也相对更少,如果是真的高性能高并发的搜索、广告这样的需求,也是 C/C++ 的天下,而且你也必然不会使用 Windows Server。

观点:架构问题,非.NET 之祸

赵劼——​显然是架构的问题,关.NET 什么事情。说几点我一直存在的观点:

  • .NET 社区也很大,说需要"看微软脸色行事"、“需要等微软开发”之类的观点没有任何道理。
  • .NET 和 Windows、IIS 性能很好,不信我们可以做 benchmark,我做过很多次了,什么几万 RPS 绰绰有余,绝对超过你程序能达到的性能。​
  • Windows Server 做 Web 服务器很便宜,授权费一点点。.NET 没必要非得用 SQL Server,自己限制自己只是冤大头而已。
  • .NET 和 Linux 一起用很正常,缓存、数据库、负载均衡什么的。
  • StackOverflow 用.NET 好好的,甚至没几个非.NET 的项目达到 MySpace 的规模的。MySpace 失败跟技术.NET 没关心,否则请给出证据。

王晓胜——“虽然国内的进销存都用.NET,你的 Web 网站就得选择用.NET 吗?这个逻辑根本讲不通。那些拼命批判 windows 贵,说 linux 便宜的人,真不知道怎么想的。 .NET 开发的低成本表现在速度快、效率高、人员工资成本低等方面,这个对于创业型企业不知道多宝贵嘛。用 linux 固然好扩展,但你要烧多少高香才能找到好的架构师来帮助你,而且还得找到好的技术开发人员。那些批判.NET 架构性能不高的人,你们真了解.NET 社区的庞大嘛?去看看国外有多少企业级应用都用.NET,不仅是安全上的问题,更重要的是广泛的支持。.NET 社区中有非常多的针对优化技术、高性能分布式缓存、数据库、NoSQL 的解决方案,拜托都去了解一下再说好不好。京东 IT 系统的核心问题,应该是当时架构设计的问题,与平台和语言都无关。估计现在也是因为前后台系统相互依赖性太强导致,前台显示库存与后台的库存直接相连,这设计也土了点。​”

其他观点:历史、战略、管理

潘志彪——“当当 08 年之前也是.NET 系统,后渐渐转到 Linux + PHP + Mysql,搜索、推荐等 C++ 的后台也从 Windows 转为 Linux 版了。现在订单等后台作业依然采用 C#跑着。当当能够转型主要是前 CTO hubert 是 ebay 出身,参与过大系统的设计,具有很好的技术嗅觉。国内 B2C 京东、凡客等现在还是 windows 为主,最主要的原因还是数据量太小吧。凡客还整天搞 MS SQL Server 存储过程。B2C 本质还是零售企业,大老板往往不是很重视技术,更看重市场,所以国内…不到抗不住的那一刻,是不会技术转型的。淘宝数据量大,技术积累相对好很多,技术架构上比京东、当当等高出太多。”

是人非人——“首先 80% 是管理问题, 然后剩下的 20% 责任里面有 80% 是架构的问题, 所以技术上的问题只是那 20% 里面的 20%, 换算下来是 4% 。如果我是京东的技术领头人, 我应该反思自己的行为和规划,架构来源于生活,如果我的生活不完美, 做出来的架构自然也不完美。 再说技术问题,.NET 和 Java 都是枪, 关键还是用枪的人, 机关枪不一定就能比狙击枪更有效率, 关键还是用枪的人。做技术的人自己应该反思自己的开发态度, 我在设计和开发的时候真的想过所有的问题吗? 还是说为了项目和进度我损失了设计和思考的时间? ”

胡海涛——“​Amazon 的今天就是中国电商的未来。电子商务的波峰低谷中会把自己的计算能力卖出去,也就是那群 server farm 里面的闲置机器。这需要整体架构更加是水平扩展和灵活性。硬件负载均衡 +PC SERVER Farm 的方式最为方便。Linux+Java 的方式最能够解决这个问题。关于技术战略,大型电商一定不能走 IT services 和 outsourcing 的路子。因为电子商务的快速灵活决定了 IT 和业务是紧密结合的。所以,suning.cn 一定会受到 WCS 的束缚。所以,一个强大的技术团队是电商的核心竞争力。技术是为了业务服务,未来如果京东转向内容提供呢?这些都需要快速的技术平台转型。 我不想比.NET 和 Java 或 PHP 之类的技术谁更加性能好,因为这些技术问题总是可以克服,就看代价如何。我们看看 Google,本质上 Google 的最底层技术文件系统是提高搜索的关键。而电商为了提高性能,势必走上定制 OS、APP Server、DB 的道路。 这样看,Linux、Java 等一套开源和近似开源的平台就更加有优势。不要跟我谈大公司的技术先进,我不认为这些高档技术在电商环境中有什么用。 ”

目前,已经​有超过一百位技术人员回复了该问题,讨论还在继续,感兴趣的读者可以查看知乎的具体帖子

2011 年 12 月 30 日 09:2315376
用户头像

发布了 501 篇内容, 共 211.4 次阅读, 收获喜欢 21 次。

关注

评论

发布
暂无评论
发现更多内容

炸了!一口气间了我18个JVM问题!

云流

Java 面试 jvm调优 JVM垃圾回收原理

开源GitHub标星30K的腾讯Redis笔记,阿里技术专家看到都赞不绝口

小Q

Java 学习 编程 架构 面试

Reactor详解之:异常处理

程序那些事

响应式 reactor 程序那些事 响应式系统 响应式架构

嗯,挺全乎儿的,Spring Boot 多环境配置都在这里了,你喜欢哪种?

比伯

Java spring 编程 程序员 架构

天秀!这份由阿里数位大牛编写的777页高可用架构+MySQL

马士兵老师

Java MySQL 编程语言 高并发 架构师

阿里又出一座丰碑!P9级架构师整合出最新最全微服务1700页手册,下载下来慢慢啃

Java架构追梦

Java 架构 微服务 springboot SpringCloud

前端如何一键生成多维度数据可视化分析报表

徐小夕

Java node.js 前端 React 数据可视化

JVM-技术专题-关闭与关闭钩子

李浩宇/Alex

朋友推荐我这份阿里面试通关手册,我却选择了字节的offer

小Q

Java 学习 程序员 架构 面试

架構師訓練營第 1 期 - 第 08 周作業

Panda

架構師訓練營第 1 期

Java动态修改LOGGER日志级别

Zhendong

Java Arthas

架构师训练营 1 期 -- 第八周作业

曾彪彪

极客大学架构师训练营

成长为软件教练的三千大道之一

华为云开发者社区

Java 敏捷开发

看完之后,不要再说不懂代理IP了!

前嗅大数据

大数据 静态IP 代理IP 短效代理 动态IP

七张图了解Kubernetes内部的架构

网管

Kubernetes k8s k8s入门

架构知识学习总结

小黄鱼

极客大学架构师训练营

技术实践丨基于MindSpore的ResNet-50蘑菇“君”的识别应用体验

华为云开发者社区

网络 mindspore 识别推理

关于静态分析技术符号执行,从一个故事讲起······

华为云开发者社区

代码 分析 静态

Pulsar Summit Asia 2020 | 场景案例论坛(下):多行业,多场景

Apache Pulsar

大数据 开源 Apache Pulsar

spring-注入配置

Isuodut

第八周学习性能优化 2 总结

三板斧

极客大学架构师训练营

甲方日常 50

句子

工作 随笔杂谈 日常

LeetCode题解:剑指 Offer 22. 链表中倒数第k个节点,递归,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

目标检测-框架之darknet-数据读取

Dreamer

架构师训练营 1 期 - 第八周 - 性能优化 2

三板斧

极客大学架构师训练营

如何使用JavaScript实现前端导入和导出excel文件(H5编辑器实战复盘)

徐小夕

Java node.js 前端 React 数据可视化

不服!阿里P8手写489页SQL优化通关手册,解决你百思不得其解问题

996小迁

sql 程序员 架构 面试 计算机

python+flask编写一个简单的登录接口例子

测试人生路

Python 接口测试

一次完整的JVM堆外内存泄漏故障排查记录

Zhendong

双“11”搞促销?用贪心算法来盘他!

王磊

算法

【DevOps实践】企业应用场景众多,怎样选择合适的代码分支模型?

嘉为蓝鲸

git DevOps 软件开发 持续交付 代码管理

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

有关京东商城采用.NET架构的社区讨论-InfoQ