一、什么是前后端分离
在传统的做法里,比如servlet, springmvc,struts, tomcat 都会在后台运行
Java 代码,然后在后台生成全部的html 代码,接着通过 http 协议把 html 代码传输到浏览器。
1. 在后台运行的时候,如果要连接很多数据库才能把需要的数据查出来,那
么这个准备 html 的过程就会比较缓慢,同时生成的 html 也相对较大, 用户
就有可能感受比较慢。
2. 前后端开发的联调耦合度也很高,有时候必须互相等待,这样双方的开发
效率都降低了。
那么前后端分离什么概念呢? html 页面的内容可以简单看成 包含数据部分
和不包含数据部分。 所以先准备一个不包含数据的html, 把它传给浏览器,
这个速度本身会非常快,因为没有最占时间的数据库操作部分。 然后再通过
Ajax 技术,仅仅从服务器获取“纯数据”,然后把纯数据显示在html上。
这样做的好处:
1. 即便是后台数据库比较花时间,但是用户体验也比前面的方式好,因为用
户会先看到部分页面,过一小会儿再看到数据,比在空白页面打圈圈等待体
验好。
2. 后端只提供数据,所以前后端开发耦合度降低了很多,整体开发效率可以
得到较大提高。
二、分布式、集群、微服务
单体架构:把所有的模块,都放入一个项目中,也就是数据和视图都放入一个springboot中
优点:便于开发、测试、部署都方便
缺点:高并发上限是固定的
分布式、集群、微服务
去饭店吃饭就是一个完整的业务,饭店的厨师、配菜师、传菜员、服务员就是分布式;
厨师、配菜师、传菜员和服务员都不止一个人,这就是集群;分布式就是微服务的一种
表现形式,分布式是部署层面,微服务是设计层面。
三、CAP定理
概念:一个分布式应用,只能同时满足一致性(C),可用性(A),分区容错性(P)中的两项。
一致性:数据操作要么同时成功,要么同时失败
可用性:服务一直可以用,并在规定时间范围内
分区容错性:即使某个区域挂掉,仍然能保证一致性和可用性
举例:我们可以满足可用性和分区容错性,但不一定满足一致性,比如说天猫在上
海的机房,挂掉了,深圳机房顶上,但是不能保证上海的数据100%同步到深圳
,那么一致性就无法保证,但是可用确实能保证。
区分:
1、满足一致性和分区容错性,叫CP系统,通常是金融级系统
2、满足可用性和分区容错性,叫AP系统,与钱无关的系统
四、BASE理论
基于CAP定理,进一步延伸,退而求其次
软状态:虽然不能保证数据马上同步,但是允许延迟再同步。
可用性:基本可用,核心功能正常用,周边功能可以挂掉。
最终一致性:即使数据在中间经过一段时间,最终达到一致性。
五、高并发
概念:同时并行处理多个请求
指标:
1、响应时间:系统对请求作出响应所需时间
2、吞吐量:单位时间内,能处理的请求数量
3、QPS:每秒响应请求数,与吞吐量一个概念
4、并发用户数:系统正常情况能承受多少用户访问
解决并发:
1、垂直扩展:增强电脑硬件,一个电脑能做2个电脑事情
2、水平扩展:增加电脑数量,就是负载均衡
六、什么是SpringBoot?
简化Spring繁琐的配置,引入了启动类方式,同时嵌入了Tomcat、servlet等,
也简化了maven配置,即使是一个初级新手也能很快上手,开箱即用!
七、SpringBoot常用的starter
导入依赖时,
spring-boot-starter-web:嵌入了tomcat和servlet用到的jar
spring-boot-starter-data-jpa:数据库支持
spring-boot-starter-data-redis:redis支持
spring-boot-starter-data-solr:搜索引擎支持
八、SpringBoot自动配置原理
1、@EnableAutoConfiguration这个注解会"猜"你将如何配置spring,
假设您开发一个web应用程序并添加相应的spring配置
会自动去maven中读取每个starter中的spring.factories文件
该文件里配置了所有需要被创建spring容器中bean
2、在main方法中加上@SpringBootApplication和@EnableAutoConfiguration
九、SpringBoot优点
简化开发,省去配置
避免大量maven导入和各个版本的冲突
内嵌tomcat、servlet,
十、SpringCloud五大组件
Eureka service 服务注册中心
视图微服务:Ribbon Feign
配置服务器:configservice
断路器:Hystrix
网关:zuul
十一、微服务入门
1、服务注册中心:微服务的管理,服务之间的通信问题,通过微服务注册中心解决,Eureka service
2、视图微服务:数据微服务注册好,要访问数据微服务,SpringCloud提供2种方式,Ribbon、Feign
Ribbon是通过调用restTemplate,并进行客户端负载均衡,所谓客户端负载均衡,
有数据微服务有8001和8002两个微服务,Ribbon会去注册中心获取相关信息,
Ribbon然后决定调用哪一个
Feign是对Ribbon进行一个封装
3、服务链路追踪(zipkin ):随着服务的增多,他们的调用关系就变得复杂,我们
想要识别,通过链路追踪 zipkin 用图片进行识别
4、配置服务器:
配置信息频繁修改,就需要重新部署微服务,解决方案就是配置服务器,将配置信息
放到git中,配置服务器去获取git配置信息,微服务去配置服务器去获取配置信息,
无论我们在git中如何修改配置文件,都不需要重新部署微服务。
5、消息总线BUS:
配置服务器之后,修改刷新配置文件,需要重启config.-service(配置服务器),它
修改后的配置信息,不会自动加载到微服务中,想要自动加载就需要用消息总线Bus
6、断路器Hystrix:
当服务发生故障,或者出什么问题的时候,会报一些异常丢给客户,客户体验是不好的,
是否有一套备用方案,当服务出问题了,能很快感知这个现象。
断路器就可以达到这个
7、断路器监控
我们不知道服务什么时候可用,什么时候不可用,需要断路器监控来可视化掌控情况
8、网关:微服务它可能放在不同的IP地址,不同的端口上面,IP地址和端口随时变化,增加了访问者的负担。
这个时候我们可以用网关解决,只需要记住网关的IP和端口即可!
网友评论