架构师进阶实战随堂笔记二
2019-04-24 本文已影响272人
山东大葱哥
场景二:微服务架构的高可用问题,高可用架构师设计方法与实践案例
为什么要有软件架构
- 每个人都可以自己完成全部工作的时候不需要架构,架构解决复杂性问题
- 软件越来越复杂
- 分工合作
- 职责划分
什么软件架构
- 定义:软件架构师一个系统的草图,包含了各个组件、组件间的关系和组件之间是如何通讯和数据交换的。
- 用以满足用户实际需求的系统设计方案
- 在设计原则之上,对系统的各个部分组合,形成软件架构
- 类似于建筑物的架构概念,但有很多区别
-
两大要素
组件(系统边界)
组件之间的关联和通讯
image.png
什么是微服务架构
微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的,各个微服务?
image.png
为什么需要微服务架构
image.png微服务架构的特点
谁开发、谁运营
去中心化治理
image.png
微服务架构与SOA架构的比较
image.png常见的微服务组件及概念
- 服务注册
- 服务发现
- 负载均衡
- 服务网关
服务调用的唯一入口(中心化),可以在这个组件实现用户鉴权、动态路由、灰度发布、A/B测试、负载限流等功能
比如servermash - 配置中心
- API管理
- 集成框架
- 分布式事务 TCC、高可用消息服务、最大努力通知
- 调用链
记录完成一个业务逻辑时调用到的微服务,并将这种串行或并行的调用关系展示出来。在系统出错时,可以方便找出出错点。 -
支撑平台
部署、运维、健康自动化
Docker
持续集成、蓝绿发布、健康检查、性能健康等。
image.png
image.png
image.png
软件架构的目标 更高层次的观察和思考问题
- 可靠性(Reliable)
- 安全性(Secure)
- 可伸缩性(Scalable)
峰值和谷值差距很大的情况下如何设计系统资源 - 可扩展性(Extensible)
可预见的扩展性,不要过度设计,太浪费 -
可维护性(Maintainable)
image.png
软件架构的分类
image.png什么是软件架构高可用(衡量标准)
比如全年3个九
image.png
软件架构高可用的重要性
image.png架构高可用的常用手段都有哪些
- 设计无状态化 应用服务器多个实例之间完全对等,请求提交到任意服务器,处理结构都一样
- 消除单点 多机房、多应用、分片、主备、集群
- 流量监控和控制
- 子系统冗余
- 幂等性设计
有些服务必须在服务保证服务重复调用和调用一次产生的结果相同 - 异步调用
- 超时机制 所有网络调用都设置超时时间,防止雪崩。客户端友好提示,提升用户体验
- 分级管理
- 服务降级
- 系统监控报警
-
快速实现服务发布、回滚
image.png
image.png
API网关设计的难点
-
后端API粒度的划分
避免万能接口
image.png -
网关透传千级别的API接口,如何保证
image.png -
不停机发布
image.png -
承载海量
image.png
5.安全
image.png
什么是SpringBoot
- 和微服务、云的契合度非常高
-
帮助微服务落地的框架
image.png
SpringBoot主要特性
image.pngSpringBoot 优点
- 使编码更简单
-
是配置更简单
image.png
image.png
image.png
image.png
SpringBoot快速搭建案例
image.pngimage.png
image.png
image.png
image.png
image.png
本章小结
- 什么是软件架构
- 什么是微服务架构 一种架构风格,可被独立部署、代表一个独立的业务能力
- 微服务架构的特点 组件化可插拔、独立团队、去中心化(每个微服务有独立的数据存储)、基础设施自动化、监控与故障处理机制
- 微服务架构与SOA架构的比较 SOA总线机制
- 高可用的目标:可靠性、安全性、可伸缩性、可扩展性、可维护性
-
Spring Boot
image.png