架构师训练营第 4 周作业

用户头像
Season
关注
发布于: 2020 年 07 月 01 日

作业

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



内容

结合课程中讲到的内容,我分缓存、数据库集群、反向代理及CDN、微服务与中台和大数据与智能化六方面讲述。

1. 缓存

缓存主要是较少数据库压力,适用于读多写少的场景,比如维基百科等。常见的缓存有:

  • 应用内缓存,常用的有ehcache,guava cache等,应用内缓存最快,但是重启后往往会丢失(除非做特殊的设计),且不能夸进程共享,因此可作为分布式缓存的补充

  • 分布式缓存,常见的有redis,memcache等,基于内存的设计,效率比较高,且数据不容易丢失,可跨进程跨服务器共享

  • 浏览器缓存,Web应用中可对响应通过http头,设置缓存合理时间,较少不必要的服务端交互,提升用户体验。

2. 数据库集群

  • 数据库读写分离, 数据库的读写分离技术,可以分担主库过大的读请求。

  • 分布式数据库, 当业务数据库中的数据大到一定数量(千万级)时,可考虑对数据库进行分库分表,常见的有根据对大表进行分片,按业务进行拆表等,然后通过数据库中间件(例如mycat, shardingsphere等)访问数据库

3. 反向代理及cdn

  • 反向代理,主要用于服务器的负载,常见的有nginx, haproxy, lvs, 也可使用云服务商提供的slb

  • cdn可以将文件缓存到离用户最近的节点,提升用户下载资源的效率,同时也减少了业务服务的压力,通常只有少量回源的请求回访问到业务服务器。常用于缓存网页,图片,视频等静态资源,也常用于直播的推拉流



4. nosql及搜索引擎

常见的nosql数据库有mongodb,hbase, cassandra等,主要是用于大量数据存储的问题

搜索引擎,常见的有solr, elasticsearch等,主要是为了解决全文搜索问题,也可以作为在线分析系统使用。



5. 微服务及中台

微服务主要是为了解决单体开发中带来的项目复杂难理解,跨团队协作困难,项目迭代缓慢等问题(单体地狱)。常见的微服务框架/基础设施有dubbo,spring cloud,istio (servicemesh)等。

中台主要解决的是企业内服务复用的问题,介于前台和后台之间,为前台提供快速试错的基础服务,扩展后台过度僵化的功能。



6. 大数据与智能化

大数据与智能化可以利用企业的数据资产,一方面为公司提供运营的数据指标,一方面也通过分析的用户行为数据,为用户提供更加便捷的服务



用户头像

Season

关注

还未添加个人签名 2019.09.28 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第 4 周作业