一、三层架构 + MVC
架构 ——>解耦
开发框架
Spring
IOC AOP
IOC:控制反转
约泡:
泡温泉,泡茶…,泡友
(传统方式)附近的人,打招呼。加微信,聊天,天天聊… ——>约泡
浴场(容器):温泉,茶庄,泡友
直接进温泉,就有人和你一起了!
原来我们都是自己一步步操作,现在交给容器了!我们需要什么就去拿就行了
AOP:切面(本质,动态代理)
为了解决什么?不影响业务本来的情况下,实现动态增加功能。
大量应用在日志,事务…等方面
Spring是一个轻量级的Java开源框架,容器
目的:解决企业开发的复杂性问题
Spring是春天,开始觉得是春天,也十分复杂,大量配置文件!
SpringBoot
SpringBoot并不是新东西,就是Spring的升级版!
新一代JavaEE的开发标准,开箱即用! ——>拿过来就可以用!
它自动帮我们配置了非常多的东西,我们拿来即用!
特点:约定大于配置!
比如静态资源就要放到static下,不然就不让用【类似maven】
随着公司体系越来越大,用户越来越多!
二、微服务架构 ——>新的架构
模块化,功能化!
【这里所有功能都在一块,无论人多不多,我都可以横向扩展,发生假设1问题,就负载均衡一下】
用户,支付,签到,娱乐…【以前这些模块都写到一个项目里面】
但是人过于多的时候:一台服务器解决不了!就在增加一台服务器【横向】
假设1:A服务器占用98%资源,B服务器占用10%资源。 ——>负载均衡【解决方法,它里面的算法会将请求分配,让两个服务器变成50%】
【将原来的整体项目,分成模块化,用户就是一个单独的项目,签到也是一个单独的项目,项目与项目之间需要通信】
假设2:用户非常多!而签到非常少 ——>解决:给用户多一点服务器,给签到少一点服务器
微服务架构问题?
分布式架构会遇到的四个核心问题?
1. 这么多服务,客户端应该如何去访问?【一个共同的接口来处理它,类似网关】
2. 这么多服务,服务之间如何进行通信?
3. 这么多服务,如何治理呢?:如何进行统一的管理【解决:统一的服务管理平台——>Zookeeper(注册中心)】
4. 服务挂了怎么办?
基于以上问题,有一些解决方案:
SpringCloud,是一套生态,就是来解决以上分布式架构的4个问题
想使用SpringCloud,必须要掌握SpringBoot【因为SpringCloud是基于SpringBoot的】
1. Spring Cloud NetFlix,出来了一套解决方案!一站式解决方案,我们都可以直接在这里拿【淘汰】
问题1的解决:Api网关,zuul组件
问题2的解决:Feign ——> 基于HttpClient ——> Http的通信方式,同步并阻塞
问题3的解决:服务注册与发现,Eureka组件
问题4的解决:熔断机制,Hystrix
****2018年年底,NetFlix宣布无限期停止维护,生态不在维护,产生脱节。
2. Apache Dubbo zookeeper,第二套解决系统
问题1的解决:API没有! ——>要么找第三方组件,要不自己实现
问题2的解决:Dubbo是一个高性能的基于Java实现的 RPC通信框架!【写一个Java类,调用一下】
问题3的解决:服务注册与发现,zooKeeper[动物园管理者]——>比如(Hadoop,Hive)
问题4的解决:熔断机制没有! ——>借助了Hystrix
****不完善,Dubbo3.0
3. SpringCloud Alibaba,一站式解决方案!
三、设想:提出一个方案——>服务网格
服务网格:下一代微服务标准,Service Mesh
代表解决方案:istio
万变不离其宗,一通百通!
1. API网关问题,服务路由
2. HTTP或者RPC框架,异步调用
3. 服务注册与发现,高可用
4. 熔断机制,服务降级
为什么要解决这些问题?——>网络不可靠