1.spring、spring boot、spring cloud的关系
spring作为J2EE的基石,一直都在快速的发展,相信大家都是对它很熟悉的。
spring Boot是spring的上层,可以理解为对spring的简化,能够快速构建spring应用。
spring cloud是spring boot的上层,可以理解为利用spring boot简化构建分布式应用。三者关系如下图所示
2.spring cloud的组成
如图所示,spring cloud主要由eureka、config、ribbon、zuul、hystrix组成
Eureka:服务注册中心,主要由Eureka Server和Eureka client组成
config:配置中心服务,主要是用于各个服务的配置管理
ribbon:服务间的通信机制、负载均衡策略
zuul:动态网关、路由
Hystrix:熔断机制
此外还少不了我们的服务追踪 spring cloud sleuth + ZipKin
3. 对微服务的理解
微服务是一种架构风格、和restful一样,都是一种架构风格。它是没有绝对性的、没有绝对标准的答案,是一种建议而已,所以在细节上可能就有不同的理解。
1.它是一系列微小的服务共同组成;
2.跑在自己的进程里;
3.每个服务为独立的业务开发
4.独立部署;
5.分布式的管理。
spring cloud是一个开发工具集,包含了多个子项目。它主要利用spring boot的开发便利以及对Netflix开源组件的进一步封装。它简化了分布式开发。
4.对单体架构的理解
单体架构的优点主要有:容易测试、容易部署
缺点:开发效率低,一个团队都在一个项目里面开发、很容易代码冲突;
代码维护难,项目代码庞大、代码相互之间依赖,不易于快速理解;
部署不灵活,这里的不灵活是指有一处修改,就得整个大的项目重新打包,稳定性不够,影响使用。
扩展性不够,不能针对某个并发高的功能模块单独部署多个服务器。
5.对分布式的定义
旨在支持应用程序和服务的开发,可以利用物理架构、由多个自治的处理元素,不共享主内存,但是通过网络发送消息合作。
6.简单的微服务架构
7.微服务架构的基础框架/组件
1.服务注册发现
微服务要通过一系列的微小服务构成,这些服务之间必然要通过某种机制进行通信关联起来,组合在一起提供服务,它们之间如何感知和调用,这里面就少不了服务注册发现。
2.服务网关
微服务除了内部服务之间的通信,必然还要提供给外部去访问。网关会对外屏蔽一些服务的细节,比如我后台的程序需要升级或者有变化什么的,但是我对外是要对用户无感知的。反向路由的功能,将外面的某个路由反向到内部的某个微服务。还可以做一些限流和容错、监控和日志的功能。也可以用来做一些安全认证、反爬虫。
3.后端服务、前端服务
后端服务也称为中间层服务Middle Tier Service,它在启动时就向注册服务表写入服务信息,前端服务就从注册服务表里面读取服务。
前端服务也称为边缘服务Edge Service,的主要功能就是聚合(多个服务合一调用)、裁剪后端服务,然后暴露给外部调用。
裁剪:根据不同的需求返回不同的数据,例如区分移动端和PC端的调用,返回不同的数据或者区分返回HTML还是json数据。