第四周系统架构作业
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
首先想先提一点:系统架构一定是演化而来的不是提前设计出来的。
大多数初创企业一开始都是采用的是单体架构,前段部署反向代理服务器(nginx 或 apache)、web 应用层部署一台 tomcat 服务器 后台部署一台数据库服务来提供服务。随着客户量上来,为了确保系统的高并发和高可用性,站点层可以部署 nginx 的集群、可以部署 CDN 节点、接着负载均衡层、站点层可以可以部署成 tomcat 集群+redis 缓存层+数据库读写分离 主要采用一主多从的模式。
在以上架构升级过程中可能会带来系统耦合的问题,此时需要服务化,主要是引入微服务,如果不引入服务层有哪些痛点呢?
痛点一:代码到处拷贝
痛点二:底层复杂性扩散
痛点三:公共库耦合
痛点四:SQL 质量无法保证
痛点五:不易扩展、数据库耦合
引入服务层能解决以上痛点。
总结:根据业务不同发展阶段,系统会用到以下几种技术方案。
1、DNS 负载均衡
2、CDN(提高用户访问速度、分担部分下游的压力)
3、nginx 反向代理(提高用户访问速度、分担部分下游的压力)
4、站点层的 web 应用分布式集群
5、引入缓存层(redis 和 memcache)
6、数据库的读写分离(提高数据库的并发性能)
7、MQ 的引入 (解耦系统、提高系统处理能力)
8、微服务的引入(解耦系统、提高开发效率)
9、引入配置中心
10、各种中间件的引入(屏蔽底层复杂性)
版权声明: 本文为 InfoQ 作者【简简单单】的原创文章。
原文链接:【http://xie.infoq.cn/article/5b8dc8f3ac96348321d0d8178】。未经作者许可,禁止转载。
评论