Nacos

聊聊NacosDiscoveryHealthIndicatorAutoConfiguration

折月煮酒 提交于 2019-11-30 12:33:20
序 本文主要研究一下NacosDiscoveryHealthIndicatorAutoConfiguration NacosDiscoveryHealthIndicatorAutoConfiguration nacos-spring-boot-project/nacos-discovery-spring-boot-actuator/src/main/java/com/alibaba/boot/nacos/discovery/actuate/autoconfigure/NacosDiscoveryHealthIndicatorAutoConfiguration.java @Configuration @ConditionalOnClass({ HealthIndicator.class }) @AutoConfigureBefore({ EndpointAutoConfiguration.class }) @AutoConfigureAfter(NacosDiscoveryAutoConfiguration.class) @ConditionalOnEnabledHealthIndicator(NacosDiscoveryConstants.ENDPOINT_PREFIX) public class

spring boot admin监控 集成 nacos服务发现

佐手、 提交于 2019-11-30 12:30:50
测试需要三个使用服务: nacos注册中心, spring boot admin监控服务(集成nacos client), 测试服务(集成nacos client) 1, nacos注册中心 下载nacos-server.jar 启动就可以了,默认端口 8848 ,默认账号密码都是:nacos 2, spring boot admin监控服务 <properties> <spring.boot.version>2.1.6.RELEASE</spring.boot.version> <spring.boot.admin.version>2.1.6</spring.boot.admin.version> <spring.cloud.alibaba.version>2.1.0.RELEASE</spring.cloud.alibaba.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring.cloud.alibaba.version}</version> <type>pom

聊聊NacosDiscoveryEndpointsAutoConfiguration

ⅰ亾dé卋堺 提交于 2019-11-30 11:23:42
序 本文主要研究一下NacosDiscoveryEndpointsAutoConfiguration NacosDiscoveryEndpointsAutoConfiguration nacos-spring-boot-project/nacos-discovery-spring-boot-actuator/src/main/java/com/alibaba/boot/nacos/discovery/actuate/autoconfigure/NacosDiscoveryEndpointsAutoConfiguration.java @Configuration public class NacosDiscoveryEndpointsAutoConfiguration { @Bean @ConditionalOnMissingBean @ConditionalOnEnabledEndpoint public NacosDiscoveryEndpoint nacosDiscoveryEndpoint() { return new NacosDiscoveryEndpoint(); } } NacosDiscoveryEndpointsAutoConfiguration注册了NacosDiscoveryEndpoint NacosDiscoveryEndpoint nacos

聊聊nacos的NacosDiscoveryAutoConfiguration

与世无争的帅哥 提交于 2019-11-30 08:24:55
序 本文主要研究一下nacos的NacosDiscoveryAutoConfiguration NacosDiscoveryAutoConfiguration nacos-spring-boot-project/nacos-discovery-spring-boot-autoconfigure/src/main/java/com/alibaba/boot/nacos/discovery/autoconfigure/NacosDiscoveryAutoConfiguration.java @ConditionalOnProperty(name = NacosDiscoveryConstants.ENABLED, matchIfMissing = true) @ConditionalOnMissingBean(name = DISCOVERY_GLOBAL_NACOS_PROPERTIES_BEAN_NAME) @EnableNacosDiscovery @EnableConfigurationProperties(value = NacosDiscoveryProperties.class) @ConditionalOnClass(name = "org.springframework.boot.context.properties.bind.Binder") public

聊聊nacos的HealthCheckCommon

