本篇参考程序猿DD的Spring Cloud Alibaba博客,地址为:http://blog.didispace.com/spring-cloud-alibaba-1/
什么是Nacos
Nacos致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
在接下里的教程中,将使用Nacos作为微服务架构中的注册中心(替代:eurekba、consul等传统方案)以及配置中心(spring cloud config)来使用。
启动Nacos
在官网下载好Nacos安装包,然后解压
Nacos1.0版本需要使用0.2.2client端,否则会报错
- Mac/Linux:
sh startup.sh -m standalone
- Windows:
cmd startup.cmd -m standalone
启动之后,访问http://127.0.0.1:8848/nacos打开Nacos控制台
用户名/密码:nacos
新建服务提供方
第一步: 创建SpringBoot应用:nacos-server-demo
第二步: pom文件引入jar包
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.SR1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
<scope>provided</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>0.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
第三步: 创建应用主类
@EnableDiscoveryClient
@SpringBootApplication
public class NacosServerDemoApplication {
public static void main(String[] args) {
SpringApplication.run(NacosServerDemoApplication.class, args);
}
@Slf4j
@RestController
static class HelloController {
@GetMapping("/hello")
public String hello(@RequestParam String name) {
return String.format("hello %s", name);
}
}
}
第四步: 配置Nacos地址以及应用名
spring.application.name=nacos-server-demo
server.port=8001
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
第五步: 启动两个nacos-server-demo
项目,端口分别为8001,8002
如果我们看到以下日志,证明nacos注册成功
2019-04-01 15:25:47.421 INFO 82708 --- [ main] o.s.c.a.n.registry.NacosServiceRegistry : nacos registry, nacos-server-demo 10.0.75.1:8002 register finished
访问Nacos控制台http://127.0.0.1:8848/nacos
可以看到服务已经注册到Nacos中
新建服务调用方
第一步: 创建SpringBoot应用:nacos-client-demo
第二步: pom文件引入jar包,同上
第三步: 创建应用主类
@EnableDiscoveryClient
@SpringBootApplication
public class NacosClientDemoApplication {
public static void main(String[] args) {
SpringApplication.run(NacosClientDemoApplication.class, args);
}
@Slf4j
@RestController
static class TestController {
@Autowired
private LoadBalancerClient loadBalancerClient;
@GetMapping("/test")
public String test() {
ServiceInstance instance = loadBalancerClient.choose("nacos-server-demo");
String url = instance.getUri() + "/hello?name=" + "clay";
RestTemplate restTemplate = new RestTemplate();
String result = restTemplate.getForObject(url, String.class);
return String.format("invoke url = %s, result = %s", url, result);
}
}
}
第四步: 配置Nacos服务地址以及应用名称
spring.application.name=nacos-client-demo
server.port=9000
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
第五步: 请求client端,可以看到请求到不同的server端
$ curl 127.0.0.1:9000/test
invoke url = http://192.168.1.103:8002/hello?name=clay, result = Hello clay
$ curl 127.0.0.1:9000/test
invoke url = http://192.168.1.103:8001/hello?name=clay, result = Hello clay
网友评论