nacos服务安装

nacos

服务安装

  • 去github官网下载最新的zip包并解压https://github.com/alibaba/nacos/releases

  • 在根目录执行如下命令:

    mvn -Prelease-nacos -DskipTests clean install -U  
    
  • nacos\distribution\target下游需要的包,解压

  • 进入解压目录

    cd bin
    
  • 修改startup.cmd文件为standalone模式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AEBq2GMt-1620884418572)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20210508103556235.png)]

  • 双击startup.cmd启动

nacos使用

/**
 * 1、如何使用nacos作为配置中心统一管理
 *      1)、引入依赖
 *      <dependency>
 *             <groupId>com.alibaba.cloud</groupId>
 *             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
 *         </dependency>
 *      2)、创建一个bootstrap.properties,配置如下两项
 *          spring.cloud.nacos.config.server-addr=127.0.0.1:8848
 *          spring.application.name=mall-coupon
 *      3)、需要给配置中心默认添加一个叫数据集(Data Id)mall-coupon.properties,默认规则:应用名.properties
 *      4)、给应用名.properties添加任何配置
 *      5)、动态获取配置
 *          @RefreshScope:动态获取并刷新配置
 *          @Value(""${配置项的名}):获取到配置
 *          如果配置中心和当前项目的配置文件都配置了相同的项,优先使用中心的配置
 * 2、细节
 *      1)、命名空间:配置隔离
 *          默认:public(保留空间),默认新增的所有配置都在public空间
 *          1.1)、 开发、测试、生产利用命名空间做环境隔离
 *                  注意:在bootstrap.properties配置上、需要使用哪个命令名空间下的配置
 *                  spring.cloud.nacos.config.namespace=1b0191f0-19f3-4784-a8b1-474c5d3d244a[命名空间的id]
 *          1.2)、每一个微服务之间互相隔离,每一个微服务都创建自己的命名空间,只加载自己命名空间下的所有配置
 *      2)、配置集:所有配置的集合
 *      3)、配置集ID:类似文件名
 *          DataId:类似文件名
 *      4)、配置组
 *          默认所有的配置集都属于:DEFAULT_GROUP
 *  每个微服务创建自己的命名空间,使用配置分组区分环境配置:test、prod、test
 *      5)、同时加载多个配置集
 *          5.1)、微服务任何配置信息,任何配置文件都可以放在配置中心中
 *          5.2)、只需要在bootstrap.properties说明加载哪些配置文件即可
 */

版本关系

https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E

<!--服务注册|发现-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
@Configuration
@EnableConfigurationProperties
@ConditionalOnNacosDiscoveryEnabled
@ConditionalOnProperty(value = "spring.cloud.service-registry.auto-registration.enabled", matchIfMissing = true)
// 该类在AutoServiceRegistrationConfiguration,AutoServiceRegistrationAutoConfiguration之后自动配置,
AutoServiceRegistrationConfiguration对应的是
    
@AutoConfigureAfter({ AutoServiceRegistrationConfiguration.class,
		AutoServiceRegistrationAutoConfiguration.class })
public class NacosDiscoveryAutoConfiguration {

    // 1. nacos服务注册
	@Bean
	public NacosServiceRegistry nacosServiceRegistry(
			NacosDiscoveryProperties nacosDiscoveryProperties) {
		return new NacosServiceRegistry(nacosDiscoveryProperties);
	}

    // 2. nacos注册
	@Bean
	@ConditionalOnBean(AutoServiceRegistrationProperties.class)
	public NacosRegistration nacosRegistration(
			NacosDiscoveryProperties nacosDiscoveryProperties,
			ApplicationContext context) {
		return new NacosRegistration(nacosDiscoveryProperties, context);
	}

    // 3. nacos自动服务注册
	@Bean
	@ConditionalOnBean(AutoServiceRegistrationProperties.class)
	public NacosAutoServiceRegistration nacosAutoServiceRegistration(
			NacosServiceRegistry registry,
			AutoServiceRegistrationProperties autoServiceRegistrationProperties,
			NacosRegistration registration) {
		return new NacosAutoServiceRegistration(registry,
				autoServiceRegistrationProperties, registration);
	}
}
NacosDiscoveryProperties {
	serverAddr = '127.0.0.1:8848', 
    endpoint = '', 
    namespace = '', 
    watchDelay = 30000, 
    logName = '', 
    service = 'mall-coupon', 
    weight = 1.0,
    clusterName = 'DEFAULT', 
    namingLoadCacheAtStart = 'false', 
    metadata = {
		preserved.register.source = SPRING_CLOUD
	}, 
	registerEnabled = true, 
	ip = '192.168.1.7', 
	networkInterface = '', 
	port = -1, 
	secure = false, 
	accessKey = '', 
	secretKey = ''
}
namingService {
	namespace: "public",
   	endpoint: "",
    serverList:	"127.0.0.1:8848",
    cacheDir; "C:\Users\admin/nacos/naming/public",
   	logName: "naming.log"
    hostReactor:
    beatReactor:
    eventDispatcher;
   	serverProxy: {
    	serverPort: 8848,
    	namespaceId: "public",
    	endpoint: "",
    	nacosDomain: "127.0.0.1:8848",
    	serverList: [
    		"127.0.0.1:8848"
    	],
		serversFromEndpoint: [],
		lastSrvRefTime: 0,
		vipSrvRefInterMillis: 30000,
		properties: {
            
        }
	}
}

instance实例是怎么来的?

com.alibaba.cloud.nacos.registry.NacosServiceRegistry#register

this.nacosDiscoveryProperties = nacosDiscoveryProperties;
this.namingService = nacosDiscoveryProperties.namingServiceInstance();
Instance instance = getNacosInstanceFromRegistration(registration);
	@PostConstruct	public void init() {		Map<String, String> metadata = nacosDiscoveryProperties.getMetadata();		Environment env = context.getEnvironment();		String endpointBasePath = env.getProperty(MANAGEMENT_ENDPOINT_BASE_PATH);		if (!StringUtils.isEmpty(endpointBasePath)) {			metadata.put(MANAGEMENT_ENDPOINT_BASE_PATH, endpointBasePath);		}		Integer managementPort = ManagementServerPortUtils.getPort(context);		if (null != managementPort) {			metadata.put(MANAGEMENT_PORT, managementPort.toString());			String contextPath = env					.getProperty("management.server.servlet.context-path");			String address = env.getProperty("management.server.address");			if (!StringUtils.isEmpty(contextPath)) {				metadata.put(MANAGEMENT_CONTEXT_PATH, contextPath);			}			if (!StringUtils.isEmpty(address)) {				metadata.put(MANAGEMENT_ADDRESS, address);			}		}		if (null != nacosDiscoveryProperties.getHeartBeatInterval()) {			metadata.put(PreservedMetadataKeys.HEART_BEAT_INTERVAL,					nacosDiscoveryProperties.getHeartBeatInterval().toString());		}		if (null != nacosDiscoveryProperties.getHeartBeatTimeout()) {			metadata.put(PreservedMetadataKeys.HEART_BEAT_TIMEOUT,					nacosDiscoveryProperties.getHeartBeatTimeout().toString());		}		if (null != nacosDiscoveryProperties.getIpDeleteTimeout()) {			metadata.put(PreservedMetadataKeys.IP_DELETE_TIMEOUT,					nacosDiscoveryProperties.getIpDeleteTimeout().toString());		}	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值