写点什么

系统架构第四周作业「架构师训练营第 1 期」

用户头像
天天向善
关注
发布于: 2020 年 10 月 10 日

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

 

一个系统要使用哪些技术,需要考虑现有的状况,用户数有多少,它每日的高峰期的时段的有多少人访问,其它时段平均有多少人访问,这些访问的行为写入行为有多少,读行为多少。

现状有已有系统需要面对更多的用户访问,需要通过什么技术方案与或落地的技术手段,让现有的业务支撑更多的人访问。

还有一种现状是只有业务,还没有系统,对业务抽象后,变成系统,这个系统是从0到1的,一上线这个系统要应对多少人的访问,实现业务,解决这些用户需求。

解决现有的一些问题,一般都是非功能性的问题,突出优先的是高性能,比较粗粒度的就是现有系统可进行垂直伸缩,就可以解决了。还有一种情况就是考虑横向扩展,需要增加新的服务器节点,就可以解决性能上的问题。

同时还需要考虑功能性的问题,扩展性,即新增一个功能。最好的状态是完全隔离,没有依赖,不会牵连其它产品,模块。或是访问入口隔离了,或是只是依赖一个核心的引擎处理。

当然理想状况是比较少的,表现形式例如独立的子系统,微内核架构,使用分布式消息驱动的通过共享数据消息实现业务产品之间的交互,而不是共享数据库。

 

这个系统的现状态如果定义为大型系统,一开始上线就是有较多的用户,怎么让这些用户可以正常并且快速的操作实现他们的需要,以终为始,考虑你要设计的方案与使用的技术是否可以解决这些问题。

 

考虑架构核心要素,衡量的标准有高性能,高可用,可伸缩,可扩展,安全。在设计阶段就需要考虑开发时要怎么做,部署时要怎么做,线上运维时要怎么做。

高性能的表现形式:访问的响应速度快。在设计阶段,在单体应用如何开发出高性能的业务。部署时,你的技术设计方案要支持垂直与横向扩展。在部署运行后,系统硬件层,网络层,应用层jvm调优,中间件调优,用户端app或网页端如何优化。

高可用的表现形式:冗余,一个应用节点宕机后,还能正常提供服务。可以是一个业务多份部署,各个节点身份对等即集群部署,一主一从部署,一主多从部署,或是集群节点一主一从或是一主多从中节点有身份差异,主负责写,从提供读,有节点不能提供服务后,还能通过先举算法,进行身份切换。

可伸缩:指的是在部署后,可以新增加服务器节点,就可以横向扩展。

可扩展:在新增功能时,可以最小范围的依赖,关联影响。可以减少测试的工作量,缩短上线开发的时间。

安全:抵御攻击和数据安全。

 

核心要素是衡量标准,是指导思想,落地的方案有哪些?考虑架构模式有:分层,分割,缓存,异步,安全等架构模式。

分层:写代码时,将你的代码分为视图,逻辑,数据操作层,目的就是为了解藕,更好新增,修改代码。

分割:将一个模块拆分,按业务边界或是流量大小拆分。拆子系统或是单一功能。

缓存:本地缓存,集中式远程缓存,反向代理缓存,cdn缓存,dns缓存。目的一,将计算结果缓存,减少cpu再次计算;目的二,将查询数据结果缓存,通过内存减少数据库或是存储应用,磁盘的访问压力,提升访问速度。

异步:各个子系统或是模块,在编码上的解藕,在新增或是修改时可以聚焦,新开发的功能最小范围影响其它功能。在运行时,可以故障隔离。可以加快响应用户,通知用户我已收到请求了。可以在突发大流量访问时消峰,避免系统应对处理不了而造成卡或是宕机。

安全:xxs,csrf,sql注入,数据加解密安全等,设计时怎么防止这些问题出现。

通过这些标准或是规范,结合现有状况与需要达到的标准,考虑选择具体开发要选型的技术。对于一个系统可以进行逻辑上分层。

系统逻辑分层有:前端,网关及应用架构,服务层架构,存储层架构,后台架构,数据的机房架构。其它两个辅助架构,安全架构,数据采集与监控架构。

各个技术架构上选型,考虑是否可以解决问题,成本因素,已有团队擅长的技术栈,学习的曲线,这种技术社区的支持等因素,为各件技术架构选用符合目标开发的技术。各类架构技术的选型方向如下



发布于: 2020 年 10 月 10 日阅读数: 33
用户头像

天天向善

关注

还未添加个人签名 2018.04.27 加入

还未添加个人简介

评论

发布
暂无评论
系统架构第四周作业「架构师训练营第 1 期」