目录
国内公司一般都推崇阿里巴巴的技术,比如注册中心,SpringCloudAlibaba也推出了一个名为Nacos的注册中心。
Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。
Nacos用于**服务的注册与发现
和服务的配置管理
**。
Nacos提供了简单易用的Web Console。可以帮助开发者快速的实现服务发现、服务配置管理、服务元数据等需求。
官方文档
https://nacos.io/zh-cn/docs/what-is-nacos.html
基本架构及概念
概念
描述
服务 (Service)
服务是指一个或一组软件功能
服务注册中心 (Service Registry)
服务注册中心,它是服务,其实例及元数据的数据库。 服务实例在启动时注册到服务注册表,并在关闭时注销。
服务元数据 (Service Metadata)
服务元数据是指包括服务端点(endpoints)、服务标签、服务版本号、服务实例权重、路由规则、安全策略等描述服务的数据
服务提供方 (Service Provider)
提供可复用和可调用服务的应用方
服务消费方 (Service Consumer)
发起对某个服务调用的应用方
配置 (Configuration)
在系统开发过程中通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。
配置管理 (Configuration Management)
在数据中心中,系统中所有配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等所有与配置相关的活动统称为配置管理。
名字服务 (Naming Service)
提供分布式系统中所有对象(Object)、实体(Entity)的“名字”到关联的元数据之间的映射管理服务
Releases · alibaba/nacos · GitHub
注意:安装不允许在中文
或空格
目录下 (我想百分之九十九的软件大家都不会安装在中文目录下)
要求:操作系统的位数(32位/64位),和JDK的位数一致的(一定保持位数一致)
操作系统:
JDK:(黑窗口打出命令:java-version即可查看)
如果操作系统的版本号与JDK的版本不一致,异常如下:
1)删除data目录重试
如果无法正常运行,删除 data目录后,重新运行
2)必须配置JAVA_HOME
3)unable to start embedded tomcat
不能成功启动tomcat
解决方案:更换JDK
注意:使用startup.cmd -m standalone
启动成功:
运行异常:(因为nacos默认运行方式)
这是我的地址:http://192.168.0.107:8848/nacos/index.html
账号:nacos
密码:nacos
nacos-parent-01(像我这目录结构太乱其他板块都是之前测试用的,最后把标记的三个创建出来就ok)
org.springframework.cloud spring-cloud-build 2.3.5.RELEASE
创建项目:nacos_provider_21
添加依赖:
org.springframework.boot spring-boot-starter-web
com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery
- 1
- 2
- 3
- 4
- 5
创建yml文件
server:
port: 9999 #端口号spring:
application:
name: service-provider #服务名
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #nacos服务地址
启动类:
@SpringBootApplication
@EnableDiscoveryClient //这个注解你要是不写,那指定不算入门成功
public class TestNacosProviderApplication {
public static void main(String[] args) {
SpringApplication.run(TestNacosProviderApplication.class, args );
}
}
写个controller提供一个访问的程序:
@RestController
public class EchoController {
@Resource
private HttpServletRequest request;
@GetMapping("/tudou")
public String tudou() {
int serverPort = request.getServerPort();
return "你好nacos服务,我是 " + ":" + serverPort;
}
}
看一下编辑器控制台输出的结果:
通过Nacos控制台查看
控制台出现这种错误不要慌:是你的nacos服务没有开启,拒绝了访问
项目名称:nacos_consumer_21
添加依赖:
org.springframework.boot spring-boot-starter-web
com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery org.springframework.cloud spring-cloud-starter-openfeign org.springframework.boot spring-boot-starter-webflux
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
org.springframework.cloud spring-cloud-starter-openfeign
- 1
- 2
- 3
- 4
com.alibaba.cloud spring-cloud-starter-alibaba-sentinel
- 1
- 2
- 3
- 4
- 5
创建配置文件 :
#端口号
server:
port: 8071spring:
application:
name: service-consumer #服务名
cloud:
nacos:
discovery:
server-addr: localhost:8848 #nacos服务地址
sentinel:
transport:
dashboard: 127.0.0.1:18080
feign:
sentinel:
enabled: true
创建启动类:
@SpringBootApplication
@EnableDiscoveryClient //服务发现
public class TestNacosConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(TestNacosConsumerApplication.class, args );
}
}
远程调用的配置类:
@Component
public class RestTemplateConfig {
@LoadBalanced //负载均衡(通过服务名访问服务)该注解相关文章在微服务专栏查看
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
写个controller(这里的url是通过服务名进行访问的提供方)
@RestController
public class TestController {
@Resource
private RestTemplate restTemplate;
@GetMapping("/tudouconsumer")
public String tudouconsumer(){
String url="http://service-provider/tudou"; \可以看到是通过服务名称进行访问的提供方
return restTemplate.getForObject(url,String.class);
}
}
首先服务方和消费方的服务都进行启动:
通过浏览器进行访问消费方的controller,通过消费方的controller中的方法进行访问提供方的controller(成功访问):
看一下nacos注册中心:
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