1.主要的子项目
1)spring cloud config是配置管理工具,通过它可以把配置信息放到远程服务器中,从而集中管理集群配置。目前支持本地存储、git和subvesion三种存储方式。
所有实例都可以通过config server来获取配置文件,每个服务实例相当于配置服务的客户端。
2)spring cloud consul封装了consul。consul是HashiCorp公司用GO语言开发的一个服务治理软件。它包含服务治理、健康检查、Key-Value存储、多数据中心功能。
3)spring cloud sleuth为spring cloud应用提供了分布式追踪解决方案,为服务之间的链路调用提供了链路追踪。
4)spring cloud starters提供了“开箱即用”的依赖管理
5)spring cloud gateway提供了一种简单有效的微服务API进行路由。
6)spring cloud openfeign 封装了声明式的web service客户端fegin,它使得编写web service客户端变得更加容易。它支持fegin注解和jax-rs注解。
7)tubine是聚合服务器,它用来发送事件流数据,以监控集群中Hystrix的Metrics情况。通过tubine可以监控集群的请求量,从而知道系统的请求高峰期,以便更好的发型系统的问题。
2.Netfix家族项目
1)eureka是服务治理组件,它基于REST的服务,包含服务注册与服务发现功能
2)hystrix对微服务进行容错管理,即使将服务做成集群也不能保证其100%安全和可用,所以,为了防止因服务与服务之间的依赖性,单个服务出现故障导致整个微服务系统奔溃,则需要做容错处理。
3)zuul主要提供路由和过滤功能。它是各种服务的统一入口,还可以提供动态路由、监控、授权、安全、调度等功能。
4)archaius来管理配置api。提供了动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。
3.阿里巴巴家族项目
1)sentinel是一个流控组件,它以流量作为切入点,可以从流量控制、熔断降级、系统负载保护等多个维度保护服务等稳定性。
2)nacos是一个服务治理项目,它提供了动态服务发现、配置管理和服务管理平台。
3)rocketmq是一种消息中间件,它提供高可用分布式集群技术提供低延迟、高可靠的消息发布/订阅服务
4)dubbo是一款高性能java rpc框架。
5)seata是一个高性能的微服务分布式事务解决方案。
6)alibaba cloud axm是一个应用配置中心
7)alibaba cloud schedulerx是一个基于cron的表达式任务调度服务,可提供秒级、精准、高可靠、高可用的定时任务调度功能。
4项目结构
spring cloud是基于spring boot的,所以它们的项目结构是一样的,在创建好spring cloud工程后即可看到基础的结构。spring cloud的基础结构分为3个文件目录
1)src/main/java:入口启动类及程序开发目录。在这个目录下进行业务开发、创建实体层、控制器层、数据连接层等。
2)src/main/resources:资源文件目录,用于放静态文件和配置文件。
static用于存放静态资源,如css、javascript、图片文件等。
templates用于存放模版文件。
application.properties用于配置项目运行所需的配置数据。如果用YML 方式管理配置,则YML文件也存放在这个目录,名为application.yml
3)src/test/java测试程序所在的目录
spring cloud的自动配置
1.注解
spring boot的系统注解:@Override、@Deprecated、@SuppressWarnnings
spring boot的常用注解:@RestController、@Controller、@Service、@Repository、@Component、@Configuration、@Resource、@Autowired、@RequestMapping、@Transactional、@Qualifier
2.配置文件
application.properties
读取属性值,设置默认属性值、自定义属性值、使用环境变量
application.yml
5.应用程序开发模式-MVC
在整个spring mvc框架中,DispatcherServlet处于核心位置,继承自HttpServlet。它负责协调和组织不同组件,以完成请求处理并返回响应工作。
整个工作流程如下:
1)客户端发出请求,Tomcat服务器接收请求并将请求转交给DispatcherServlet处理。
2)DIspatcherServlet匹配在控制器中配置的映射路径,然后进行下一步处理。
3)ViewResolver将ModelAndView或者Exception解析成View,然后View会调用render()方法并根据ModelAndView中的数据渲染出页面。
表现层:用于展示界面,接收用户请求并返回数据。它为客户端提供应用程序的访问接口
业务逻辑层:三层架构的服务层,负责业务逻辑处理,主要是调用DAO层对数据进行增加、删除、修改和查询
数据访问层:于数据库进行交互的持久层,被service调用。如果在spring data jpa中,则该层由Hibernate来实现。
Repository和DAO层都可以进行数据增加、删除、修改和查询。它们相当于仓库管理员,执行进、出货操作。
DAO的工作是存取对象。Repository的工作是存取和管理对象。