1.专业名词解释

  1. 概述:将业务的所有功能集中在一个项目中开发,打成一个包部署。
  2. 优点:
  3. 1.架构简单
  4. 2.部署成本低
  5. 缺点:
  6. 1.耦合度高(维护困难、升级困难)
  7. 2.技术栈受限(技术栈就是技术集,技术选型就是开发的语言)
  8. 3.一旦宕机无法提供服务
  9. 适合小型项目
  10. 例如:学生管理系统
  1. 概述:系统中的多个模块在不同服务器上部署
  2. 优点:
  3. 1.降低服务耦合
  4. 2.有利于服务升级和拓展
  5. 3.技术栈不受限
  6. 缺点:
  7. 1.服务调用关系错综复杂
  8. 适合大型互联网项目
  9. 例如:京东、淘宝
  1. 概述: 多台服务器做相同的事情
  2. 解决的问题:
  3. 1.提高并发量
  4. 2.解决单点故障(单点,单台指只有一台服务器,一旦宕机,整个项目将会瘫痪)
  5. 3.保证服务的高可用
  6. 原则:半数原则,集群中只允许宕机数不超过总数的一半
  1. 概述: 不同的服务器做不同的事情,协作起来完成一个完整的业务
  2. 好处:
  3. 1、资源合理利用;访问频率高的使用配置高的服务器,访问频率低的使用配置低的服务器;
  4. 2、耦合度降低;每个模块独立出来,各做个事,便于以后的扩展
  1. 概述: 代理服务器代替系统内部来访问外部网络的过程
  2. 好处:
  3. 1.为在防火墙内的局域网客户端提供访问Internet的途径
  4. 2 可以做缓存,加速访问资源
  5. 3 对客户端访问授权,上网进行认证
  6. 4 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
  1. 概述: 外部请求访问系统时通过代理服务器转发到内部服务器的过程。
  2. 好处:
  3. 1.防止主服务器被恶意攻击:反向代理的客户端只能通过外网访问代理服务器,并且用户不知道自己访问的是一个代理服务器,反向代理将真正的处理放在内网中,有效的提高了网络安全
  4. 2.为负载均衡和动静分离提供实现支持:反向代理是将防火墙后的服务器提供给Internet用户访问,还可以为多个后端服务器提供负载均衡、缓存功能等
  1. 概述: 将并发过来的请求,均匀的分发给不同的服务器
  2. 作用:
  3. 1、负载均衡可以优化访问请求在服务器组之间的分配,以此消除服务器之间的负载不平衡,从而达到提高系统的反应速度和总体性能的目的。
  4. 2、负载均衡能够监控服务器的运行状态,如果发现运行有异常情况的服务器,将会及时将访问的请求转移到其他可以正常工作的服务器上,以此提高整个服务器组的可靠性。因此采用了负载均衡设备之后,可以根据业务量的大小灵活增加服务器的数量,将系统的扩展能力提高,同时也能简化管理。
  5. 3、可以避免各种单点失效.

2.100并发 -> 千万并发,阿里淘宝的 14 次架构演进之路!

资料链接

3.提出问题

1.什么是微服务?
微服务架构就是给分布式架构制定一个标准,进一步降低服务之间的耦合度,提供服务的独立性和灵活性。做到高内聚,低耦合。(微服务是一种经过良好架构设计的分布式架构方案 。)

2.怎么实现微服务分布式架构项目开发? SpringCloud框架集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,开箱即用,SpringCloud框架组件进行开发

3.SpringCloud微服务框架有哪些功能和常用组件? 分布式配置:Nacos 服务注册/发现:Eureka(低版本的SpringCloud使用)\ Nacos 服务熔断:Sentinel 服务调用:OpenFeign RestTemplate 服务路由:Spring Cloud Gateway 分布式消息:SCS RabbitMQ 负载均衡:Ribbon 分布式事务:Seata

4.微服务

4.1.微服务概述

微服务是一种经过良好架构设计的分布式架构方案 。 能解决单体架构的缺点.

4.2.微服务的架构特征

  • 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责
  • 自治:团队独立、技术独立、数据独立,独立部署和交付
  • 面向服务:服务提供统一标准的接口,与语言和技术无关
  • 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题

4.3.微服务的优缺点

优点:拆分粒度更小、服务更独立、耦合度更低 缺点:架构非常复杂,运维、监控、部署难度提高(SpringCloud是微服务架构的一站式 解决方案)

5.SpringCloud微服务框架

5.1.SpringCloud微服务框架学习官网

SpringCloud官网

5.2.SpringCloud微服务框架组件对应常用技术

3 微服务使用技术.jpg
image.png

5.3.SpringCloud微服务框架兼容问题

SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配
image-20220302112859043.png

5.4.项目父工程需要导入SpringCloud父工程依赖并需满足兼容

  1. <!-- springCloud父工程依赖 -->
  2. <dependency>
  3. <groupId>org.springframework.cloud</groupId>
  4. <artifactId>spring-cloud-dependencies</artifactId>
  5. <version>Hoxton.SR10</version>
  6. <type>pom</type>
  7. <scope>import</scope>
  8. </dependency>

6.服务拆分和远程调用

6.1.服务拆分原则

  • 不同微服务,不要重复开发相同业务
  • 微服务数据独立,不要访问其它微服务的数据库
  • 微服务可以将自己的业务暴露为接口,供其它微服务调用

6.2.远程过程调用: RPC(Remote Procedure Call)

6.2.1.远程调用实质

两台计算机之间相互访问 tomcat(客户端) —-> tomcat(服务端)

6.2.2.远程调用步骤(以SpringBoot web中封装的RestTemplate为工具)

1.在Boot工程配置类中注册一个RestTemplate实例到Spring容器

 @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

2.在service层使用RestTemplate对象对远程对象发起调用

image.png

3.再把远程返回的数据和本身的数据合并返回给外界

6.2.3提供者与消费者

服务提供者与服务消费者的角色并不是绝对的,而是相对于业务而言。

服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务) 服务消费者:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口)