架构师训练营第四周作业
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
前端架构
App 及 Web 开发技术
快速开发业务应用,只需要关注业务逻辑
移动端开发:Android、IOS、Flutter
Web 端开发:
MVC 框架-WebX,Spring、Django、Flask
wen 框架:react、vue
浏览器及 HTTP 优化技术
Http 缓存:静态资源
前端代码资源压缩:Gzip 压缩
CDN
内容分发网络,前端缓存
解决因分布、带宽、服务器性能带来的访问延迟问题,适用于站点加速、点播、直播等场景。使用户可就近取得所需内容,解决 Internet 网络拥挤的状况,提高用户访问网站的响应速度和成功率。
动静分离
将网站静态资源(HTML,JavaScript,CSS,img 等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。
静态资源放在 Nginx、CDN
Lighttpd+PHP
图片服务
专门为图片读写操作优化的独立服务器
分担 Web 服务器的 I/O 负载 - 将耗费资源的图片服务分离出来,提高服务器的性能和稳定性
能够专门对图片服务器进行优化 - 为图片服务设置有针对性的缓存方案,减少带宽成本,提高访问速度
提高网站的可扩展性 - 通过增加图片服务器,提高图片吞吐能力
Lighttpd
反向代理
用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为 Web 加速
提高内部服务器的安全
加快对内部服务器的访问速度
节约了有限的 IP 资源
Squid、Nginx、Tengine
DNS
域名服务,域名解析成 IP
GeoDNS:返回最近的机房的 IP 地址
网关及应用层架构
网关架构
隔绝网站应用服务与外部服务商应用的直接访问
限流
限定访问,ip、域名、请求等非法信息拦截
日志记录
不会因为业务增加而导致网关系统重启
SpringCloud Gateway、Zuul、Kong
负载均衡
将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。
LVS,Nginx、HAProxy、Load Balancer
动态页面静态化
业务拆分
横向拆分
应用、数据库、文件服务拆分
纵向拆分:
分布式
服务层架构
微服务框架
业务分工,各司其职
SpringBoot、Dubbo、Akka、VertX
分布式消息队列
应用耦合,异步消息,流量削锋
Rabbitmq、Kafka
分布式缓存
解决数据库服务器和 Web 服务器之间的瓶颈
Memcached、TbStore、Tair、redis
分布式一致性(锁)服务
为分布式应用提供高效可靠的分布式协调服务
Zookeeper
存储层架构
分布式文件
可横向扩展、冗余
TFS、HDFS、Minio、S3
分布式关系数据库
不改变业务代码实现,提高数据库处理能力
Mysql、Oracle 集群模式
借助中间件:Mycat
NoSQL 数据库
超大规模数据的存储,横向扩容方便,支持大量数据写入
Mongo、Hbase、Cassandera、cassandra
后台架构
大数据平台
Hadoop、Spark、Flink
搜索引擎
Lucence、Isearch、Elasticsearch、Solr
推荐引擎
数据仓库
Hive
运维与安全
数据采集与展示
ELK、Flume
数据监控与报警
Elastic: APM、Beats、X-pack(alert)
攻击与防护
WAF(web 应用防火墙)
数据加密与解密
HTTPS
SSL
版权声明: 本文为 InfoQ 作者【xs-geek】的原创文章。
原文链接:【http://xie.infoq.cn/article/06e413eea661733da2e7d4cf1】。未经作者许可,禁止转载。
评论