架构总结

57 阅读4分钟

1.什么是架构

架构又称软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各方面的设计。

  • 优秀的性能、超强的TPS(Transactions Per Second)/QTS(Queries Per Second)的承载能力、高可用决定了你的架构能够支撑多少PV(Page View)的流量。

  • Balance,选择一个投入产出比最优的方案。

2.架构师的职责

  • 明确需求
  • 系统能力分解
  • 技术选型
  • 制定架构说明书并主导执行落地

3.架构师成长路径

  • 初级工程师编写代码,运用框架
  • 中级工程师编写代码和框架(二次开发)
  • 高级工程师技术攻关,性能优化
  • 系统架构师解决所有业务和技术问题

4.架构师必备能力

  • 设计能力。并非只是关注某个点
  • 管理能力。因为架构师是指导并带领一个团队完成任务
  • 技术实力。不然无法完成技术方案,并且在团队攻坚问题的时候无法提供指导
  • 沟通能力。通过沟通解决分歧和矛盾
  • 应急能力。某种情况就需要架构师充当救急人员的角色。
  • 抽象能力。关注整个软件的面,不仅是某个点。

5.架构设计的分层

  • 架构设计分层实现

为什么分而治之、各司其职、有条不紊的结合 常见的分层设计计算机网络OSI七层模型、Web系统MVC模型、基于领域的模型(如购物车模型、商品模型等)

MVC分层

image.png MVC典型的应用:

SSM时代 SpringMVC解决接入及表示层;Spring解决业务服务、事务处理、会话管理等问题;MyBatis解决数接入层

image.png

2.0SpringBoot时代整合了所有Spring的框架功能;提供了简单的配置及注解的接入方式;提供All in one的服务

image.png

以上都是单应用的分层,下面还有整体应用的分层

分布式分层支持水平扩展、负载均衡、高可用、数据一致性

分布式分层-WEB概念层

image.png

访问层:用于web接入、反向代理、负载均衡等。

接口层:用于负责业务API网关处理。

分布式分层-业务概念层

image.png

服务层:业务服务的核心处理模块,具备服务治理、调度、异步通信等核心服务能力

分布式分层-数据访问及存储层

image.png

存储接入层:用于提供透明的存储结构的访问代理。

存储层:最终数据的落地及提供数据的能力。

  • 访问层架构知识

LVSLVS集群采用IP负载均衡技术和基于内容请求分发技术,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高可用、高性能的虚拟服务器,整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。

LVS包括以下三种不同部署方式

image.png

LVS强大的优势: -IP层的负载均衡协议,无应用层回调消耗; -通过LVS-DR或LVS/TUN模型的特性使得请求返回不过LVS; -自动故障转移,心跳检测; -配合主从KeepAlive加VIP实现自身高可用。

为什么要有两层Nginx

Nginx功能:请求解析、负载均衡、缓存调度、授权认证、接入处理、业务逻辑、响应处理、压缩技术... 并不是单靠一个Nginx负责上面的八个功能。

接入层Nginx主要职责:请求解析、请求业务路由(比如商品路由)、业务负载均衡、响应压缩。大部分和业务无关。

应用层Nginx主要职责:应用负载均衡、缓存调度、授权认证、业务逻辑、业务限流、业务降级

Nginx高性能原因:master-worker进程模型;流式处理请求workflow,有主子请求;协程机制;nginx lua

  • API网关层架构知识
  • 核心服务层架构知识
  • 数据存储及接入层知识
  • 监控,限流,降级知识