1.专业名词解释
概述:将业务的所有功能集中在一个项目中开发,打成一个包部署。
优点:
1.架构简单
2.部署成本低
缺点:
1.耦合度高(维护困难、升级困难)
2.技术栈受限(技术栈就是技术集,技术选型就是开发的语言)
3.一旦宕机无法提供服务
适合小型项目
例如:学生管理系统
概述:系统中的多个模块在不同服务器上部署
优点:
1.降低服务耦合
2.有利于服务升级和拓展
3.技术栈不受限
缺点:
1.服务调用关系错综复杂
适合大型互联网项目
例如:京东、淘宝
概述: 多台服务器做相同的事情
解决的问题:
1.提高并发量
2.解决单点故障(单点,单台指只有一台服务器,一旦宕机,整个项目将会瘫痪)
3.保证服务的高可用
原则:半数原则,集群中只允许宕机数不超过总数的一半
概述: 不同的服务器做不同的事情,协作起来完成一个完整的业务
好处:
1、资源合理利用;访问频率高的使用配置高的服务器,访问频率低的使用配置低的服务器;
2、耦合度降低;每个模块独立出来,各做个事,便于以后的扩展
概述: 代理服务器代替系统内部来访问外部网络的过程
好处:
1.为在防火墙内的局域网客户端提供访问Internet的途径
2 可以做缓存,加速访问资源
3 对客户端访问授权,上网进行认证
4 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
概述: 外部请求访问系统时通过代理服务器转发到内部服务器的过程。
好处:
1.防止主服务器被恶意攻击:反向代理的客户端只能通过外网访问代理服务器,并且用户不知道自己访问的是一个代理服务器,反向代理将真正的处理放在内网中,有效的提高了网络安全
2.为负载均衡和动静分离提供实现支持:反向代理是将防火墙后的服务器提供给Internet用户访问,还可以为多个后端服务器提供负载均衡、缓存功能等
概述: 将并发过来的请求,均匀的分发给不同的服务器
作用:
1、负载均衡可以优化访问请求在服务器组之间的分配,以此消除服务器之间的负载不平衡,从而达到提高系统的反应速度和总体性能的目的。
2、负载均衡能够监控服务器的运行状态,如果发现运行有异常情况的服务器,将会及时将访问的请求转移到其他可以正常工作的服务器上,以此提高整个服务器组的可靠性。因此采用了负载均衡设备之后,可以根据业务量的大小灵活增加服务器的数量,将系统的扩展能力提高,同时也能简化管理。
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微服务框架学习官网
5.2.SpringCloud微服务框架组件对应常用技术
5.3.SpringCloud微服务框架兼容问题
SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配
5.4.项目父工程需要导入SpringCloud父工程依赖并需满足兼容
<!-- springCloud父工程依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR10</version>
<type>pom</type>
<scope>import</scope>
</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对象对远程对象发起调用
3.再把远程返回的数据和本身的数据合并返回给外界
6.2.3提供者与消费者
服务提供者与服务消费者的角色并不是绝对的,而是相对于业务而言。
服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务) 服务消费者:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口)