spring cloud属于java语言的微服务框架,可以用来搭建微服务架构。
根据业务流程进行拆分,得到的每一项功能都是一项微服务,各服务之间可以单独部署,独立运行,出故障时不会相互影响。这样开发出来的系统耦合度低,可容错性高,可扩展性更强。
spring cloud提供了搭建微服务架构的一些常用组件,比如服务注册与发现中心Eureka
、熔断器strix
、路由网关Zuul
、服务配置中心Spring Cloud Config
等
服务注册与发现中心: Eureka
服务注册与发现中心通过维护服务注册列表来方便服务之间的相互调用。各个微服务启动之后,会把自己注册到服务注册与发现中心,并且告诉自己的服务名,IP地址等服务信息。
Euraka分为两部分: Eureka Server、Eureka Client。Eureka Client用来处理服务注册与发现,Eureka管理和维护服务注册列表,而且会通过心跳机制来检查服务注册列表中的服务是否可用。如果某段时间没有收到某个服务的心跳包,那么就认为这个服务处于不可用状态,然后就会更新服务注册列表,将该服务剔除。Eureka也会时不时的检测这个被剔除掉的服务实例的状态,如果还能收到心跳,就会重新把这个服务加入服务注册列表。
Eureka Server还可以进行集群实现,Eureka Client无论通过哪个Euraka Server都能得到所需要的服务信息。
服务配置中心:Spring Cloud Config
每个服务都有相应的配置文件,spring cloud config可以统一管理配置文件。
配置文件放在统一的配置文件仓库里,这个仓库可以是本地仓库,也可以是github那样的远程仓库。
spring cloud config由两部分组成:config client,config server
config server启动之后,拉取仓库中的所有配置文件信息到本地。当启动config client时,config client通过config server获得相应的配置信息。配置文件修改之后,仓库会向config server发送post请求刷新本地的配置文件嘻嘻你,config client会向config server重新读取相应的配置文件。
服务网关:Zuul
Zuul提供动态路由的功能。
在分布式微服务系统中,通常只暴露服务网关的API接口,内部服务的API接口是隐藏的,外部请求只能通过服务网关来统一进行转发。
Zuul在路由时会结合Ribbon进行负载均衡,根据请求的url进行路由规则的匹配,然后把请求均衡地分发到后台对应的服务
服务间的远程调用:openFeign
服务调用方通过注解的方式调用服务提供方提供的接口
服务熔断和降级:Hystrix
Hystrix通过给服务提供方的API接口配置回调方法来进行服务的熔断,从而转移故障,有效防止故障的传播,保证系统的正常运行。
当服务消费方(调用方)调用服务提供方的接口失败时,通过Hystrix也可以实现对服务消费方的服务降级。
mybatis是Apache推出的轻量级的对象关系映射持久层(ORM)框架
Hibernate是一个开放源代码的对象关系映射框架,对JDBC进行了轻量级的对象封装,将POJO与数据库表建立映射关系,是一个全自动的orm框架。
Hibernate可以自动生成SQL语句,自动执行。
Dubbo是阿里巴巴开源的基于java的高性能RPC分布式服务框架
是JBOSS提供的开源、异步、基于事件驱动的网络通信框架
JUnit是java的一个单元测试框架
Log4j是Apache的一个开源日志框架,通过Log4j可以将程序中的日志信息输出到控制台或文件中。
现在主流的版本的Log4j2,抛弃了Log4j的不足,吸取了优秀日志框架Logback的设计