背景分析
Nacos概述 Nacos 快速开始
构建Nacos服务
准备工作
第一:确保你电脑已配置JAVA_HOME环境变量(Nacos启动时需要)
第二:确保你的MySQL版本为5.7以上(MariaDB10.5以上)下载与安装
Releases · alibaba/nacos · GitHub
初始化配置
1.在命令行首先登录mysql,然后执行如下指令:
source d:/nacos-mysql.sql
第二步:打开/conf/application.properties里打开默认配置,并基于你当前环境配置要连接的数据库,连接数据库时使用的用户名和密码(假如前面有"#"要将其去掉):
### 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_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user.0=root db.password.0=root服务启动与访问
命令:startup.cmd -m standalone
访问 http://localhost:8848/nacos
服务注册与调用入门(重点)
其中,默认账号密码为nacos/nacos.
业务描述
创建两个项目Module分别为服务提供者和服务消费者,两者都要注册到NacosServer中(这个server本质上就是一个web服务,端口默认为8848),然后服务提供者可以为服务消费者提供远端调用服务(例如支付服务为服务提供方,订单服务为服务消费方),如图所示:
生产者服务创建及注册 编辑provider pom.xml
org.springframework.boot spring-boot-starter-webcom.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery
第二步:创建并修改配置文件application.yml(或者application.properties),实现服务注册,关键代码如下:
server:
port: 8081
spring:
application:
name: sca-provider
cloud:
nacos:
discovery:
server-addr: localhost:8848 #假如你的服务在同一台电脑上,默认向本机的nacos进行注册,这个地址不用配置
第三步:创建启动类,并定义处理请求的控制层对象和方法,关键代码如下:
package com.cy;
@SpringBootApplication
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
@RestController
public class ProviderController{
//@Value默认读取项目配置文件中配置的内容
//8080为没有读到server.port的值时,给定的默认值
@Value("${server.port:8080}")
private String server;
//http://localhost:8081/provider/echo/tedu
@GetMapping("/provider/echo/{msg}")
public String doRestEcho1(@PathVariable String msg){
return server+" say hello "+msg;
}
}
}
第四步:启动启动类,然后刷先nacos服务,检测是否服务注册成功,如图所示:
10秒健康之后不健康 30 秒之后为死亡
消费者服务发现及调用
第一步:创建服务消费者(module名为sca-consumer),继承parent工程(01-sca),其pom.xml文件内容如下:
01-sca com.jt 1.0-SNAPSHOT 4.0.0 sca-consumerorg.springframework.boot spring-boot-starter-webcom.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery
第二步:修改配置文件application.yml,关键代码如下:
server:
port: 8090
spring:
application:
name: sca-consumer
cloud:
nacos:
discovery:
server-addr: localhost:8848 #从哪里去查找服务
第三步:创建启动类并实现服务消费,关键代码如下:
package com.jt;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class,args);
}
//交给spring
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
@RestController
public class ConsumerController{
@Value("${spring.application.name}")
private String appName;
@Autowired
private RestTemplate restTemplate;
@GetMapping("/consumer/doRestEcho1")
public String doRestEcho01(){
String url = "http://localhost:8081/provider/echo/"+appName;
System.out.println("request url:"+url);
return restTemplate.getForObject(url, String.class);//string。class//获取了提供方,提供方也需要调用启动类
//创建restTemplate对象交给spring来传参数
}
}
}
小节面试分析
服务负载均衡设计及实现(重点)
入门案例
@LoadBalanced
Ribbon负载均衡策略(了解)
小节面试分析
基于Feign的远程服务调用(重点)
背景分析
Feign是什么
Feign应用实践(掌握)
Feign配置进阶实践
Feign 调用过程分析(了解)
小节面试分析
总结(Summary)
重难点分析
FAQ分析
Bug分析
作业:
重新创建聚合项目
重新完成注册



