这里写自定义目录标题
1、架构的演进
框架:是一个程序的半成品,对部分功能进行了封装,为解决某个问题,提升开发效率。
架构:服务和服务之间的调用,以及有哪些服务等问题。
1、1:单应用架构
特点:
1、用户较少
2、功能比较单一
3、功能相对简单
4、所有的功能都在一个服务内(都在一个项目中)
问题:
1、由于就一台服务器,容易发生单点故障
2、当用户增加后,web服务器处理能力降低
3、当用户增加后,数据库服务器的处理能力也会降低
1、2:单应用集群架构
集群:
同一个事情多个人做
同一个程序部署到多台服务器上
特点:
1、解决了单点故障问题
2、提升了多用户请求的处理能力
缺点:
1、用户请求的分发,不智能,需要自行请求不同的服务器
2、没有提升数据库的处理能力
1、3:基于中间件的单应用集群架构
特点:
1、采用Nginx代理服务器,能够进行请求的分发
2、采用Redis做数据缓存,提高了数据的获取效率
3、采用ES搜索,提升了搜索数据的效率
缺点:
1、当功能较多、且每个功能较为复杂时,项目的管理就称为一个问题
具体:分层较多,类文件较多,相互调用比较复杂
1、4:垂直架构
特点:
1、将项目进行拆分,项目的维护较为容易
2、针对不同的项目去部署集群
缺点:
1、拆分后,项目独立,项目之间不能相互调用
1、5:分布式架构
特点:
1、项目拆分的粒度较小
2、项目之间可以相互协调调用
【微服务】微小到一个项目里只有一个功能
分布式产生的问题:
1、传统事务失效
2、传统锁失效
传统锁,锁的是线程,而在分布式架构中每个服务是一个进程,传统锁不能锁进程。
使用分布式锁
3、服务通讯
服务之间如何调用 使用MQ
4、服务监控问题
注册中心
2、Nginx
Nginx被称为请求代理服务器,不能做任何业务处理,功能如下:
1、请求的分发
2、负载均衡
集群:把同一个服务部署到多台服务器
集群的好处:
1、防止单点故障
2、提供了并发处理请求的能力
负载:对用户请求的处理
均衡:各个服务器比较均衡的去接收、处理用户的请求
Nginx的特点:
- 稳定性极强。 7*24小时不间断运行。
- Nginx提供了非常丰富的配置实例。
- 占用内存小,并发能力强。
准备:
1、检查jdk是否正确进行了环境变量的配置
3、Nginx实现请求的分发
1 准备服务器集群
伪集群:在同一台机器行,IP相同,只有端口号不同
tomcat 准备3份
修改tomcat的端口号
2、配置Nginx
解压后的目录结构
配置服务器:
启动服务
只要请求Nginx即可
4、负载均衡算法
负载均衡算法,是Nginx把请求分发给集群中哪台服务器的依据。
1、默认采用轮询算法:把请求逐个分发给集群中的每台服务器。
轮询算法的缺点:因为每个请求的处理时间不同,轮询不够合理
2、基于权重的轮询算法:适用于集群中的服务器的硬件配置不同的情况,把配置高的服务器的权重调高
权重越高,被分发到请求的几率就越高
3、fair智能负载均衡算法
基于响应时间的负载均衡算法,处理请求的时间越短,说明越快,就会被分发请求
4、iphash算法
通过对ip进行计算,得到值,把不同的值分发到指定的服务器