架构
2019/3/8大约 4 分钟
架构
架构设计的目的是解决软件系统的复杂度带来的问题。架构即(重要)决策,是在一个有约束的盒子里去求解或接近最合适的解。这个有约束的盒子是团队经验、成本、资源、进度、业务所处阶段等所编织、掺杂在一起的综合体(人,财,物,时间,事情等)。架构无优劣,但是存在恰当的架构用在合适的软件系统中,而这些就是决策的结果。
架构设计原则:合适原则、简单原则、演化原则。合适优于先进 => 演化优于一步到位 => 简单优于复杂
架构设计有业务需求驱动,需要识别出主要问题,然后根据业务、技术、团队、成本等综合评估排序,优先解决当前面临的最主要的复杂度问题。
架构设计一般要给出多套备选方案(3 ~ 5 个最佳),并评估各方案利弊。
评估方案时,应该先列出关注的维度(如:功能性、性能、可用性、复杂度、硬件成本、运维成本等),然后根据这些维度去评估打分,再综合挑选最合适当时情况的方案。
架构失败的主因:
- 没那么多人,却想干那么多活
- 没有那么多积累,却想一步登天
- 没有那么卓越的业务场景,却幻想灵光一闪成为天才
📖 内容
综合
- 如何设计系统 - 关键词:
系统设计、需求分析、顶层设计、瓶颈分析、水平扩展 - 系统架构面试总结 - 💯
- 系统架构概述 - 关键词:
架构演化、分层架构、微服务、事件驱动、微核架构 - 系统高性能架构 - 关键词:
高性能、缓存、并发模型、Reactor、负载均衡 - 系统高可用架构 - 关键词:
高可用、CAP、主从复制、限流降级熔断、失效转移 - 系统伸缩性架构 - 关键词:
伸缩性、负载均衡、集群、一致性 Hash、分库分表 - 系统扩展性架构 - 关键词:
扩展性、分层架构、SOA、微服务、消息队列 - 系统安全性架构 - 关键词:
SSO、OAuth2、RBAC、XSS、CSRF - 大型系统核心技术 - 关键词:
分布式锁、分布式 Session、分布式缓存、负载均衡、分布式存储 - 系统测试架构 - 关键词:
黑盒测试、白盒测试、单元测试、集成测试、性能测试
微服务
- 微服务简介 - 关键词:
定义、演进、利弊、如何拆分、容量规划 - 微服务之注册和发现 - 关键词:
服务定义、注册中心、元数据、健康检查、服务订阅 - 微服务之服务调用 - 关键词:
RPC、通信协议、传输方式、序列化 - 微服务基本原理 - 关键词:
微服务、序列化、动态代理、通信、服务注册发现
安全
- 权限认证综述 - 关键词:
认证、授权、身份验证、访问控制、安全架构 - 认证设计 - 关键词:
认证、多因素认证、OAuth2、JWT、单点登录 - 授权设计 - 关键词:
授权、RBAC、ABAC、ACL、权限控制 - 安全漏洞 - 关键词:
XSS、CSRF、SQL 注入、安全漏洞、漏洞防护 - 编码和加密 - 关键词:
对称加密、非对称加密、消息摘要、数字签名、Base64
📚 资料
- 书籍
- 《大型网站技术架构:核心原理与案例分析》 - 浅显易懂的将解大型网站架构演进之路;简介了大型系统所面临的挑战以及核心技术点。
- 《大型网站系统与 Java 中间件实践》
- 《亿级流量网站架构核心技术:跟开涛学搭建高可用高并发系统》
- 《企业 IT 架构转型之道:阿里巴巴中台战略思想与架构实战》 - 阐述阿里巴巴中台系统发展,更多的是讲解应用场景和能力,没有讲解技术细节。
- 《逆流而上:阿里巴巴技术成长之路》 - 主要以运维的视角阐述系统运维中遇到的困难,定位思路以及解决方法。
- 教程
🚪 传送
◾ 💧 钝悟的 IT 知识图谱 ◾ 🎯 钝悟的博客 ◾