写点什么

第十周课程总结

用户头像
考尔菲德
关注
发布于: 2020 年 08 月 12 日

一、微服务

1、背景

巨无霸单体应用系统面临的问题

1)、编译、部署困难

2)、代码分支管理困难

3)、数据库连接耗尽

4)、新增业务困难



2、解决方案:拆分,将模块独立部署,降低系统耦合性

  • 纵向拆分:将大应用拆分为多个小应用

  • 横向拆分:将复杂的业务拆分出来,独立部署为微服务



二、微服务框架

微服务框架需求:

  • 失效转移:服务集群部署,微服务框架需要支付服务提供者的失效转移机制,以实现服务高可用

  • 负载均衡:对于集群部署的服务提供者,服务请求者可以使用加权轮询等手段访问,使服务提供者集群实现负载均衡

  • 高效的远程通信:核心服务调用次数会达到数以亿计,如果没有高效的远程通信手段,服务调用可能会成为整个系统性能的瓶颈;

  • 对应用侵入性低:

  • 版本管理:服务版本升级



4、微服务框架(Dubbo)架构



5、Service Mesh服务网格

一个基础实施层,用于处理服务间的通信,通常表现为一组轻量级网络代理,他们与应用程序部署在一起,而对应用程序透明



Service Mesh的Sidecar模式



7、微服务架构落地

1)业务先行,先理顺业务边界和依赖,技术是手段而不是目的

2)先有独立的模块,后有分布式的服务

3)业务耦合严重,逻辑复杂多变的系统进行微服务重构要谨慎

4)要搞清楚实施微服务的目的是什么,业务复用?开发边界清晰?分布式集群提升性能?



8、命令与查询职责隔离(CQRS)

在服务接口层面讲查询(读操作)与命令(写操作)隔离,实现服务层的读写分离

  • 更清晰的领域模式

  • 针对读写分别优化,实现更好的性能

  • 查询服务不会修改数据,更好地保护数据



9、事件溯源

将用户请求处理过程中的每次状态变化都记录到事件日志中,并按事件序列进行持久化存储

  • 利用事件溯源,可以精确浮现任何用户状态,进行复核审计

  • 利用事件溯源,可以有效监控用户状态变化,并在此基础上实现分布式事务



10、断路器

当某个服务出现故障,相应延迟或者失败率增加,继续调用这个额服务会导致调用者请求阻塞,资源消耗增加,进而出现服务级联失败,这种情况下使用断路器阻断对故障服务的调用

断路器的三种状态:

  • 关闭

  • 打开

  • 半开



11、服务的重试以及调用超时

12、最重要的是需求



三、RPC协议实现原理

远程过程调用(RPC)

通讯协议

常见的私有协议模式

Dubbo通讯协议

  • dubbo利用requestId避免队头堵塞

requestId:请求ID,该字段主要用于异步请求时,保留请求存根使用,便于响应回来时触发回调,另外,在日志打印与问题调试时,也需要改字段



SOFA-RPC通信协议(Bolt协议)



用户头像

考尔菲德

关注

还未添加个人签名 2018.04.19 加入

还未添加个人简介

评论

发布
暂无评论
第十周课程总结