写点什么

架构师训练营第十周学习总结

用户头像
张明森
关注
发布于: 2020 年 08 月 06 日

微服务

1.为什么要使用微服务

(什么问题导致了需要微服务)(将一个大的复杂的问题拆分成多个简单的问题)

问题:应用庞大、复杂,参与人多

  1. 编译、部署困难;

  2. 分支管理困难;

  3. 数据库连接耗尽

  4. 新增业务困难

解决:拆分;业务拆分;复用组件

2.WebService

不满足互联网系统,其思想体系可以借鉴

3.微服务框架需求

  1. 服务注册与发现、服务调用等标准功能;

  2. 失效转移(高可用)

  3. 负载均衡

  4. 高效远程通信

  5. 少侵入

  6. 版本管理

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.业务依赖中台的规范开发



用户头像

张明森

关注

还未添加个人签名 2017.10.16 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第十周学习总结