架构师训练营第 4 周作业
作业
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
内容
结合课程中讲到的内容,我分缓存、数据库集群、反向代理及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. 大数据与智能化
大数据与智能化可以利用企业的数据资产,一方面为公司提供运营的数据指标,一方面也通过分析的用户行为数据,为用户提供更加便捷的服务
评论