大型互联网应用系统的技术方案和手段
大型互联网应用系统使用了哪些技术方案和手段,为了解决什么问题
问题1:规模性问题(大流量、高并发)
解决手段:
(1)垂直伸缩:常用在中小型公司的搜索领域、现在的搜索框架和技术对分布式的index和search要求比较高,因此为了简便,直接用更好的机器和SSD、更大内存来实现
(2)水平伸缩:
反向代理层:ngixn也是集群、有的公司之前花大价钱买F5
缓存层:以前的memcached,现在的redis集群,大公司复用redis-cluster的方式,加入自己的跨IDC策略,常见的set化
服务器集群:服务要设计成无状态的便于水平扩展
持久化层:mysql的主从解决读扩展、分库解决写扩展
静态资源如CDN之类技术
问题2:复杂性问题
解决手段:大的公司内部分为很多通道(可以理解为方向),出了大流量问题,还有很多业务流量并不大,解决的是复杂性问题,比如HR系统、CRM系统、ERP系统等等,常见的复杂性体现在3个方面:实体复杂、流程复杂、计算任务类复杂
(1)实体复杂/计算任务类复杂:这类要和领域专家不断的走查,最佳实践的技术方法就是DDD
(2)流程复杂:常见做法是流程和数据相分离(关注点分离),比如复用流程的开源组件(activity等),很多公司会结合业务场景会包一层提供公共服务出来
评论