架构师训练营 - 学习总结 第 4 周
这一周的课程,主要讲了互联网项目的架构演进过程。
对于典型的互联网应用,面对的挑战大致有以下这些:
1、高并发用户访问,同时在线用户会有上亿,QPS都至少几十亿级别;
这么大的访问量,传统应用很难扛得住,记得我公司在之前参加过双12的活动,从当天的0点崩溃,直到晚上的0点还没有恢复,
因为系统重启,流量又冲击进来,系统根本反应不过来就崩了;
2、应用要提供高可用,7*24小时在线是常态;
一般传统型应用,就算正常运行,也经常要找一个半夜的时间点,停机维护,而互联网应用就会收到投诉;
更不要说机器硬件故障死机等情况导致不可用了;
3、海量数据和存储和检索;
记得以前在电信一个子公司,单表上千万数据,就很慢了,一次检索几十秒,甚至几小时都有,这种服务哪个用户愿意使用?
4、用户操作习惯的多样性、网络的复杂性;
传统行业一般硬件是固定的,客户的终端或网络情况也相对固定,出问题的概率较小;
而互联网,你无法限制用户使用什么样的设备,什么样的终端;
我之前碰到的问题,用户访问始终报错,后面远程到用户电脑上一看,发现是WinXP+IE8,……
因为用户说他们大部分都是这种机器和系统,不可能升级,而阿里云也明确回复:不支持IE8……
只好重新开发适配WinXP的终端来解决问题。
5、安全问题;
因为互联网的开放性,较大的网站都会被黑客攻击,
我之前所在的公司,业务量较小,后面被百度收购后,短短1,2个月,受到了以往上百倍的攻击,几乎每天都有漏洞上报……
6、需求迭代快;
互联网产品为了应对市场的变化,需要小步快跑,常常先出一个最小可用品推出市场,然后根据反馈频繁迭代和发布,一般1,2周都有一个发布,所以对团队的项目管理、发布管理要求很高,DevOps的要求也高的多。
互联网的技术也不是一蹴而就的,也是跟着时代慢慢演进而来的:
1、最早的产品,通常是纵向扩展;
比如升级更好的CPU、更大的内存、更快速的硬盘、更高速的网络适配器等等,但是:
a、这些硬件费用高,而且 费用与性能并不是线性的,可能花10倍的钱,也就提升1倍的性能;
b、有扩展瓶颈,比如内存插槽不足、单台机器无法无穷扩展;
当然,纵向扩展的优点是不需要修改任何代码,或做任何的架构重构;
2、后续出现的横向扩展,也是互联网的主流;
就是增加服务器,理论上可以无限扩展无穷台服务器;
缺点:传统应用是不支持横向扩展的,需要重新设计,重新开发,重新部署。
互联网常用的技术点,参看本周的作业:
https://xie.infoq.cn/article/f6c092a8dce04e025618ddc47
注:解决问题虽然重要,但是找到问题,并理解问题的本质才是最重要的。
版权声明: 本文为 InfoQ 作者【水边】的原创文章。
原文链接:【http://xie.infoq.cn/article/c064094599b0b8782e8e2dd40】。文章转载请联系作者。
评论