架构师训练营第十周学习总结
微服务
1.为什么要使用微服务
(什么问题导致了需要微服务)(将一个大的复杂的问题拆分成多个简单的问题)
问题:应用庞大、复杂,参与人多
编译、部署困难;
分支管理困难;
数据库连接耗尽
新增业务困难
解决:拆分;业务拆分;复用组件
2.WebService
不满足互联网系统,其思想体系可以借鉴
3.微服务框架需求
服务注册与发现、服务调用等标准功能;
失效转移(高可用)
负载均衡
高效远程通信
少侵入
版本管理
4.Dubbo架构
1.服务提供者:容器内启动;
2.服务消费者:接口代理->调用接口;负载均衡;失效转移;远程通信;少侵入;
3.注册中心:服务提供者列表
5.ServiceMesh
微服务架构实践
架构落地:业务先行,梳理依赖和业务边界;独立模块->微服务
1.命令与查询职责分离
读写分离
2.事件溯源
事件日志->持久化;复核审计
3.断路器
服务故障,阻断服务
状态:关闭、打开、半开
4.服务重试及调用超时
上游超时时间大于下游超时时间之和
5.需求最重要
需求->技术
RPC协议原理
1.通讯协议
通信协议:TCP、UDP
传输协议:二进制、文本
2.常见私有协议
常用:变长协议
3.Dubbo通讯协议
1.前两个字节:Magic code,判断是否dubbo协议
2.Req/Res 请求响应标识位
3.2way 双工通信
4.event:是否为事件
5.Serialization ID:序列化器ID (32个)
6.Status:响应状态码
7.RPC Request ID:避免队头阻塞
8.Data Length:数据长度
9.可变长度数据:dubbo版本、服务名、服务版本、方法名、参数类型、参数 等
形形色色的架构师
按照作用划分
1.设计型
2.救火型
3.布道型
4.Geek型
按职责划分
1.产品型
2.基础服务型
3.基础设施架构师
微服务网关
基于网关的微服务架构
相当于网关的消费者
网关通过管道技术,做拦截、校验操作
异步网关
Flower框架、servlet3
开放平台网关
基于授权码的OAuth2.0授权
以微信读书基于微信登陆为例
1.用户再微信读书点击微信登陆
2.跳转微信,并弹出授权页面,用户点击统一授权
3.微信获取授权码,并返回给微信读书
4.微信读书使用授权码获取令牌
5.微信读书使用令牌访问资源(用户头像、昵称等信息)
领域驱动设计-DDD
为什么需要DDD
代码散乱、随意,不是按照领域模型内在逻辑设计
贫血模型VS充血模型
充血模型:数据+方法
贫血模型:数据或方法
战略设计
划分模块、服务的边界以及依赖关系
领域:组织所做的一切事情及其包含的内容。
子域:经验+现实世界理解;内聚性
限界上下文:边界
上下文映射图:不同限界上下文之间的交互图
战术设计
实体:唯一标识;
值对象:不变性
聚合:关联对象的集合;聚合根:实体和值对象聚合在一起的实体
分层架构
六边形架构
DDD重构实践过程
1.当前系统问题汇总、讨论
2.分析具体原因
3.重新梳理业务规则和边界(DDD战略设计)
4.技术框架选型与落地方案验证(样例代码)
5.任务分解与持续重构
DDD战略建模
1.挖掘真正的业务需求
2.技术人员还需要理解产品需求
3.订单交付系统:统一支付和交付,类似小卖部->大超市(分散收银改为统一收银台)
中台化
1.定义业务规范、能力;统一模型、上下文、术语
2.业务依赖中台的规范开发
评论