写点什么

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

用户头像
木头发芽
关注
发布于: 2020 年 10 月 11 日

作业主题:一个典型的大型互联网应用系统使用了哪些技术方案和手段



通过几周的学习及对以往的工作经验和知识储备的总结如下:

一.数据库

1.关系型数据库

用于对事务要求较高的业务进行存储,如订单及涉及账户余额操作等对隔离性和一致性较高的业务.常用 Mysql数据库.

主要技术方案和手段:

a.读写分离--当读多余写时可以建多个从数据库用来做读写分离

b.冷热数据分离--当单表数据库过大,超过单表极限影响数据库性能时,如果表是与时间热度先关的,可 以用定时任务把历史冷数据迁移到其他数据库里,从而保持数据库性能.

c.分库分表--当单表容量过大时可以把表进行拆分成多表从而降低单表过大索引不能全部载入内存导致IO过多影数据库性能;对应单库TPS过大的情况可以采用拆分成多个数据库的方式.

分库分表会导致访问数据库层的代码重构引适应分库分表,没有必要最好不要使用分库分表.

4.分布式关系型数据库--相比手动分库分表,会自动的把单表数据切分成多个表存储,对数据库访问层隐藏分片细节,对业务无侵入.如OceanBase数据库.



2.NoSql数据库

对于文档型的业务数据或对事务要求不高的业务可以使用NoSql来存储,如MongoDB数据库.

主要技术手段:

a.天然支持分布式--相比传统关系型数据库拥有近乎无限的水平扩展能力

b.切片集群--数据可以根据配置分步在多个数据节点上

c.分布式事务--MongoDB4.2版本以后支持分布式事务,其实现原理为二阶段提交,先由主事务节点发起通知,其他节点回应通知告诉主节点就绪或无法执行事务,主节点再发起执行事务或撤回.



二.分布式缓存

如果所有对数据的访问都直接访问数据库就会对数据库造成很大的压力,各种常用的数据查询都可以使用缓存来减缓数据库压力和提高查询响应速度.

主要技术手段:

1.缓存穿透--当分布式缓存增加或减少节点时可能会导致缓存重新分布降低缓存命中率从而穿透缓冲直接落到数据库上,高峰时可能会因此导致雪崩,因此需要用更好的缓存分布式算法降低增加减少缓存节点带来的命中率降低问题.



三.对象存储/CDN

1对象存储--类似分布式文件存储系统,比较适合存储图片/视频等大文件

2.CDN--内容分发网络,可以把分布式文件复制到各个分发节点,用户访问文件时根据用户距离最近的节点提供文件的下载.



四.负载均衡

应用服务集群需要负载均衡来分散客户端请求的压力从而让服务集群可以水平扩展

1.四层负载均衡--TCP层负载均衡如LVS

2.七层负载均衡--应用层负载均衡如NGINX



五.微服务架构

一个应用根据业务拆分为多个微服务是目前主要的架构方式



六.RPC框架

微服务架构下各个服务之间的通讯会非常多,如果用http的方式通信会加到通讯模块的开发工作,因此服务间通信采用RPC方式来通讯是一个方便的选择

1.GRPC--Google的RPC框架,基于http2.0 传输包体更小,发送效率高,包头小

2.ProtoBuffer--序列化框架,相较于json拥有更高的序列化速度和效率



七.消息队列

消息队列是解耦微服务和换从各个服务之间消息处理速度差异的利器.可以异步的数据处理都可以用消息队列来通信

1.削峰填谷--对于业务高峰时段,消息队列可以缓存队列消息,让下游消费端慢慢处理

2.解耦微服务--各个微服务都可以订阅消息队列,实现解耦微服务



八.推荐系统

推荐系统是连接海量的数据和用户兴趣特征的桥梁,可以让应用给用户展示他们兴趣的商品/视频/文章

1.TensorFlow人工智能框架

2.spark等大数据系统



九.容器技术

docker等



用户头像

木头发芽

关注

还未添加个人签名 2019.02.14 加入

还未添加个人简介

评论

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