SpringBoot 快速构建微服务体系 知识点总结
可以通过http://start.spring.io/构建一个SpringBoot的脚手架项目
一、微服务
1、SpringBoot是一个可使用Java构建微服务的微框架。
2、微服务就是要倡导大家尽量将功能进行拆分,将服务粒度做小,使之可以独立承担对外服务的职责,沿着这个思路开发和交付的软件服务实体就叫做“微服务”。
3、微服务的好处
(1)独立,独立,还是独立。每一个微服务都是一个小王国,跳出了“大一统”(Monolith)王国的统治,开始从各个层面打造自己的独立能力,从而保障自己的小王国可以持续稳固的运转。
(2)多语言生态。微服务独立之后,给了对应的团队和组织快速迭代和交付的能力,同时,也给团队和组织带来了更多的灵活性,实际上,对应交付不同的微服务的团队或者组织来说,现在可以基于不同的计算机语言生态构建这些微服务。
二、Spring框架本质
1、Spring IoC(Inversion of Control)其实有两种形式,一种就是DI(Dependency Injection依赖反转),另一种是DL(Dependency Lookup依赖查找)。DI是当前软件实体被动接受其依赖的组件被IoC容器注入,DL是当前软件实体主动去某个服务注册地查找其依赖的那些服务。
Spring IoC容器的依赖注入工作可以分为两个阶段:
(1)收集和注册:构建和收集bean定义的阶段,这样IoC容器中充斥着一个个独立的bean,它们之间没有任何关系。
(2)分析和组装:分析这些已经在IoC容器之中的bean,然后根据它们之间的依赖关系先后组装它们。如果IoC容器发现某个bean依赖另一个bean,它就会将这另一个bean注入给依赖它的那个bean,直到所有bean的依赖都注入完成,所有bean都”整装待发“,整个IoC容器的工作即算完成。
2、 JavaConfig
Spring框架推出并持续完善了基于Java代码和Annotation元信息的依赖关系绑定描述方式,即JavaConfig项目。
基于JavaConfig方式的依赖关系绑定描述基本上映射了最早的基于XML的配置方式:
任何一个标注了@Configuration的Java类定义都是一个JavaConfig配置类。
任何一个标注了@Bean的方法,其返回值将作为一个bean定义注册到Spring的IoC容器,方法名将默认成为该bean定义的id。
如果一个bean的定义依赖其他bean,则直接调用对应JavaConfig类中依赖bean的创建方法就可以了。
那些高曝光率的Annotation:
@ComponentScan、@PropertySource与@PropertySources、@Import与@ImportSource
三、SpringBoot的工作机制
1、@SpringBootApplication
对于SpringBoot应用来说,重要的只有三个Annotation,而“三体”结构实际上指的就是这个三个Annotation:@Configuration、@EnableAutoConfiguration、@ComponentScan
2、SpringApplication:SpringBoot程序启动的一站式解决方案
3、SpringBoot应用启动步骤简要示意图
四、了解纷杂的spring-boot-starter
1、SpringBoot微框架从两个主要层面影响Spring社区的开发者们:
(1)基于Spring框架的“约定优先于配置(COC)"理念以及最佳实践之路;
(2)提供了针对日常企业应用研发各种场景的spring-boot-starter自动配置依赖模块,如此多“开箱即用”的依赖模块,使得开发各种场景的Spring应用更加快速和高效。
2、spring-boot-starter-aop
Java平台上的AOP(Aspect Oriented Programming)方案基本上已经以SpringAOP结合AspectJ的方式稳固下来。
3、spring-boot-starter-actuator
spring-boot-starter-actuator自动配置模块用于支持SpringBoot应用的监控。
五、SpringBoot微服务实践探索
1、使用SpringBoot构建微服务
(1)创建基于Dubbo框架的SpringBoot微服务
Dubbo:一款基于TCP长连接通信(Netty)的高性能服务治理框架。
将Dubbo微服务以SpringBoot形式标准化了,如此一来,我们既可以享受SpringBoot框架和周边的一系列研发支持,也可以用统一的形式发布、部署和运维。
微服务的一个特点就是数量多。
(2)使用SpringBoot快速构建Web API
2、SpringBoot微服务的发布与部署
基于Docker的发布与部署方式:
3、SpringBoot微服务的注册与发现
4、SpringBoot微服务的监控与运维
从局部性触发式报警到系统性智能化报警
实际上,一种有效的报警体系应该是能够系统化地综合考虑所有监控层级的数据,然后汇总和分析,最终发出一个行之有效的报警,称为系统性智能化报警。
5、SpringBoot微服务的安全与防护
深度防御(Defence In Depth)
访问的认证和授权的过程(Authentication And Authorization)
6、SpringBoot微服务体系的脊梁:发布与部署平台