大兔子大兔子 提交于 2019-11-30 06:25:00
序 本文主要研究一下nacos的HealthCheckCommon HealthCheckCommon nacos-1.1.3/naming/src/main/java/com/alibaba/nacos/naming/healthcheck/HealthCheckCommon.java @Component public class HealthCheckCommon { @Autowired private DistroMapper distroMapper; @Autowired private SwitchDomain switchDomain; @Autowired private ServerListManager serverListManager; @Autowired private PushService pushService; private static LinkedBlockingDeque<HealthCheckResult> healthCheckResults = new LinkedBlockingDeque<>(1024 * 128); private static ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor(new

聊聊nacos的TcpSuperSenseProcessor

送分小仙女□ 提交于 2019-11-30 04:33:24
序 本文主要研究一下nacos的TcpSuperSenseProcessor TcpSuperSenseProcessor nacos-1.1.3/naming/src/main/java/com/alibaba/nacos/naming/healthcheck/TcpSuperSenseProcessor.java @Component public class TcpSuperSenseProcessor implements HealthCheckProcessor, Runnable { @Autowired private HealthCheckCommon healthCheckCommon; @Autowired private SwitchDomain switchDomain; public static final int CONNECT_TIMEOUT_MS = 500; private Map<String, BeatKey> keyMap = new ConcurrentHashMap<>(); private BlockingQueue<Beat> taskQueue = new LinkedBlockingQueue<Beat>(); /** * this value has been carefully tuned, do not modify

SpringBoot 2.0 + Nacos + Sentinel 流控规则集中存储

余生颓废 提交于 2019-11-30 04:15:07
前言 Sentinel 原生版本的规则管理通过API 将规则推送至客户端并直接更新到内存中,并不能直接用于生产环境。不过官方也提供了一种 Push模式,扩展读数据源ReadableDataSource,规则中心统一推送,客户端通过注册监听器的方式时刻监听变化,比如使用 Nacos、Zookeeper 等配置中心。这种方式有更好的实时性和一致性保证。这里我们通过配置 Nacos 来实现流控规则的统一存储配置。 架构 控制台推送规则至配置中心,客户端通过监听事件从配置中心获取流控规则。 客户端配置 pom.xml 引入: <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-nacos</artifactId> <version>1.6.3</version> </dependency> 配置文件: # nacos的访问地址,配置参考 https://blog.52itstyle.vip/archives/4174/ spring.cloud.sentinel.datasource.ds.nacos.server-addr=47.104.187.19:8848 #nacos中存储规则的dataId,对于dataId使用了${spring.application.name}变量

聊聊nacos的HttpHealthCheckProcessor

泄露秘密 提交于 2019-11-30 03:36:25
序 本文主要研究一下nacos的HttpHealthCheckProcessor HealthCheckProcessor nacos-1.1.3/naming/src/main/java/com/alibaba/nacos/naming/healthcheck/HealthCheckProcessor.java public interface HealthCheckProcessor { /** * Run check task for service * * @param task check task */ void process(HealthCheckTask task); /** * Get check task type, refer to enum HealthCheckType * * @return check type */ String getType(); } HealthCheckProcessor接口定义了process、getType方法 HttpHealthCheckProcessor nacos-1.1.3/naming/src/main/java/com/alibaba/nacos/naming/healthcheck/HttpHealthCheckProcessor.java @Component public class

spring cloud下用nacos做配置中心的初步探究,替换spring config server

风流意气都作罢 提交于 2019-11-30 00:26:49
一, 背景: 1, 引入nacos来做配置中心 项目现在用的是spring cloud netflix,没有用到spring-cloud-alibaba的全家桶,但又想用到nacos来做配置中心,故按官网提供的方式是不行的 2, 探究下nacos配置中心的使用与实现 目前用的spring config server其实弊端很多,比如: 强依赖gitLab, 加入BUS复杂度高不好确保所有节点的更新等缺点 故,想用nacos去替换下当前的配置中心 二, 引入 1, 如何在spring cloud netflix中引入nacos相关? 官网是假设已经引入了spring-cloud-alibaba的,故直接引入 其实都是基于spring-cloud的标准,故直接引入spring cloud alibaba nacos相关适配JAR包即可,但也都有引入spring-cloud-commons,需要主要版本的适配 <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-alibaba-nacos-config --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring

Spring Cloud Gateway 扩展支持多版本控制及灰度发布

假装没事ソ 提交于 2019-11-29 23:40:39
灰度发布 什么是灰度发布, 概念请参考 ,我们来简单的通过下图来看下,通俗的讲: 为了保证服务升级过程的平滑过渡提高客户体验,会一部分用户 一部分用户递进更新,这样生产中会同时出现多个版本的客户端,为了保证多个版本客户端的可用需要对应的多个版本的服务端版本。灰度发布就是通过一定策略保证 多个版本客户端、服务端间能够正确对应。 所谓灰度发布,即某个服务存在多个实例时,并且实例版本间的版本并不一致,通过 实现方案 nginx + lua (openresty) Netflix Zuul 只需要自定义ribbon 的断言即可,核心是通过TTL 获取上下请求header中的版本号 @Slf4j public class MetadataCanaryRuleHandler extends ZoneAvoidanceRule { @Override public AbstractServerPredicate getPredicate() { return new AbstractServerPredicate() { @Override public boolean apply(PredicateKey predicateKey) { String targetVersion = RibbonVersionHolder.getContext(); RibbonVersionHolder