1.架构图
技术团队通过一段时间的积累后,我们打算对往后的一些新项目采用Spring Cloud技术栈来实现。大概微服务的架构如下:
Euraka注册中心集群
Zuul网关集群
各模块微服务集群
Nginx实现负载均衡
Spring Cloud Config 统一配置中心
Monitor微服务监控
2.注册中心
注册中心很简单,这里主要说一下注册中心的高可用配置
这里看到我设置了node-1,node-2两个配置文件,就是在启动应用的时候,分别启动不同的配置。
node-1的端口为9010,并向node-2注册,配置如下:
server:
port: 9010
spring:
application:
name: register ##name必须一样,不然高可用会导致unavailable-replicas
eureka:
instance:
hostname: register1
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://register2:9011/eureka/
node-2的端口为9011,并向node-1注册,配置如下:
server:
port: 9011
spring:
application:
name: register
eureka:
instance:
hostname: register2
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://register1:9010/eureka/
这里注意一下:spring.application.name需要一致,不然会出现unavailable-replicas的情况
3.OAUTH2认证服务器
我这里采用认证服务器与资源服务器分离的方式。
3.1 oauth2 server 配置
我采取了数据库和redis两种方式来存储token,可以方便切换,生成环境下建议使用redis方式。
AuthorizationServer:
@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {
@Autowired
private AuthenticationManager authenticationManager;
@Autowired
private DataSource dataSource;
@Autowired
private UserDeta