写点什么

架构师训练营 1 期 -- 第四周作业

用户头像
曾彪彪
关注
发布于: 2020 年 10 月 18 日

一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。


答:一般大型互联网应用都采用了如下技术或方案:

  1. 应用与数据分离,将应用程序和数据库或者文件系统部署在不同服务器上,目的是解决单一服务器的资源限制问题。这种架构虽然简单,但体现了互联网系统架构的一个重要思路,通过添加服务器增加系统资源。

  2. 使用缓存技术,缓存可以分为本地缓存和远程分布式缓存。一般这两者都会结合使用,本地缓存未命中时,会请求远程缓存。使用缓存的目的是降低数据库或文件系统的压力,提升系统的性能和降低应用响应时间。缓存是互联网系统中非常重要的技术手段,用好缓存可以极大提高系统性能。

  3. 使用负载均衡技术构建应用服务器集群。单一应用服务器总会受到资源限制,如带宽,计算机资源如 CPU,内存等。构建一个应用服务器集群,将用户请求分发到各个应用服务器上,就可以实现平滑扩容。构建应用集群可能带来一个问题,就是一致性 session 的问题,一般可以使用将 session 放在 redis 中,来实现一个分布式 session。另外可以根据客户 IP 进行 hash 路由,将同一个用户请求分发到相同服务器。负载均衡服务器也是实现系统高可用的一种手段,当有服务器宕机时,请求会被分发到其它服务器。

  4. 数据库读写分离,所有数据库写请求提交到 master 服务器,读请求可以提交到 slave 服务器。这主要是解决数据库服务器资源瓶颈问题。在互联网系统中,数据库服务器是最容易出现性能瓶颈的地方,所以使用缓存或读写分离,是很常见的方案。

  5. 使用反向代理或 CDN 进行网站加速。CDN 其实是一种缓存技术,将静态资源缓存到网络运营商的机房中,用户请求这些资源时,就可以从最近的机房获取数据。如果就近机房找不到,则去代理服务器找,如果代理服务器找不到,才去应用服务器找。最终只有少部分中的少部分资源请求到大应用服务器,极大降低了应用服务器压力,提升了网站性能。一般的互联网系统中大部分内容,如图片,脚本,都是从 CDN 获取的。另外现在的直播行业,也大量使用 CDN,提升用户体验。

  6. 使用分布式文件系统或分布式数据库系统。这还是解决单一数据库或文件系统带来的资源限制问题。当需要存储的数据非常巨大时,单台服务器是存储不下的。并且随着数据存储的增加,那么数据库服务器性能也会变差,这时候我们需要将数据或文件存储到分布式的数据库或文件系统中。

  7. 使用 NOSQL 和搜索引擎。关系型数据库有其有点,比如支持事务功能,但是互联网系统的需求五花八门,有些需求使用关系型数据库就很难实现,或者实现起来效果不好。比如全文索引,对查询结果排序,高亮显示等等。这时候 NOSQL 和搜索引擎就是很好的选择方案。NOSQL,搜索引擎和关系型数据库不是替代关系,而是互相补充。

  8. 业务拆分,将不同的功能模块拆分成独立的应用系统,各个系统独立开发,部署。这样带来的高处是降低耦合,每个团队负责一个系统,工作更高效,另外系统也更容易排查问题,系统运行更稳定。不同的应用系统之间可以通过 RPC 或消息队列进行通信。

  9. 微服务和中台画,拆分后的业务系统,如登录系统,商品系统,如果需要被多个其它系统调用,就可以下沉对这些应用,将其构建成微服务,大量这样的微服务就构成中台。中台构建好好,当需要开发新的产品是,只需要依赖中台提供的服务和规范,就可以比较容易的构建自己的系统。

  10. 大数据与 AI 技术。互联网系统中,除了业务数据,还有许多其他的数据也是非常重要的,比如用户行为,系统日志等等。这些数据规模非常大,要对其进行存储和分析,就需要借助大数据平台。大数据平台的数据又可以成为 AI 的数据来源,通过一些 AI 技术,得到一些智能分析的结果,这些结果可以作为决策冲的重要参考依据,或者给用户比较友好的引导...

用户头像

曾彪彪

关注

还未添加个人签名 2019.03.23 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 1 期 -- 第四周作业