服务注册中心 Nacos
官网:home (nacos.io)
nacos-server下载地址:Releases · alibaba/nacos (github.com)
第一步:运行nacos-server
nacos-server-2.1.1\nacos\bin
目录下打开命令行窗口,输入startup.cmd -m standalone
;访问http://localhost:8848/nacos
,用户名、密码全部默认为 nacos
。
第二步:添加maven坐标
com.alibaba.cloud spring-cloud-starter-alibaba-nacosdiscovery
第三步:写YML配置文件
- 服务提供者
application.yml
## application.ymlserver: port: spring: application: name:nacos-payment-providercloud: nacos: discovery: server-addr:localhost:8848#配置Nacos地址 management: endpoints: web: exposure: include: '*'
- 服务消费者
application.yml
# 额外添加service-url: nacos-user-service:http://nacos-payment-provider
第四步:主启动类添加 @EnableDiscoveryClient
服务配置中心 Nacos第一步:添加maven坐标
com.alibaba.cloud spring-cloud-starter-alibaba-nacosconfig
第二步:写YML配置文件
springboot 读取配置文件的优先级:**bootstrap.yml > application.yml
bootstrap.yml
# nacos配置 server: port:3377 spring: application: name:nacos-config-clientcloud: nacos: discovery: server-addr:localhost:8848# Nacos服务注册中心地址config: server-addr:localhost:8848# Nacos作为配置中心地址_ file-extension:yaml # 指定yaml格式的配置 namespace: # 命名空间id group: DEV_GROUP
application.yml
spring: profiles: active:dev # 开发环境
第三步:添加 Spring Cloud 原生注解@RefreshScope
实现配置自动更新第四步:在nacos配置管理栏中添加新配置
DataID:${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
Group:`${spring.cloud.nacos.config.group}
配置格式:YAML
第五步:配置持久化
- 执行SQL文件:
nacos-server-2.1.1\nacos\con\nacos-mysql.sql
- 修改配置文件:
nacos-server-2.1.1\nacos\con\application.properties
spring.datasource.platform=mysqldb.num=1db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=trdb.user=db.password=
服务接口调用 OpenFeign
官网:Spring Cloud OpenFeign
第一步:添加maven坐标
org.springframework.cloud spring-cloud-starter-openfeign
第二步:主启动类添加 @EnableFeignClients
第三步:消费者业务接口添加 @FeignClient
- 消费者 service 接口
@Component@FeignClient(value = "service-provider")public interface FeignService { @GetMapping(value = "/provider/getPort") String getServerPortOfProvider();}
- 提供者 controller类,服务名
service-provider
@RestControllerpublic class ProviderController { @Value("${server.port}") private String serverPort; @GetMapping(value = "/provider/getPort") public String getServerPortOfProvider() { return this.serverPort; }}
负载均衡服务调用 LoadBalancer
官网:云原生应用 (spring.io)
OpenFeign 内部依赖 loadBalancer。
服务网关 Gateway
官网:Spring Cloud Gateway
第一步:添加maven坐标
org.springframework.cloud spring-cloud-starter-gateway
第二步:写YML配置文件
spring: cloud: gateway: discovery: locator: enabled: true # 开启从注册中心动态创建路由的功能,利用微服务名进行路由 routes: - id: payment_routh #payment_route #路由的ID,没有固定规则但要求唯一,建议配合服务名 uri: lb://cloud-payment-service #匹配后提供服务的路由地址 predicates: - Path=/payment/get/** # 断言,路径相匹配的进行路由 - id: payment_routh2 #payment_route #路由的ID,没有固定规则但要求唯一,建议配合服务名 uri: lb://cloud-payment-service #匹配后提供服务的路由地址 filters: - AddRequestHeader=X-Request-red, blue # 更多Gateway filter配置到官网查看 predicates: - Path=/payment/lb/** # 断言,路径相匹配的进行路由 - After=2017-01-20T17:42:47.789-07:00[America/Denver] # 更多断言配置到官网查看
第三步:自定义 GlobalFilter
@Component public class MyLogGateWayFilter implements GlobalFilter, Order { @Override public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { String name = exchange.getRequest().getQueryParams().getFirst("name"); if (name == null) { exchange.getResponse().setStatusCode(HttpStatus.MULTI_STATUS); return exchange.getResponse().setComplete(); } return chain.filter(exchange); } @Override public int value() { return 0; } @Override public Class annotationType() { return null; } }
服务熔断和限流 Sentinel
官网:home (sentinelguard.io)
下载地址:Releases · alibaba/Sentinel (github.com)
第一步:运行
java -jar sentinel-dashboard-1.8.5.jar
访问 sentinel 管理界面,账号密码均为 sentinel,http://localhost:8080
第二步:添加maven坐标
com.alibaba.cloud spring-cloud-starter-alibaba-sentinel com.alibaba.csp sentinel-datasource-nacos
第三步:写YML配置文件
spring: application: name: cloudalibaba-sentinel-service cloud: nacos: discovery: #Nacos服务注册中心地址 server-addr: localhost:8848 sentinel: transport: #配置Sentinel dashboard地址 dashboard: localhost:8080 #默认8719端口,假如被占用会自动从8719开始依次+1扫描,直至找到未被占用的端口 port: 8719
第四步:由于sentinel采用懒加载,需要执行一次访问流控、降级、热点key限流、系统规则、@SentinelResource
、熔断、规则持久化
分布式请求链路跟踪 Sleuth
下载:Central Repository: io/zipkin/zipkin-server (maven.org)
第一步:运行
java -jar zipkin-server-2.23.8-exec.jar
第二步:添加maven 坐标
org.springframework.cloud spring-cloud-starter-zipkin
第三步:写YML 配置文件
spring: application: name: zipkin: base-url: http://localhost:9411 sleuth: sampler: probability: 1
第四步:访问浏览器界面
http://localhost:9411/
消息驱动 Stream
官网:Spring Cloud Stream
第一步:添加maven坐标
org.springframework.cloud spring-cloud-starter-stream-rabbit