低成本
高性能和高可用架构通常都是增加服务器来满足要求,但低成本正相反,当然也不是首要目标。
往往“创新”才能达到低成本的目标!!
技术创新:
- NoSQL(Memcache、Redis)等是为了解决关系型数据库无法应对高并发带来的访问压力。
- 全文搜索引擎(Sphinx、Elasticsearch、Slor)的出现是为了解决关系型数据库Like搜索的低效问题。
- Hadoop的出现是为了解决传统文件系统无法应对海量数据存储和计算的问题。
业界创新:
- Facebook为了解决PHP低效问题,改为HHVM。
- 新浪传统的Redis/MC+MySQL,扩展为Redis/MC+SSDCachhe+MySQL方式,SSDCache解决了Redis成本过高容量小的问题,和DB穿透的压力。
- Linkedin开发了Kafka消息系统。
- 将Ruby on Rails改为其它语言框架的很多。
小公司引入新技术、大公司可创造新技术。
安全
安全旧闻:
- 2016年雅虎信息泄露,逾5亿用户资料在2014年被窃取。
- 2016年10月美国遭到最大规模的DDoS攻击、东海岸网站集体瘫痪
- 2013年10月、浙江慧达驿站网络安全漏洞致使2千万条酒店入住客户信息泄露。
安全分两类:
1、功能安全
例如常见的XSS攻击、CSRF攻击、SQL注入、Windows漏洞、密码破解等,本质上都是系统实现有漏洞,让黑客有了可乘之机。功能安全就是“防小偷”
没有无漏洞的系统,攻防不断升级,没有一劳永逸。
2、架构安全
“放强盗”,只要服务器部署到网络中,攻击可能从全球任意地点发起攻击。
传统架构安全主要依靠防火墙访问控制策略,控制不同新人成都的区域间传输数据流。
防火墙性能上不足以支撑高并发和海量用户访问。尤其是DDoS攻击规模尤甚。
目前没有太好的设计手段解决,更多是依靠CND云服务等强大的带块和流量清洗的能力。
规模
量变引起质变,规模导致复杂
常见的规模带来的复杂度有:
1、功能越来越多,导致系统复杂度指数级上升
功能见两两相关,增加功能复杂度则成指数增加。
2、数据的增长,导致复杂度发生质变
MySQL为例,单表存储限度一般在5000万左右,如果增加到10亿就会出现以下问题:
- 添加索引极慢,导致不可用
- 修改表结构极慢
- 索引性能极低
- 数据备份耗时
- ……
可以通过拆表解决,但拆分过程会引入复杂行,如:
- 拆表规则
- 拆表查询
无论什么方案都会带来一定的性能损耗