8,一个网站资深架构师曾说过:在互联网公司呆一年,相当于在传统软件公司呆三年。他的意思大概是在互联网公司一年遇到的问题比传统软件公司三年遇到的问题还多。而且随着网站业务的快速发展,问题也层出不穷,每年遇到的问题都不同。遇到问题,解决问题,经历了这个过程,技术才能升华,人和技术才能融为一体,才知道什么技术是真正有用的,什么技术是花拳绣腿。
1、单机。
2、应用服务器和数据库分离。
3、应用服务器再分集群。(负载均衡策略5种;调度算法10种;集群模式3种;session共享4种方案)
4、数据库再读写分离。(mysql主从;中间件)
架构细节:
注意:同一个数据库也可以使用多种存储引擎的表。
如果一个表要求比较高的事务处理,可以选择InnoDB。
这个数据库中可以将查询要求比较高的表选择MyISAM存储。
如果该数据库需要一个用于查询的临时表,可以选择MEMORY存储引擎)
6、缓存环境读压力:应用层和数据库层的nosql(除了加速,专门放key-value这类数据);
页面缓存(cookie)。
7、数据库垂直分和水平分:
7.1 根据业务垂直分。(需要join数据库查询时,可用mycat,但据说效果不好也没人维护)
7.2一个表数据水平分给几个库。(sql路由、主键、分页这些问题,也可以通过mycat解决)
8、根据业务拆分应用:
举个例子,业务123都有各自集群,如果业务2、3都用到了1,会有重复代码问题。所以有了SOA架构,面向服务,很多业务庞杂的传统公司都这样架构,根据业务功能拆分模块,模块间用接口通信,旧的项目在用webservice,新一点的进化到dubbo,现在大家都在向微服务转 springcloud
可是,SOA架构,如何远程调用?答案是消息中间件。