暑假开始在b站看黑马的教程视频:视频地址
目前正在二刷,并且总结记录一下学习时的收获,加深理解。
代码地址:源码地址
第一章 微服务总览
1. 软件系统架构的历史
软件系统架构大致经历了:单体应用架构—>垂直应用架构—>分布式架构—>SOA架构—>微服务架构的演变
单体应用架构:一个项目一个tomcat。优点:简单维护简单。缺点:紧密耦合容错低,扩展性差,不适合大项目。
垂直应用架构:对单体应用架构拆分,多个项目多个tomcat。
分布式架构:对垂直应用架构拆分,把整个系统分为展现层和服务层
SOA架构(面向服务):对分布式架构优化,展现层和服务层中间多了个服务治理中心。
微服务架构:把SOA架构中的服务层拆分成原子状态。
2. 微服务架构的常见问题
这部分基本照抄视频内容。是本次学习的提纲,所要学习的各种技术栈就是为了解决以下问题而产生的解决方案。
这么多小服务,如何管理他们? (服务治理 注册中心[服务注册 发现 剔除])
这么多小服务,他们之间如何通讯? (restful rpc)
这么多小服务,客户端怎么访问他们? (网关)
这么多小服务,一旦出现问题了,应该如何自处理? (容错)
这么多小服务,一旦出现问题了,应该如何排错? (链路追踪)
这里再借用尚硅谷的思维导图帮助整理。
2.1 服务治理
相关技术栈有Nacos,Eureka,Consul,Zookeeper
涉及到CAP三特性
服务注册,服务发现,服务剔除
使用nacos进行服务治理:详细章节
2.2 服务调用
REST:HTTP调用的格式
RPC:进程间通信方式
具体技术有feign,restTemplate
2.3 服务网关
把网关相当于一个微服务,用网关的接口把其他接口覆盖,想要使用某一个接口的时候,只需要通过网关的接口访问即可。
利用Spring Cloud Gateway实现网关:详细章节
2.4 服务容错
预防雪崩。服务降级,限流,熔断。具体技术:sentinel
限制某一接口(资源)的被访问频率,涉及到fallBack,fallBackFactory的使用。
利用sentinel服务容错:详细章节
2.5 链路追踪
对一次请求进行追踪,追踪其涉及的模块,数据中心,服务器。进行性能分析,异常处理等等等。