架构师角度看如何快速上手公司项目常见问题新公司的项目分层和之前不一样新公司编码规范和之前不一样新公司技术栈和之前不一样业务复杂-逻辑混乱-看不到逻辑怎么快速看懂代码这个都是正常的现象大公司业务复杂数据量大中间件多自研平台多许多内部组件外部也没有资料给别人学习。但是其本质都是换汤不换药应用场景类似我们需要宏观认识做啥然后跑一个Demo就知道了刚入职或接受项目业务复杂逻辑混乱看不懂逻辑多数情况都是进入项目组开发比较少机会是从0开始怎么快速上手新代码切记不要依赖就直接看代码1.看产品体验整体功能思考背后大体逻辑2.看产品需求文档历史需求文档和现在进行的需求文档3.看项目技术栈-补充不会的技术栈框架跑起来一个demo4.看项目技术架构图和部署环境5.看数据库ER设计和关联关系是否有分库分表6.看团队负责功能模块服务包作用7.调下团队负责的某个功能链路从发起请求到响应结果经过的后端调用链和代码逻辑8.按照上述步骤再看其他的模块业务逻辑和调用链不要在意细节或者没用到的组件记住不管新老项目。从顶层设计开始由宏观奥细节这个是上手和重构的最佳选择如何写一份互联网架构设计文档传统IT或者大项目会分很多设计文档互联网企业敏捷开发下概要设计文档和详细设计文档会根据情况调整避免耗时严重过度文档化的问题针对核心模块编写详细设计如何衡量一个系统的架构设计目标当下互联网项目面临的核心大挑战业务发展需求变动快高并发大流量海量数据可用性网络重点环节负责业务安全架构目标业务需求角度高效优质的解决当下业务需求问题非业务需求角度高性能请求延迟Latency在多少ms以内高可用SLA达到几个9高并发每秒TPS几万易扩展业务变动易调整合理业务逻辑抽象事件驱动架构和分布式服务可伸缩快速水平伸缩秒级扩容安全性业务数据安全 可保证总结系统非一下就完成的架构随着业务推动也会改变没有最好的架构只有最合适的架构在任何一个解决方案架构方案提出都需要说一下优缺点逼迫自己思路架构目标把对业务有很好的了解快速高效的用户的痛点把简单的东西想复杂控制好风险和准备好未来把复杂的东西做简单做好产品且控制好成本最好把复杂的东西讲简单做好传承互联网项目架构演进系统架构演进架构单机 - 集群 - 分布式微服务日活1k - 5k - 1w - 5w - 10w - 100w -500w日活用户大概是%4到%10从而推测用户量单体应用架构应用和数据分离架构应用集群架构应用集群 缓存架构应用集群 读写分离架构服务化 分库分表架构服务中台化业务 数据异构架构常规互联网项目HTPP请求响应的全链路需求画出业务系统的HTPP请求响应经过的全链路流程从宏观到细节体现架构师的技术扩展深度也是一道面试摸底题目可以直接看出技术人员的天花板在哪里从网络/操作系统/框架/语言/数据库/等方方面面我们可以通过这个图来查漏补缺水管效益哪里不会补充哪里常规四大件CPU序列化大量线程大量计算内存大量对象产生/缓存使用/连接占据宽带大文件操作突发流量磁盘IO大量文件IO不合理日志高频数据库操作案例大促销批量服务器扩容每个服务占用了数据库连接导致底层数据库连接不够双11修改下单地址失败其他服务性能很好但是这个导致了问题从而链路崩溃外部因素支付中心微信支付统一下单每秒600QPS多账号策略采用负载均衡方式进行操作云产品CDN/存储/计算能力节点网络覆盖度/产品本身的硬件资源问题比如视频CDN节点覆盖