极客大学 - 架构师培训 -ch4 作业
问题:一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
这个问题其实横纵范围都比较大,并且也很难在较短的篇幅及时间内回答的非常全面,我仅从我有限的时间,依据我个人有限的工作经验来进行总结和归纳。
首先从架构师的类型来简单的聊一下我的观点。我认为的【技术】架构师大致分为四种类型:应用架构师、系统架构师、基础设施架构师和企业架构师,每种类型的架构师在一个大型互联网应用系统中所面对的问题肯定也是不一样的。
应用架构师主要负责一个应用内部的架构问题,通常的职责范围是在一个或多个子系统或者应用域内部,或者是在一个规模中小型的技术团队或项目组内部。譬如如何为一个应用搭建一个合适的脚手架,制定代码的分层、开发规范,项目内核心模块的设计、还有诸如开源组件的技术选型等职责。
系统架构师主要负责一个或多个子系统之间的架构关系,常见的职责是子系统或者子应用域的规划及管理,微服务化的设计,企业既有分布式相关服务的选用或接入方案等。系统架构师在一个团队内往往可以和应用架构师的角色合并,负责除了业务逻辑开发以外的所有架构相关事项。
基础设施架构师主要负责基础设施模块的架构,比如企业范围内我们要提供一个Redis的公共服务,让其他项目组的应用接入Redis像接入服务一样方便,那么这样一个基础设施的架构应该怎样设计才能满足企业范围内不同应用对缓存服务的不同需求,这是基础设施架构师的职责。
企业架构师主要负责一个企业整体的技术架构,比如企业整体上要建设哪些基础设施,如图片基础服务是自建还是接入外部供应商的,服务器设施是自己搭建机房还是选用公有云服务商的,是否要提供企业范围内的缓存服务,是否要建设企业自己的大数据平台等等。
每个企业对架构师的定义和职责安排也都不一样,但大体上不管架构师的分类如何变化,或title如何定义,上述相关的职责事项都还是必须有对应的角色承担。正如智慧老师所说,只要你在做架构相关的事,你就是架构师。
接下来我基于从架构师的职责角度来简单的归纳一下文章开头的问题。因为架构师要解决的技术问题,基本上就是一个企业互联网应用所遇到的问题。
应用架构师和系统架构师主要解决的是一个具体项目团队内部的技术架构问题:
统一开发模式:定制化开发框架
优化开发效率:定制代码生成器、二次封装三方工具包/类
特定业务领域的模块化、组件化或者微服务化:领域设计、微服务设计、使用API网关技术
应用的鉴权问题:鉴权系统的接入
应用的负载均衡问题:负载均衡器的搭建或服务接入
应用会话管理问题:可以使用数据库或各类分布式缓存
单表查询效率问题:分库分表
应用执行效率问题:响应式模式迁移
应用可用性问题:引入熔断限流组件
基础设施架构师主要解决基础设施相关的架构问题:
企业应用间的消息传递问题:提供自研或二次封装的RPC框架、分布式消息队列
企业应用的分布式缓存问题:提供分布式缓存服务,如Redis服务集群
企业应用的分布式选举/锁的问题:提供分布式选举服务,如ZK服务等
企业应用的网络安全性问题:提供防火墙网关服务,如统一的边界网关服务
企业应用的链路监控、日志查询问题:提供全链路监控基础设施、分布式日志收集及分析服务
企业应用的分布式事务问题:提供分布式事务相关基础组件及开发模式
企业应用的分布式文件传递/存储问题:提供分布式文件系统等基础设施,如HDFS
企业应用的关系型数据库效率问题:提供分布式的数据库设施,如TiDB
企业应用的大数据分析问题:提供大数据平台或相关基础设施
企业应用的数据分片、路由问题:提供类似DNS模式的分布式地址查询服务,以及分库分表等基础组件
企业应用的分布式定时任务问题:提供分布式任务相关基础设施,quartz/elastic job等开源解决方案
企业应用的权限管理问题:提供基础的鉴权服务,基于SSO或者Oauth等技术方案
企业应用的延迟问题:提供CDN的接入服务
企业应用的计算资源问题:提供容器化及无服务化的部署设施
企业架构师要解决的问题往往不会细化到应用这个层面上,其往往是企业整体架构或战略方面的技术问题,这边就不做举例说明了。
以上就是针对第四章作业问题的回答总结,由于时间问题,内容未必全面,亦或过于琐碎,权当参考。
版权声明: 本文为 InfoQ 作者【bing5tui3】的原创文章。
原文链接:【http://xie.infoq.cn/article/62ea1b04dbc6c5abe6e8d3a3f】。未经作者许可,禁止转载。
评论