vlambda博客
学习文章列表

8848钛金手机之nacos的注册发现

8848钛金手机之nacos的注册发现

朋友,你看过那个弥漫着奢华尊贵的8848钛金手机的广告吗?对就是一个光头还有王石代言的那个,可以被制作成多种鬼畜的那个。8848的含义到底是啥?和注册发现服务nacos 又有啥关系?

8848钛金手机之nacos的注册发现

目录

1.8848的含义

2.什么是nacos

3.nacos的单机安装

4.代码实现服务注册

5.测试服务注册


1

8848的含义


8848钛金手机是北京珠穆朗玛移动通信有限公司于2015年7月28日正式在京发布的一款手机

8848 是世界最高峰珠穆朗玛峰的高度,懂了吧 ?


2

什么是nacos

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

上篇文章给大家简单介绍下了SpringCloud的微服务架构,其中就包含服务注册中心,由于eureka 停止更新,而且不用创建工程,nacos 是已经打包好的程序,双击启动。现在Alibaba的nacos成为了不错的选择。


nacos 与8848 啥关系?

没关系,nacos启动时默认8848端口,寓意不断攀登高峰?


nacos 啊,国产之光,阿里美。。。。。你品,细品,是不是有内味了

偏题了。

8848钛金手机之nacos的注册发现

nacos 官方网站:https://nacos.io/zh-cn/docs/quick-start.html 中文版。

nacos 不仅仅作为服务注册中心使用,还可以丝滑地作为统一配置中心,后续再介绍。


3

nacos的单机安装

nacos单机单机安装非常简单,双击启动,提供优美UI管理界面。

  • nacos下载

https://github.com/alibaba/nacos/releases 

8848钛金手机之nacos的注册发现

要是github下载慢,你可以借助迅雷下载,这个东西还真可以。安装的最新版 window版本,要求

jdk 1.8+java配置了环境变量JAVA_HOME
  • 启动

解压,进入bin 目录,双击 startup.cmd,就OK了,你看它启动像极了apache 2.4 哈。

8848钛金手机之nacos的注册发现

出现了:

8848钛金手机之nacos的注册发现

启动成功了。

nacos提供了web管理界面,浏览器打开http://127.0.0.1:8848/

8848钛金手机之nacos的注册发现

就这样,不需要账号密码,不过安全起见 ,你需要修改nacos的默认账号与密码。


4

代码实服务注册

注册服务非常简单,3步走。

  • 引入依赖

 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
  • 添加注解 @EnableDiscoveryClient 

 

package com.qustdjx.order;
import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.client.loadbalancer.LoadBalanced;import org.springframework.context.annotation.Bean;import org.springframework.web.client.RestTemplate;
@SpringBootApplication@EnableDiscoveryClientpublic class OrderApplication {
public static void main(String[] args) { SpringApplication.run(OrderApplication.class, args); }

@Bean @LoadBalanced public RestTemplate getRestTemplate(){
return new RestTemplate(); }
}
  •  配置

spring: cloud:    nacos: discovery:        server-addr: 127.0.0.1:8848 application: name: order
  • 启动,就可以看到nacos 的服务列表里已经有了。

#创建order和product 两个服务,# order 2个实例运行在 7001 ,7002 端口# product 3个实例运行在6001,6002,6003端口

多实例如何运行请参考:

效果如图

8848钛金手机之nacos的注册发现

5

测试服务注册

  • 引入发现客户端

 @Autowired private DiscoveryClient discoveryClient;
  • 获取 服务列表

 @GetMapping("/services") public List <String> services(){
return discoveryClient.getServices();
}

运行效果如下,发现服务注册中心有product,order两个服务注册:

8848钛金手机之nacos的注册发现


  • 获得product服务的实例信息


@GetMapping("/instances") public List <ServiceInstance> instances(){ //List<ServiceInstance> instances = discoveryClient.getInstances("product"); return discoveryClient.getInstances("product");    }

运行效果如下,发现提供prodcut服务的有三个实例,他们的host,port,uri都能获得,调用任意一个product服务都可以。

8848钛金手机之nacos的注册发现


对高可用系统来说,多个冗余服务,就可以负载均衡了,可以自己实现一个随机负载均衡。

 // 自制负载均衡 @GetMapping("/balance/{id}") public String loadbalance(@PathVariable("id") Integer id){
// String url = "http://127.0.0.1:6001/product/getOne/{id}"; List<ServiceInstance> instances = discoveryClient.getInstances("product"); // 随机获得索引 int instancesIndex = ThreadLocalRandom.current().nextInt(instances.size()); ServiceInstance serviceInstance = instances.get(instancesIndex); // 拼接地址 String url = serviceInstance.getUri().toString()+"/product/getOne/{id}"; log.info(url);
String res = restTemplate.getForObject(url, String.class,id);
return res;
}


END


8848钛金手机之nacos的注册发现


8848钛金手机之nacos的注册发现

 

 

 

 

关注二维码

获取更多精彩内容