你们一般用哪家 CDN? 什么价格? 买得多有折扣吗? 求推荐.
一定程度上, 我支持楼主 @
li24361 和 @
salmon5 的观点.
很多人误解了消息队列 /缓存 /高并发. 缓存并不等价于 memcache, 高并发也不等价于 HAProxy/LVS. 事实上, Java 程序员 的选择要比 Python 程序员 多, 因此 Java 总体上来说比 Python 更复杂.
1) Java 的同步 /异步锁是需要自行控制的, 这也意味着 Java 有更大的优化空间.
2) Java 在处理实时消息时有阻塞 /非阻塞的选择, 非阻塞有异步 /消息队列的选择, 优化空间很大.
3) Java 的高并发是需要自行控制线程调用的, 控制线程有很多种模型, 优化空间很大.
因此, Java 可以拥有很好的网络性能.
诚然, 现在网络服务器的瓶颈在于磁盘 IO, 但并不能说网络性能 /CPU 就不用考虑了. Java 可能无法大幅度提高性能, 但我必须指出:
1) Java 完全可以在很短的时间内编写出 Memcache/HAProxy 的替代品, 并且, 在其特定的应用场景上, 性能超越 Memcache/HAProxy.
2) 消息队列 /缓存 /高并发是 Java 的难点, 非常非常难, 我相信以上回答问题的人中, 几乎不可能有人能背出同步锁的实现方法, 因此不懂得同步锁的差异会对性能有怎样的影响.
3) 积少成多, 非常小的性能差异, 累积起来便可变成巨大的障碍.
但是, 非常遗憾, 几乎所有 Python 程序员都无法背出消息队列的基本模型, 缓存的基本模型, 同步锁的基本模型......我并不是贬低 Python 程序员, 我只是说明, 这就是为什么 Python 程序员无法理解 Java 程序员.
但是, 如果一名 C#的程序员背诵不出上述的基本模型, 那我肯定不能认同他. 因为上述模型是 C#的常识.
* 我并不是说 Java 比 Python 好, 相反, 我本人并不使用 Java.
* 但是, 任何说"消息队列 /缓存 /高并发"不难的人, 你们绝对是在扯淡, 在你眼里, 高并发就是 HAProxy? 缓存就是 Memcache? 完完全全是扯淡.
* HAProxy 和 Memcache 的性能真的不怎样, 很容易被超越. 为什么? 因为他们都是为"通用场景"设计的, 在特定场景里, 很轻松就能超越.
* 楼上绝大多数仁兄, 都是不计算线程调度的时间, 以及网络操作的时间的......
以上几个人背过多线程的基本模型??? 给你一台 20 核的服务器, 要求以最快的速度解决一千万个请求, 你会怎么做? 将请求以 HAProxy 分发, 并使用分布式计算来解决??? 扯淡!!!
如果自己不懂, 就老老实实坦诚自己不懂, 光是同步锁这一个内容, 就能写一本书, 微软年年都在研究同步锁, 每次出新的 Windows 都会使用新的同步锁模型, 你们懂不懂同步锁能造成多大的性能差异? 新浪开发的 FastSocket 你们知道吗???
楼上绝大多数人都不懂得如何发挥一台服务器的全部性能, 如何让服务器的 cpu 真正跑到 100%的占用率, 所以你们觉得瓶颈在于 IO, 实际上:
如果同步锁 /线程协调做得不好, IO 速率会非常非常非常非常低!!!
因为 IO 是占用 CPU 的!!!
所以很多人说瓶颈在于 IO, 其实很有可能瓶颈是你没有一个合适的编程模型, 导致 CPU 不断被占用, IO 需要使用 CPU 的时候抢占不到!!!
如果你写的程序不断去占 CPU 周期, 而且占得特别多, IO 受影响会非常厉害!!!
Python 做了通用的模型, 来简化程序员的工作, 使程序员不用考虑这些事情.
但 Java 程序员是需要考虑的.