1.什么是架构
架构又称软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各方面的设计。
-
优秀的性能、超强的TPS(Transactions Per Second)/QTS(Queries Per Second)的承载能力、高可用决定了你的架构能够支撑多少PV(Page View)的流量。
-
Balance,选择一个投入产出比最优的方案。
2.架构师的职责
- 明确需求
- 系统能力分解
- 技术选型
- 制定架构说明书并主导执行落地
3.架构师成长路径
- 初级工程师编写代码,运用框架
- 中级工程师编写代码和框架(二次开发)
- 高级工程师技术攻关,性能优化
- 系统架构师解决所有业务和技术问题
4.架构师必备能力
- 设计能力。并非只是关注某个点
- 管理能力。因为架构师是指导并带领一个团队完成任务
- 技术实力。不然无法完成技术方案,并且在团队攻坚问题的时候无法提供指导
- 沟通能力。通过沟通解决分歧和矛盾
- 应急能力。某种情况就需要架构师充当救急人员的角色。
- 抽象能力。关注整个软件的面,不仅是某个点。
5.架构设计的分层
- 架构设计分层实现
为什么分而治之、各司其职、有条不紊的结合 常见的分层设计计算机网络OSI七层模型、Web系统MVC模型、基于领域的模型(如购物车模型、商品模型等)
MVC分层
MVC典型的应用:
SSM时代 SpringMVC解决接入及表示层;Spring解决业务服务、事务处理、会话管理等问题;MyBatis解决数接入层
2.0SpringBoot时代整合了所有Spring的框架功能;提供了简单的配置及注解的接入方式;提供All in one的服务
以上都是单应用的分层,下面还有整体应用的分层
分布式分层支持水平扩展、负载均衡、高可用、数据一致性
分布式分层-WEB概念层
访问层:用于web接入、反向代理、负载均衡等。
接口层:用于负责业务API网关处理。
分布式分层-业务概念层
服务层:业务服务的核心处理模块,具备服务治理、调度、异步通信等核心服务能力
分布式分层-数据访问及存储层
存储接入层:用于提供透明的存储结构的访问代理。
存储层:最终数据的落地及提供数据的能力。
- 访问层架构知识
LVSLVS集群采用IP负载均衡技术和基于内容请求分发技术,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高可用、高性能的虚拟服务器,整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。
LVS包括以下三种不同部署方式
LVS强大的优势: -IP层的负载均衡协议,无应用层回调消耗; -通过LVS-DR或LVS/TUN模型的特性使得请求返回不过LVS; -自动故障转移,心跳检测; -配合主从KeepAlive加VIP实现自身高可用。
为什么要有两层Nginx
Nginx功能:请求解析、负载均衡、缓存调度、授权认证、接入处理、业务逻辑、响应处理、压缩技术... 并不是单靠一个Nginx负责上面的八个功能。
接入层Nginx主要职责:请求解析、请求业务路由(比如商品路由)、业务负载均衡、响应压缩。大部分和业务无关。
应用层Nginx主要职责:应用负载均衡、缓存调度、授权认证、业务逻辑、业务限流、业务降级
Nginx高性能原因:master-worker进程模型;流式处理请求workflow,有主子请求;协程机制;nginx lua
- API网关层架构知识
- 核心服务层架构知识
- 数据存储及接入层知识
- 监控,限流,降级知识