前言
微服务开发模式能够将复杂的业务拆分成独立的更细粒度服务,一定程度上降低了业务复杂度,但是随之而来的是如何保证各个服务的可靠性和稳定性,SpringCloud 出现的目的是为了解决这些在服务拆分后会遇到的通用问题。配置中心能让同一服务多实例间无需重启快速更新配置、注册中心能对应用节点动态管理、网关是为了对 API 做统一的处理等。
步骤
服务发现
默认有已经部署好了 Nacos Server。
引入依赖
1
2
3
4
5
| <dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${latest.version}</version>
</dependency>
|
创建 bootstrap.yml 并添加下面的配置
1
2
3
4
| discovery:
group: infra
namespace: 7925f1c5-3291-4c0b-b4c4-920a532958f1
server-addr: 192.168.110.65:8848
|
服务配置
默认有已经部署好了 Nacos Server。
引入依赖
1
2
3
4
5
| <dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${latest.version}</version>
</dependency>
|
在 bootstrap.yml 中添加下面的配置
1
2
3
4
5
6
| nacos:
config:
file-extension: yaml
group: INFRA
namespace: 7925f1c5-3291-4c0b-b4c4-920a532958f1
server-addr: 192.168.110.65:8848
|
配置完成后 bootstarp.yml 的样例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| spring:
application:
name: auth-service
cloud:
nacos:
config:
file-extension: yaml
group: INFRA
namespace: 7925f1c5-3291-4c0b-b4c4-920a532958f1
server-addr: 192.168.110.65:8848
discovery:
group: infra
namespace: 7925f1c5-3291-4c0b-b4c4-920a532958f1
server-addr: 192.168.110.65:8848
|
API 网关
默认 API 网关以部署好并与 nacos 做好了集成,**对外提供动态路由配置、认证、限流等功能。**以 Spring Cloud Gateway 为例。
在 API Gateway 的配置中心中添加路由配置,示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| {
"id":"oauth-test",
"predicates":[
{
"name":"Path",
"args":{
"pattern":"/baidu/**"
}
}
],
"uri":"http://baidu.com/",
"filters":[
{
"name":"StripPrefix",
"args":{
"parts":"1"
}
},
{
"name":"Auth"
}
]
}
|
说明:
- id:路由的唯一标识
- predicates:前置判断,符合相应的配置才能交给后面的过滤器
- uri:最终调整的地址
- filters:过滤器集合,这里配了 StripPrefix(跳转后会抹掉 /baidu 这个路径),Auth(开启认证过滤)
监控
计划中,Prometheus + Grafana
链路追踪
计划中,Spring Cloud Sle uth + ZipKin 或者 CAT
熔断
计划中,Spring Cloud Alibaba Sentinel
分布式事务(可选)
目前在 Spring 官方文档中并未将事务纳入 Cloud 中,但是在实际开发中如果需要也可使用。
计划中,Spring Cloud Alibaba Seata
总结
SpringCloud 设计初衷是为了解决微服务治理相关的问题,提供一套开箱即用的组件,让开发者将重点放到服务拆分和设计上。上面介绍的几个组件都是微服务治理体系中必不可少的内容,所以如果想从单体应用转到微服务一定要搭建相应的治理平台,才能保证服务的可靠性和稳定性。