1.纵向拆分的独立系统的集群的问题
1.1没有引入管理的功能
系统的管理,授权,监听,熔断等逻辑都没有引入
1.2静态配置的负载均衡的强耦合
在庞大的纵向拆分的集群中,nginx的静态文件维护负载均衡逻辑,容易出现强耦合:
例如:集群中某些节点出现宕机/迁移
可以引入微服务的概念,从架构角度去解决问题
2.微服务框架
2.1微服务
从一个单体项目,从一个功能比较集中的项目中纵向拆分出来独立运行的功能,每个功能的系统–微服务
微:纵向拆分
服务:功能被调用
2.2微服务框架
一个框架技术能够管理大量的拆分的独立系统,监控,熔断等功能,这种框架技术–微服务框架
2.3spring cloud
轻量级的微服务框架,可以基于springboot的自动配置(减少了自定义的大量代码编写)实现了多个微服务框架的组件功能
eureka :服务治理
ribbon :客户端负载均衡调用
zuul:网关,微服务唯一对外提供的接口
feign:ribbon是同一种客户端,封装了ribbon
hystrix:熔断器
config:微服务中配置文件的管理者
1.Eureka服务治理组件
springcloud中的核心组件,可以实现对整个微服务集群所有节点进行服务的发现,服务的抓取和服务监听功能
1.1服务治理的概念中的三个角色
○ 服务注册中心:所有的服务的集中管理角色
○ 服务的提供者:服务提供者会将自己的信息打包(ip,port,服务名称等等),注册在注册中被注册中心管理和维护(注册)
○ 服务的调用者: 可以通过对注册中心的访问,获取服务提供者的信息,从而进行负载均衡的调用(抓取发现)
1.2入门案例服务注册中心
○ 准备一个springboot+springcloud开发环境的工程
§ pom:继承springboot-parent
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
§ dependencyManagement:导入springcloud的所有依赖
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
§ 引入eureka注册中心的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
○ application.properties
server.port=8888
#eureka相关配置
##关闭当前配置中心的服务抓取和注册
#如果自己到自己注册,需要提供服务名称
spring.application.name=eurekaserver
eureka.client.registerWithEureka=true
eureka.client.fetchRegistry=false
#注册中心的地址,但凡是服务提注册者都需要配置这个地址
#注册者会访问这个地址的接口,携带自己节点的信息注册
eureka.client.serviceUrl.defaultZone=http://localhost:8888/eureka
○ 启动类
§ 添加一个eureka的注解,就能实现启动加载eureka的自动配置逻辑,实现一个web应用中包含一个eurekaserver的进程
@SpringBootApplication
//eureka注册中心进程启动时需要springboot加载扫描的注解
@EnableEurekaServer
public class StarterEurekaServer {
public static void main(String[] args) {
SpringApplication.run(StarterEurekaServer.class, args);
}}
○ web页面
http://localhost:8888/
上图显示的内容,就是当前注册中心维护的所有服务信息 展示的服务名称,服务实例名称,(服务的详细信息内存中维护的)
○ 注册中心的作用
§ 管理注册者的服务信息:
内部接收注册者的请求,注册者携带本机/节点的详细参数(ip,port,服务名称) 发送给注册中心,/eureka 接收请求,在内存中存储一个双层map对象 保存所有的内容
§ 服务的监听超时:
多个注册者同时注册一个服务,相当于一个具体的服务被一个集群管理接收请求,每60秒钟判断是否有服务提供者的续约超时达到90秒,一旦满足条件,将会从内存中间超时的实例剔除
○ 注册者实现的逻辑
注册:启动后,当前eureka client一旦赋予注册能力reg