架构理解与演进
架构定义:系统在其所处环境中的基本概念或属性,包括系统中的元素、元素间的关系以及指导系统设计和演进的原则。架构的核心价值在于降低软件开发、维护成本,通过提升效率、促进业务发展、实现高性能、高可用、可扩展等目标来解决系统复杂度带来的问题。
架构的视角和分层
架构的视角包括业务视⻆、应用视⻆、技术视⻆、部署视⻆和架构视⻆。架构的分层包括业务层、应用层和技术层,不同层级具有不同的职责和关注点。
架构的演进
架构的演进过程包括单体架构、垂直拆分架构和微服务架构。单体架构简单易管理,但扩展性差;垂直拆分架构提高了扩展性,但增加了复杂性;微服务架构进一步提高了灵活性和可扩展性,但需要面对服务治理的挑战。
架构师工具箱
业务模型抽象能力
架构师需要具备需求类型分析、需求拆解、领域驱动设计等能力,使用UML、原型设计工具等工具产出需求用例文档、用例图、原型图等。
系统排列组合的能力
架构师需要掌握集中式架构、分层架构和微服务架构等不同架构模式的特点和适用场景。
架构的基础设计能力
架构师需要遵循单一职责原则、开放关闭原则、里氏替换原则等设计原则,实现组件层次和类和代码层次的复用、发布等同原则等。
软素质
架构师需要具备沟通力、团队合作、快速学习能力、技术影响力、协调能力、横向领导力等软素质。
架构的负面清单
架构师需要避免追求技术难度、只负责架构文档不写代码、低估需求理解的价值等误区。
架构YYDS
面向对象的巅峰之作 - Tomcat
Tomcat采用面向对象的设计,具有统一与抽象、面向组件、各类设计模式、框架约束等特点。
MVC一战成名 - Struts
Struts采用MVC架构,具有分层设计、中心控制、Template 引擎等特点。
JavaYYDS - Spring
Spring具有卓越的扩展性和完美的生态,是设计模式的集散地,拒绝冗余和重复。
大道至简 - Nginx
Nginx采用事件驱动模型、模块化设计,具有异步、非阻塞、多进程单线程等特点。
如何成长为架构师
架构师的定义
架构师是为系统架构负责的人、团队或组织。
架构师工作的核心目标
架构师工作的核心目标是长期保持系统应对变化的能力处于合理水平。
架构师的定位
架构师需要在团队中发挥核心作用,负责架构设计、架构落地等工作。
架构师的核心价值
架构师的核心价值在于降低复杂度和成本、最小化架构方案、高质量交付等。
架构师与工程师的关注点差异
架构师关注合理交付、设计原则、概念完整性、边界、排期、风险、改动范围等;工程师关注具体实现、功能开发等。
主要工作内容
架构师的主要工作内容包括架构设计、架构落地等。
架构师的知识体系建设
架构师需要掌握设计原则、设计方法、SOLID设计模式、架构⻛格&模式、计算机网络、操作系统、分布式、分层协议、安全、IO、存储、进程、CAPBASE一致性、存储OSSHDFSS3、数据库MysqlMongoTiDB、缓存RedisMemcachedCaffeine、搜索引擎ESLuceneSolr、消息队列KafkaRabbitRocket、网络网关负载均衡CDN、基础语言、数据结构算法、容器DockerK8S、异地多活、微服务治理、全链路压测、分布式事务、分布式锁、全局Id、DevOps流程编排、分布式计算SparkFlinkMR、OODUDDDDD、CRPSDP、FactoryAdapterStrategy、微服务分层、事件驱动等知识和技能。
书籍推荐
(原文中未提供具体书籍推荐)