| 
							 Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台,集成OAuth2认证、集成短信验证码登录、FlyWay数据库版本管理、网关集成Swagger聚合所有服务API文档。基于SpringBootAdmin集成Hystrix、Turbine监控。开发用户中心、权限管理、组织架构、数据字典、消息中心、通知中心等模块。 
配置HOST 
Spring Cloud中的每个服务都是独立部署,所有在进行服务之间调用的时候需要确定对方服务的IP,为了规避IP变化带来代码修改的风险,所以需要配置host 
 # 注册中心 配置中心 
127.0.0.1 registry api-gateway 
# reids rabbitmq mysql 
127.0.0.1 cola-redis cola-rabbitmq cola-mysql 
 
环境变量 
环境变量主要是配置服务的访问用户名和密码: 
//配置服务器用户名 
CONFIG_SERVER_USERNAME 
//配置服务器密码 
CONFIG_SERVER_PASSWORD 
//注册服务器用户名 
REGISTRY_SERVER_USERNAME 
//注册服务器密码 
REGISTRY_SERVER_PASSWORD 
//监控服务器用户名 
MONITOR_SERVER_USERNAME 
//监控服务器密码 
MONITOR_SERVER_PASSWORD 
//MYSQL用户名 
MYSQL_SERVER_USERNAME 
//MYSQL密码 
MYSQL_SERVER_PASSWORD 
//RabbitMQ用户名 
RABBITMQ_SERVER_USERNAME 
//RabbitMQ密码 
RABBITMQ_SERVER_PASSWORD 
//Redis用户名 
REDIS_SERVER_USERNAME 
//Redis密码 
REDIS_SERVER_PASSWORD 
 
启动服务 
启动顺序如下:registry config auth-service uc-serivce upm-service organization-service gateway monitor 
registry必须要最先启动,registry启动之后提供接口以供其他服务进行注册 
config在registry之后启动,config负责提供给其他服务配置信息,如果config没有启动,其他服务则无法启动 
其他service在config之后启动,如果是第一次运行项目,启动config之后先启动uc-service进行数据初始化 
gateway在最后启动,如果gateway先于其他服务启动,可能无法代理到其他服务,不过会在一段时间后重新代理 
monitor,在config启动之后即可启动 
  
访问 
http://localhost:80/ 服务网关,已经聚合了所有服务的Swagger 
http://localhost:8761/ 注册中心,可以查看服务注册情况 
http://localhost:8080/ 监控中心,可以查看服务运行状态 
 
获取ACCESS_TOKEN 
curl -X POST \ 
http://api-gateway/uaa/oauth/token \ 
-H 'Cache-Control: no-cache' \ 
-H 'Postman-Token: 40aa591e-8518-4c1f-9e2d-f0c0e6151a40' \ 
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \ 
-F username=admin \ 
-F password=111111 \ 
-F grant_type=password \ 
-F scope=ui 
 
基础服务 
配置服务 
Spring Cloud Config 负责所有服务的配置,可以使用本地文件、GIT等方式存储分发配置文件 
客户端配置 
需要在POM中引入spring-cloud-starter-config 依赖, 根据约定自动状态 
在项目中需要设置配置服务的信息,例如配置服务器的地址,访问的用户名和密码等信息,在resources目录下 bootstrap.yml 文件配置 
spring: 
application: 
name: message-service 
cloud: 
config: 
uri: http://config:8888 
fail-fast: true 
 
认证服务 
Spring Security OAuth2 客户端配置 
security: 
oauth2: 
client: 
clientId: server 
clientSecret: server 
accessTokenUri: http://auth-service:5000/uaa/oauth/token 
grant-type: client_credentials 
scope: server 
@PreAuthorize("#oauth2.hasScope('server')") 
@RequestMapping(value = "accounts/{name}", method = RequestMethod.GET) 
public List<DataPoint> getStatisticsByAccountName(@PathVariable String name) { 
return statisticsService.findByAccountName(name); 
} 
 
服务网关 
zuul: 
routes: 
message-service: 
path: /notifications/** 
serviceId: message-service 
stripPrefix: false 
 
注册中心 
spring: 
application: 
name: message-service 
 
配置 
短信配置 
cola: 
sms:  #短信配置 
type: aliyun 
aliyun: 
access-key-id:  
access-key-secret:  
 
存储配置 
cola: 
storage: 
type: aliyun 
oss: 
access-key-id:  
access-key-secret:  
bucket-name:  
endpoint:  
 
 
							 |