26| 注册中心Nacos搭建和配置以及Feign调用 小滴课堂讲师 2024年08月13日 预计阅读 2 分钟 原文 ### 注册中心Docker容器化部署Nacos - docker拉取镜像 ```dockerfile docker pull nacos/nacos-server ``` - 查看镜像 ```dockerfile docker images ``` - 启动Nacos ```dockerfile docker run --env MODE=standalone --name yn-nacos -d -p 8848:8848 nacos/nacos-server //查看日志 docker logs -f ``` - 访问Nacos(记得开放阿里云的网络安全组) ```dockerfile http://公网ip:8848/nacos # 登录密码默认nacos/nacos ``` ### Nacos注册中心配置mysql持久化 * nacos数据库脚本 * 导入数据库脚本 * 新增一个用户 nacos/nacos ```sql INSERT INTO `users` (`username`, `password`, `enabled`) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', 1); ``` * mysql最好使用5.7版本(业界用的比较多,稳定) * `启动命令` ```sh docker run -d \ -e MODE=standalone \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=rm-2zex75gbqsnvgzlay8o.mysql.rds.aliyuncs.com \ -e MYSQL_SERVICE_PORT=3306 \ -e MYSQL_SERVICE_USER=root \ -e MYSQL_SERVICE_PASSWORD=123456 \ -e MYSQL_SERVICE_DB_NAME=nacos \ -p 8848:8848 \ --restart=always \ --name nacos \ nacos/nacos-server ``` ### 微服务引入Nacos注册中心和Feign远程调用 * common项目添加依赖 ```xml com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery org.springframework.cloud spring-cloud-starter-openfeign ``` * 用户和优惠券微服务配置注册中心 ```yml cloud: #注册中心地址 nacos: discovery: server-addr: 192.168.24.24:8848 username: nacos password: SDFRXqws namespace: public ``` * 用户和优惠券微服务启动类添加 ```java @EnableFeignClients @EnableDiscoveryClient ``` * 订单和商品微服务配置注册中心 ```yaml cloud: #注册中心地址 nacos: discovery: server-addr: 192.168.24.24:8848 username: nacos password: SDFRXqws namespace: public ``` * 订单和商品微服务启动类添加 ```java @EnableFeignClients // 开启feign调用,不添加启动报错 @EnableDiscoveryClient ``` ### 拉新业务,用户微服务和优惠券微服务之间的通讯 通过Feign在用户微服务调用优惠券微服务,因为优惠券查询需要token,请求时,带上请求头 ```java /** * Feign调用优惠券服务接口 */ @FeignClient(name = "nla-coupon-service") public interface CouponFeignService { /** * 分页查询优惠券 */ @GetMapping("/cop/coupon/v1/page_coupon") JsonData pageCouponList(@RequestHeader Map header, @RequestParam("page") int page, @RequestParam("size") int size); } ``` 用户模块调用 ```java @ApiOperation("Feign调用分页查询优惠券") @GetMapping("page_coupon") public JsonData pageCouponList( @ApiParam(value = "当前页") @RequestParam(value = "page", defaultValue = "1") int page, @ApiParam(value = "每页显示多少条") @RequestParam(value = "size", defaultValue = "10") int size, @RequestHeader Map header) { return JsonData.buildSuccess(couponFeignService.pageCouponList(header, page, size)); } ```
评论区