架构师训练营 Week4
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述.
一个典型的互联网数据请求流程图大概如下图:
可以将以上流程图进行技术栈进行简单拆分成前端和后端进行归类:
1)前端模块:
前端主要涉及Web端,以及涉及到的图片视频资源的缓存,域名解析等。
Web端主要使用常用的Javascript开发框架例如VueJs,ReactJS, AngularJS等, CSS框架有Bootstrap, Element UI, Ant等。
反向代理可以使用Ngnix等做静态资源缓存等。
静态资源缓存方案和前端CDN目前了解比较少,暂不展开。
2) 后端模块:
后端包括粗略的说包括Web服务器,NoSql, 分布式缓存Redis, 本地缓存例如内存硬盘之类的,以及Mysql/SqlServer等关系型数据库。
现有的服务架构一般讲究微服务,业务进行垂直拆分,这就演变成了如下架构:
所有的Http请求都是基于GateWay来调用,目前C#.net领域做GateWay的解决方案有Ocelot.
同时要做到动态伸缩扩容服务器,此时就要求有Consul来做服务注册与发现。
考虑到特殊情况,还要进行服务限流/熔断/缓存/和并请求等,此时需要用到服务治理,解决方案有Polly等。
在分布式系统中,免不了要用到分布式事务,解决方案有CAP等。分布式追踪系统方案有SkyWalking.
在授权用户登陆方面,有IdentityServer4和JWT方案。
对于有序的消息队列方案有:RabbitMQ, MSMQ等。
对于定时任务有:Quartz.net等。
服务器运维编排涉及到K8S, Docker等。
自动化集成CI/CD工具,有Jenkins工具。
评论