架构师训练营第四周作业
一、一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
前端架构
App 及 Web 开发技术
采用混合开发模式及响应式布局方式,提高 App 和 Web 端的开发速度,快速响应需求。原生开发可以使用 Flutter 提高 iOS 和 Android 的开发速度。
浏览器及 HTTP 优化技术
使用浏览器缓存和压缩技术提高前端页面的响应速度
CDN
将静态资源部署到离客户更近的 CDN 服务器上,提高网站的响应速度。
动静分离
使用 CDN 技术,将静态资源和动态资源分别部署
图片服务
将图片压缩并进行单独服务管理,提高服务器使用效率
反向代理
使用 Ngnix 反向代理,将应用请求分散到不同的服务器上
DNS
网关及应用层架构
网关架构
使用 API 网关将各系统对外暴露的服务聚合起来,所有要调用这些服务的系统都需要通过 API 网关进行访问,基于这种方式网关可以对 API 进行统一管控,例如:认证、鉴权、流量控制、协议转换、监控等等。
负载均衡
使用 Ngnix 反向代理,将应用请求分散到不同的服务器上
动态页面静态化
将动态页面进行静态化,再使用动静分离
业务拆分
根据 DDD 设计思想,将高内聚低耦合的业务进行拆分部署
服务层架构
微服务框架
使用 SpringCloud 套装,将服务进行拆分后进行管理
分布式消息队列
使用 kafka 消息队列,对服务间的访问进行解耦
分布式缓存
使用 Redis 缓存替代数据库的直接访问,提高数据的吞吐
分布式一致性(锁)服务
服务拆分后需要使用分布式锁 Zookeeper 确保事务的成功
存储层架构
分布式文件
使用 HBase 进行分布式文件的管理
分布式关系数据库
使用 TiDB 作为分布式关系型数据库
NoSQL 数据库
使用 lucence 作为数据的存储,提高数据检索速度
后台架构
大数据平台
使用 Hadoop 作为大数据通用处理平台
搜索引擎
推荐引擎
数据仓库
运维与安全
数据采集与展示
使用 Flume+Kafka+logstash+ElasticSearch+Kibana 实现日志收集及展示
数据监控与报警
使用 Prometheus 进行监控
攻击与防护
通过密码和手机校验码进行身份认证;登录、交易等操作需要对网络通讯进行加密,网站服务器上存储的敏感数据如用户信息等也进行加密处理;为了防止机器人程序滥用网络资源供给网站,网站使用验证码进行识别;对于常见的用于攻击网站的 XSS 攻击,SQL 注入,进行编码转换等相应处理;对于垃圾信息、敏感信息进行过滤;对转账交易等重要操作根据交易模式和交易信息进行风险控制
数据加密与解密
网络使用 https 进行通讯,防止信息窃听
二、学习总结
所有的进步都是问题驱动。
本周从三个方面对架构进行了学习。
第一天学习从互联网软件的挑战“高并发、大流量、高可用、需求变化”开始,提出高并发了对应的解决方案。
->垂直伸缩:提高单机硬件能力。优势:见效快,软件修改成本低,设计简单;缺点:硬件成本高,有上限
->水平伸缩:通过多台机器分散单机压力。类似一个公司的发展,通过一个岗位招聘多个人来提高产能,但是人多了管理势必复杂。优势:解决并发无上限;缺点:软件成本高,设计复杂。
第二天学习一般互联网软件的发展历程:
单体应用->应用数据分离->使用缓存->集群化部署->数据库读写分离->反向代理和 CDN->分布式系统和分布式文件->使用 NoSQL 和搜索引擎->业务拆分->微服务和中台化->大数据和智能化
第三天学习互联网的架构模式
垂直分层、水平分割、分布式提效、集群做备份、缓存提速、异步解耦、冗余做备份、自动化运维、安全
本人近 10 年从事的是 toG 的软件研发,该行业主要是政府内使用,较少有高并发的情况,主要是解决的问题是业务逻辑复杂、高可用、易用和对业务的快速响应方面。
第一阶段:局域网的局内办公系统。 C/S 架构,稳定性高,性能好
第二阶段:政务网的多单位多办公地点交互。B/S 架构,解决运维压力
第三阶段:移动办公。采用 app、web 混合模式,提高业务响应速度
第四阶段:大数据辅助决策。使用分布式文件存储和 ETL 工具建设数据仓库;使用机器学习等技术,辅助业务办理审批
第五阶段:互联网+政务。目前政府服务理念的转变,系统除满足局内用户外,还服务与公众,对高并发和高稳定性提出了新的要求。采用 SpringCloud 微服务架构对业务进行水平扩展,提高系统性能。
评论