前言
昨天将SSO的前期的准备工作(界面,后台业务逻辑)做完了,而接下来的就是与数据库进行交互,这里我并没有选择直接在SSO服务配置数据库信息与数据库进行交互,而是决定通过 SpringCloud与数据服务(再启动一个项目)进行交互。
这样的做的考虑是想SSO应用仅仅负责登录,保持职责单一,而数据库服务单独启动一个项目去实现,也方便后面其他应用使用,所以第一步就是选择注册中心,关于注册中心有博主知道的有Eureka ,Zookeeper , Consul 以及最近听说由阿里开源的nacos。
几种注册中心对CAP支持情况
Eureka AP(高可用+分区容错)
Zookeeper CP(强一致+分区容错)
Consul CP(强一致+分区容错)其一致性算法采用Raft,该算法比zookeeper使用的Paxos算法更加简单
nacos 听说就比较高级了,因为Nacos Server 可以运行在多种模式下,当前支持三种模式:AP、CP和 MIXED(博主这里还未使用过,所以不过分解读)
这里博主选择使用Eureka,因为其他三种都需要单独安装,无法直接通过 SpringBoot进行使用,其次Eureka并非像网上所言,停止维护,博主在Git上发现Eureka1维护还是很频繁的。
新建项目的过程与SpringBoot没什么区别,可以通过勾选完成自动化配置
而如果项目之前已经新建好了,我们也可以引入依赖来达到相同效果
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
修改配置文件
server.port=7999
eureka.instance.hostname=127.0.0.1
#表明自己是一个eureka服务,而非Client
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
#地址
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
启动类增加@EnableEurekaServer注解启动即可。
而SSO需要像注册中心注册服务,也得引入Eureka的客户端依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
修改配置文件
# SSO 80端口
server.port=80
# 默认路径,注意不能少反斜杠,也不能在反斜杠后面多一些空格
spring.thymeleaf.prefix=classpath:/templates/
# 后缀
spring.thymeleaf.suffix=.html
# 缓存
spring.thymeleaf.cache=false
#Eureka
spring.application.name=sso
#显示主机IP
eureka.instance.prefer-ip-address=true
#注册名称
eureka.instance.instance-id=${spring.application.name}(${spring.cloud.client.ip-address}:${server.port})
#心跳检测为10S
eureka.instance.lease-renewal-interval-in-seconds=10
#注册中心地址
eureka.client.service-url.defaultZone=http://127.0.0.1:7999/eureka/
启动类增加@EnableEurekaClient注解,启动
当我们停止SSO服务后,我们可以发现界面上该服务显示Down