脚本宝典收集整理的这篇文章主要介绍了微服务架构 | 3.2 Alibaba Nacos 注册中心,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
参考资料: 《SPRing Microservices in Action》 《Spring Cloud Alibaba 微服务原理与实战》 《B站 尚硅谷 SpringCloud 框架开发教程 周阳》 《Nacos 官网》
Nacos 致力于解决微服务中的统一配置、服务注册与发现等问题。它提供了一组简单易用的特性集,帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理;
Nacos 依赖 Java 1.8 以上环境,有两种安装方式:使用已经编译好的安装包和源码部署;由于《*3.5 Nacos 服务注册与发现的源码分析》要对 Nacos 源码进行分析,这里推荐源码部署; 这里选择的版本是 2.0.3;
startup.cmd
会报错:org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:156)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:544)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
startup.cmd
里第26行为 standalone
:http://localhost:8848/nacos
即可;nacos
;由于 2.0.3 版本笔者一直部署失败,因此这里以 1.4.2 版本为例;
点击 Update;
然后在 idea 上拉取代码即可;
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
-Dnacos.standalone=true
使用 Nacos 构建服务提供者大致与 Zookeeper 和 Consul 相同; Zookeeper 与 Consul 的构建方式详情请见《3.3 apache Zookeeper 注册中心》与《3.4 HashiCorp Consul 注册中心》;
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--springCloud ailibaba nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
server:
port: 9001
spring:
application:
name: nacos-provider
cloud:
nacos:
discovery:
server-addr: localhost:8848 #配置Nacos地址
management:
endpoints:
web:
exposure:
include: '*'
这里编写一个简单接口仅作为示例;
@RestController
public class providerController{
@Value("${server.port}")
private String serverPort;
@RequestMapping(value = "/provider/nacos")
public String providerNacos(){
return "springcloud with nacos: "+serverPort+"t"+ UUID.randomUUID().toString();
}
}
使用 Nacos 构建服务提供者大致与 Zookeeper 和 Consul 相同; Zookeeper 与 Consul 的构建方式详情请见《3.3 Apache Zookeeper 注册中心》与《3.4 HashiCorp Consul 注册中心》;
<!--SpringCloud ailibaba nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
server:
port: 80
spring:
application:
name: nacos-consumer
cloud:
nacos:
discovery:
server-addr: localhost:8848
#消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)
service-url:
nacos-user-service: http://nacos-provider
@Configuration
public class ApplicationContextBean{
@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
@RestController
public class ComsumerNacosController{
public static final String INVOKE_URL = "http:// nacos-provider";
@Autowired
private RestTemplate restTemplate;
@RequestMapping(value = "/consumer/nacos")
public String paymentInfo(){
String result = restTemplate.getForObject(INVOKE_URL+"/provider/nacos", String.class);
System.out.println("消费者调用提供者获取服务--->result:" + result);
return result;
}
}
nacos-server-2.0.3nacosconf
目录下找到 sql 脚本 nacos-mysql.sql
;#需要自己先创建数据库,再执行 sql 脚本;
CREATE DATABASE nacos_config;
USE nacos_config;
nacos-server-2.0.3nacosconf
目录下找到 application.properties
配置文件,修改成 MySQL 相关;..nacosconsolesrcmainresourcesapplication.properties
文件里配置;spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456
集群模式:用于生产环境,确保高可用;
集群部署官方文档:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html;
Nacos 的数据一致性算法采用的是 Raft,同样采用了该算法的中间件有 Redis Sentinel 的 Leader 选举、Etcd 等;
unzip nacos-server-2.0.3.zip
nacos/conf
下,有配置文件集群的 cluster.conf
文件,里面配置 ip:port,需要配置3个或3个以上节点;cd ${NACOS_HOME}/config
cp cluster.conf.example cluster.conf
cluster.config
,按 a/i/o 键可进入插入模式,输入以下内容(3 台机器都需要修改);#ip:port
10.51.10.128:8848
10.51.10.129:8848
10.51.10.130:8848
sh startup.sh
或者 startup.cmd-m cluster
命令启动服务;${NACOS_HOME}logsstart.out
下可以获得如下日志,表示服务启动成功:2020-01-2814:26:25,654INFO Nacos Log files:/data/program/nacos/1ogs/
2020-01-2014:26:25,654 INFO Nacos Conf files:/data/program/nacos/conf/
2020-01-20 14:26:25,654 INFO Nacos Data files:/data/program/nacos/data/
2020-01-20 14:26:25,654 INFO Nacos started successfully in cluster mode.
http://$NACOS_CLUSTER_IP:8848/nacos
即可访问 Nacos 控制台;cluster.config
的配置如下(指一台服务器上开放三个端口模拟集群):#ip:port
192.168.111.144:3333
192.168.111.144:4444
192.168.111.144:5555
${NACOS_HOME}binstartup.sh
文件里:nginx/conf/nginx.conf
;server:
port: 9002
spring:
application:
name: nacos-provider
cloud:
nacos:
discovery:
#配置Nacos地址
#server-addr: localhost:8848
# 换成nginx的1111端口,做集群
server-addr: 192.168.111.144:1111
management:
endpoints:
web:
exposure:
include: '*'
http://192.168.111.144:1111/nacos/#/login
;以上是脚本宝典为你收集整理的微服务架构 | 3.2 Alibaba Nacos 注册中心全部内容,希望文章能够帮你解决微服务架构 | 3.2 Alibaba Nacos 注册中心所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。