架构师训练营第四周学习总结

用户头像
Bruce Xiong
关注
发布于: 2020 年 07 月 01 日
架构师训练营第四周学习总结

大型互联网应用的特点



第一个特点就是高并发和大流量。大型互联网需要面对高并发的访问用户,比如说在双11的时候,一分钟之内,有上千万以上用户访问整个系统,会产生大量的并发用户请求和巨大的访问流量,系统必须要有足够强的处理能力才能够应付。



第二个是系统要高可用。大型互联网系统必须要7×24小时不间断的提供服务,和传统软件系统不同,银行或者是电信甚至零售业,它们都有下班时间,下了班以后可以对系统进行停机维护和升级发布,但是互联网没有下班时间,所以一直要保持高可用,7×24小时永不间断。为了保证系统的高可用,必须要进行特别的系统架构设计。



第三个特点是海量的数据存储。因为互联网需要满足大量的用户使用,所以这些用户会产生很多的数据,需要对这些数据进行重组和管理。除了用户提交的数据,互联网还会采集很多的其它数据,包括一些用户行为的数据,第三方的数据以及网络爬虫获取的数据,通过大数据技术对这些数据进一步的进行分析,对用户进行更精准的营销和服务,以发现新的业务增长点。



第四个特点是用户分布广泛,网络情况复杂。互联网是为全球用户提供服务的,用户分布范围广,各地的网络情况千差万别,为了使所有用户能够得到统一的良好的体验,需要对系统架构进行相关的设计。



第五个特点是安全环境恶劣。因为互联网是开放的,所以使得互联网站很容易就会受到攻击。



第六个特点是需求变化快,发布频繁。和传统的软件版本发布频率比,互联网产品为了快速适应市场,满足用户需求,发布频率是非常高的。比如office这样的产品发布版本是以年为单位的,而大型网站的产品发布一般是以周为单位的,每个星期都会发布新的版本更新产品特性。



第七个特点是渐进式发展。不同于传统软件产品或者企业应用系统,一开始就规划好全部的功能和非功能需求,几乎所有的大型互联网站都是从一个小网站开始,渐进式发展起来的。

大型互联网应用架构应该遵循的渐进式原则

渐进式原则,根据发展到不同的规模阶段,采用不同的手段去处理各个阶段遇到的问题。例如:系统一天只有几十人、上百人使用时。直接一上马就用分布式数据库、分布式事务等手段,这样就无故的增加了开发的复杂度和开发成本,并且也增加了出现问题解决问题的难度。

大型互联网应用架构应该遵循的方法

如果当解决某个问题通过 垂直伸缩 所需要成本(时间、人力) < 水平伸缩 所需要成本(时间、人力)就最好用 垂直伸缩。

大型互联网应用架构应该遵循的模式方法

分层 通过对系统按横向维度分成多个部分,每个部分职责单一、通过上层对下层的依赖调用完成整个系统。如:网关层 -> 业务层 -> 服务层 -> 存储层。

分割 就是对系统按纵向维度分成多个独立的模块。形成内聚低耦合的功能模块,便于分布式部署。如:会员服务、订单服务、商品服务 等。

分布式 就是根据分层分割后的系统服务部署在不同的机器,通过远程调用(RPC)、MQ将各个模块进行协作。

集群 就是将独立的模块集群化,通过负载均衡共同对外提供服务,从而达到处理更多的并发。

缓存 是我们提升应用性能的第一手段,通过常会采用 CDN、反向代理、应用服务器本地缓存、分布式缓存

异步 是除了分层、分割、分布式的另一种系统解藕和提升系统性能的手段,同时异步还可以加快系统响应的速度、消除并发访问高峰(减小阻塞)、提升系统的高可用性。如:正在兴起的Spring WebFlux 也是基于异步这种手段来实现的。

冗余 7X24小时高可用就是要服务器永不宕机、数据永不丢失 冗余就是一种解决问题的手段,所以我们的服务器要冗余运行、数据要冗余备份。

自动化 7X24小时高可用,需求变化快频繁发布 自动化是必不可少的手段。自动化可以分为运维层、产品交付层两个方面的协作。

交付层:例如:开发人员交付测试代码后、系统可以自动的根据测试人员编写的测试脚本 自动测试出结果并反馈;当一切测试完成之后系统可以自动的完成线上发布工作。

运维层:日常的服务器巡检、日志清理、系统漏洞修复等等,都可以自动的完成。

安全 会有存在几个方面对外部的黑客、恶意攻击者、竞争对手的 安全防范问题,还有对内部员工的安全防范问题(例如:rm -rf / 之类的误操作、导出客户资料等等)。

解决这个问题通常会采用这些手段来处理。

1、代码安全编码规范(例如:不能明文保存密码、敏感数据加密保存、接口防重放机制、防刷机制、防SQL注入、防XSS注入攻击、涉及资金相关的操作都需要明细账、遵循最小权限原则等)

2、蜜罐技术(入侵检测)、防火墙(软、硬)

3、定期安全扫描、升级漏洞(系统、第三方jar包)

4、相关审计(如:用堡垒机去操作服务器维护、操作数据库维护;)

5、自动化的监控(如:某个功能突然访问量暴涨)

数据采集与监控 采集用户访问行为、服务器指标、服务器日志,监控服务器状态、应用程序状态、调用链路监控等。



用户头像

Bruce Xiong

关注

熊大 2017.10.18 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第四周学习总结