架构总结
三层架构 :MVC
架构本质:解耦
开发框架:Spring 轻量级的java开源框架,容器
目的:解决企业开发的复杂性
IOC:控制反转(提供一个容器) 原来我们都是自己一步步操作,现在交给容器,需要什么就去拿就可以
AOP:面向切面编程,本质动态代理(为了解决不影响业务本来的情况下实现动态增加功能)大量应用于日志和事务。。
Spring配置文件过于复杂
SpringBoot 新一代JavaEE开发标准,开箱即用(拿过来就可以用,自动配置:SpringBoot就是Spring的升级版)约定大于配置
随着公司体系越来越大,用户越来越多,一台服务器解决不了->增加服务器(横向解决)【如果a服务器占用了98%资源,b服务器只占用了10% 资源分配不平衡->尽可能平衡->负载均衡】
(一台服务器有全部功能模块)同一台服务器上有一些功能模块使用频率很高,有一些很低-->模块化
微服务架构->全新架构:模块化,功能化
将原来整体的项目分为模块化,用户就是一个单独的项目,与其他功能项目进行通信,完成功能
-
这么多功能模块分散在不同服务器上,用户如何访问
-
这么多服务,服务之前如何进行通信(解决防火墙,保证安全性)
-
如何统一管理服务->ZooKeeper
-
服务宕机了怎么办
解决方案:
SpringCloud,是一套生态,就是来解决以上分布式架构的四个问题
但是想使用SpringCloud,必须掌握SpringBoot,因为SpringCloud是基于SpringBoot
SpringCloud NetFlix,NetFlix公司出来了一套解决方案 一站式解决方案 ->
-
Api网关 zuul组件
-
Feign组件-->HttpClient-->基于Http通信方式,同步并阻塞(异步非阻塞)
-
Eureka组件-->服务注册与发现
-
Hystrix-->熔断机制
2018年底,NetFlix宣布无限期停止维护,生态不在维护-->就会脱节
Apache Dubbo zooKeeper 第二套解决系统
-
没有Api,要么找第三方组件,要么自己实现
-
Dubbo组件-->高性能的基于Java实现的RPC通信框架
-
Zookeeper(第三方组件:管理Hadoop,Hive)-->服务注册与发现
-
没有熔断机制,借助了NetFlix的熔断机制
SpringCloud Alibaba 一站式解决方案
下一代微服务标准-->服务网格 Server Mesh 代表解决方案 -->istio
万变不离其宗
Api网关,服务路由
Http RPC框架 异步调用
服务注册与发现
熔断机制,服务降级(服务器宕机)
为什么要解决这四个问题--->网络是不可靠的