目录
Spring Cloud Alibaba
注册中心-Nacos
Nacos下载以及安装
Windows 环境演示:
单机启动
2、集群模式
Springboot服务搭建
一、新建微服务父项目
1、new project 选择maven
2、填写项目基本信息,完成parent项目初始化
3、删除不需要的src文件夹
二、新建微服务
1、new module(可以选择Spring)
2、填写微服务模块信息编辑
3、pom.xml
4、application文件
5、启动服务
6、nocas服务列表
Feign 的RPC调用
Ribbon负载均衡
Ribbon相关接口编辑
IRule
下载地址:https://github.com/alibaba/nacos/releases
选择版本可参考:
版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub
Nacos 1.4.X
Nacos 2.X用的是grpc
进入nacos目录,
第一种方法:startup.cmd -m standalone
set MODE="standalone"
PS: 单机版不需要配置mysql
启动成功,访问路径:http://localhost:8848/nacos/#/login
默认用户名密码:nacos / nacos
1)创建数据库nacos
2)将conf目录下的nacos-mysql.sql导入到数据库中
3)修改conf目录下,的application.properties
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://localhost:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root
4)修改配置文件名:cluster.conf.example 改为cluster.conf
#example
192.168.16.101:8848
192.168.16.102:8848
5)启动startup.cmd
4.0.0
com.tmall
product
0.0.1-SNAPSHOT
tmall-product-8020
Demo project for Spring Boot
1.8
UTF-8
UTF-8
Hoxton.SR9
2.2.6.RELEASE
2.3.2.RELEASE
org.springframework.cloud
spring-cloud-dependencies
${spring.cloud.version}
pom
import
com.alibaba.cloud
spring-cloud-alibaba-dependencies
${spring.cloud.alibaba.version}
pom
import
org.springframework.boot
spring-boot-dependencies
${spring.boot.version}
pom
import
org.springframework.boot
spring-boot-starter-web
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
org.apache.maven.plugins
maven-compiler-plugin
3.8.1
1.8
UTF-8
org.springframework.boot
spring-boot-maven-plugin
2.3.2.RELEASE
com.tmall.product.TmallProduct8020Application
repackage
repackage
# 应用名称
server.port=8010
spring.application.name=tmall-member-8010
spring.cloud.nacos.discovery.enabled=true
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
Spring Cloud openfeign 对Feign增强了
Feign的负载均衡是通过Ribbon实现的
例如:tmall-order微服务调用tmall-product
1、两个微服务pom.xml
org.springframework.cloud
spring-cloud-starter-openfeign
2、两个微服务启动类上添加@EnableFeignClients
3、tmall-order新增openFeigh接口
@FeignClient(value="tmall-product",path = "/product")
public interface ProductFeignService {
@RequestMapping("/queryProductDetailByOrderId/{orderId}")
public String queryProductDetailByOrderId(@PathVariable("orderId") Long orderId);
}
4、tmall-order新增调用接口
@RestController
@RequestMapping("/order")
public class OrderController {
public static Logger logger = LoggerFactory.getLogger(OrderController.class);
@Autowired
private ProductFeignService productFeignService;
@RequestMapping(value = "/queryOrderDetail" , method = RequestMethod.POST)
public String queryOrderDetail(@RequestBody Map requestMap, HttpServletRequest request){
logger.info("queryOrderDetail 入参:"+ JSONObject.toJSONString(requestMap));
Long orderId = Long.valueOf(String.valueOf(requestMap.get("orderId"))) ;
return productFeignService.queryProductDetailByOrderId(orderId);
}
}
5、tmall-product新增对应接口
@RestController
@RequestMapping("/product")
public class ProductController {
public static Logger logger = LoggerFactory.getLogger(ProductController.class);
@RequestMapping(value = "/queryProductDetailByOrderId/{orderId}" , method = RequestMethod.GET)
public String queryProductDetailByOrderId(@PathVariable("orderId") Long orderId, HttpServletRequest request){
logger.info("queryOrderDetail 入参:"+ JSONObject.toJSONString(orderId));
return "lalala i'm product";
}
}
6、测试结果
配置中心数据是放在mysql中,修改nacos-server-1.4.2\nacos\conf下的application.propertise
数据库配置
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=nacos
db.password.0=nacos
### Connection pool configuration: hikariCP
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
#默认会找tmall-order.properties
spring.application.name=tmall-order
spring.cloud.nacos.config.server-addr=192.168.33.70:8848
#默认会找tmall-order-dev.properties
spring.profiles.active=dev
#默认会找tmall-order.properties
#spring.cloud.nacos.config.file-extension=yaml
logging.level.com.alibaba.cloud.nacos.client.NacosPropertySource=DEBUG
# 共享配置文件
# Data Id
spring.cloud.nacos.config.shared-configs[0].data-id=tmall-order-common.yaml
# 配置Data Id所在分组,缺省默认 DEFAULT_GROUP
spring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUP
# 配置Data Id 在配置变更时,是否动态刷新,缺省默认 false
spring.cloud.nacos.config.shared-configs[0].refresh=true
# 扩展配置文件
# Data Id
spring.cloud.nacos.config.extension-configs[0].data-id=tmall-order-ext.properties
# 配置Data Id所在分组,缺省默认 DEFAULT_GROUP
spring.cloud.nacos.config.extension-configs[2].group=DEFAULT_GROUP
# 配置Data Id 在配置变更时,是否动态刷新,缺省默认 false
spring.cloud.nacos.config.extension-configs[2].refresh=true
Sentinel:以流量为切入点,可以从流量路由、流量控制、流量整形、熔断降级、自适应过载保护、热点流量防护等
注意:这是阿里半开源的
高并发下:超时时间、线程池、资源隔离、服务限流、服务降级、服务熔断
1、下载sentinel控制台jar包
版本最好和本地匹配可参考:版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub
下载地址:
https://github.com/alibaba/Sentinel/releases
启动命令:java -jar sentinel-dashboard-1.8.1.jar
默认账号密码都是sentinel
2、修改配置文件
spring:
cloud:
nacos:
discovery:
enabled: true
username: nacos
password: nacos
server-addr: 127.0.0.1:8848
sentinel:
transport:
dashboard: 127.0.0.1:8080
feign:
client:
config:
tmall-product:
loggerLevel: FULL #FULL BASIC ...
3、调用一次接口后,可以看到微服务注册好了,
但是数据保存在内存中,未持久化,所以重启又会没了。
4、通过配置台或者代码配置规则
@LoadBalanced
最经常修改的是负载均衡策略,也可以自定义choose方法,自己写算法
默认是ZoneAvoidanceRule:默认负载均衡策略
pom.xml
因为spring-cloud-starter-alibaba-nacos-discovery会自动引入ribbon依赖所以不需要添加