作者:安仔小窝forever | 来源:互联网 | 2023-05-23 19:18
目录
Spring Cloud Alibaba
注册中心-Nacos
Nacos下载以及安装
Windows 环境演示:
单机启动
2、集群模式
5)启动startup.cmd
一、新建微服务父项目
1、new project 选择maven
2、填写项目基本信息,完成parent项目初始化
3、删除不需要的src文件夹
二、新建微服务
1、new module(可以选择Spring)
2、填写微服务模块信息编辑
3、pom.xml
4、application文件
Spring Cloud Alibaba
注册中心-Nacos
Nacos下载以及安装 下载地址:https://github.com/alibaba/nacos/releases
选择版本可参考:
版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub
Nacos 1.4.X
Nacos 2.X用的是grpc
找到对应版本点击下载、解压
Windows 环境演示: 进入nacos目录,
单机启动 第一种方法:startup.cmd -m standalone
第二种方法:修改启动脚本改为单机模式:
set MODE="standalone"
PS: 单机版不需要配置mysql
启动成功,访问路径:http://localhost:8848/nacos/#/login
默认用户名密码:nacos / nacos
2、集群模式 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
Springboot服务搭建 一、新建微服务父项目 1、new project 选择maven
2、填写项目基本信息,完成parent项目初始化
3、删除不需要的src文件夹 二、新建微服务 1、new module(可以选择Spring)
2、填写微服务模块信息
3、pom.xml 4.0.0 com.tmall product 0.0.1-SNAPSHOT tmall-product-8020 Demo project for Spring Boot
1.8
UTF-8
UTF-8Hoxton.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 1.8 UTF-8
org.springframework.boot spring-boot-maven-plugin 2.3.2.RELEASE com.tmall.product.TmallProduct8020Application repackage repackage
4、application文件 # 应用名称 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
5、启动服务
6、nocas服务列表
Feign 的RPC调用 Spring Cloud openfeign 对Feign增强了
Feign的负载均衡是通过Ribbon实现的
Feign实战
例如: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);@Autowiredprivate 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、测试结果
Ribbon负载均衡 @LoadBalanced
Ribbon相关接口 IRule 最经常修改的是负载均衡策略,也可以自定义choose方法,自己写算法
默认是ZoneAvoidanceRule:默认负载均衡策略
pom.xml
因为spring-cloud-starter-alibaba-nacos-discovery会自动引入ribbon依赖所以不需要添加