1.微服务架构的演进过程
1.1 单体架构单机部署
1.运行在tomcat里面,并发量QPS一般在200多个请求左右,同一个jvm进程,直接import就行。
2.不同的功能模块可能只用文件夹区分。
3.缺点:并发量太小(如果是电商系统,用户通过前端页面或者手机端或者PC端进来,此时如果并发量特别大,系统容易挂掉。)
1.2单体架构多机部署
1.仍然是单体架构,只不过部署在不同的服务器上。
2.优点:增加了可用性。
3.缺点:存在session共享;没有进行解耦,耦合性太高,一个模块出问题,会影响整个系统,修改需要重新部署整个系统 。
1.3单体架构向分布式架构的演变过程
1.将单体架构进行垂直拆分,每个系统当成一个独立的模块进行部署,不在放在一个项目里面。
2.通过http请求或者其它rpc框架进行调用。
3.通过负载均衡调用(随机、轮询、hash等等)。
4.假如用户系统调用订单系统,需要将订单系统ip地址及端口写入用户系统本地,假如订单系统某台服务挂了,需要修改本地的ip及端口,此时ip及端口不适合引入本地了,引入了注册中心、配置中心的概念。
1.4微服务架构图
2.spring
2.1核心内容
IOC:就是容器,比如存bean对象的容器、类的容器、变量的容器、配置的容器。
DI:属性注入,通过Autowired注解拿到对象
AOP:面向切面的编程
2.2版本升级
2.2.1 1.x版本
对象注入IOC容器这个过程不够简化,因为是全部通过xml文件去实例化bean对象的,没有任何注解。
入口:web.xml
2.2.2 2.x版本
注解和xml一起使用,通过<context:compent-scan base-package="com.xxx"/>扫描包注解。
2.2.3 3.x版本
1.完全抛弃了XML。
2.在这个版本里引入了一个非常重要的注解:import注解。
3.通过AnnotationConfigApplicationContext(xxx.class)读取配置类。
4.写配置类,在配置类上加@Configuration注解。
5.@Bean方法注解实例化Bean对象。
6.如果要集成redis或者mybatis等组件,我们要用到他们的一些核心bean,需要@import注解引入它们。
2.2.4 4.x版本
引入了Conditional注解。
3.springboot
为了简化开发,只需要pom文件依赖一下就可以使用了,这才是真正的简化。
3.1优化方面
1.在spring的基础上,优化了Bean对象注入Ioc容器的流程。
要用什么组件里面的bean,只需要引包就可以了,不需要字节写配置类,也不需要自己写xml。
2.配置文件的统一管理。
2.1 springboot的配置文件就一个,applicationcontex.properties或者applicationcontext.yml。
2.2 boostrap.yml是springcloud的配置文件,只是优先级高一点而已。
3.容器的内置。