Apollo使用

一、访问Portal端

默认访问地址:http://ip:8070(config默认端口8080、admin默认端口8090)
默认用户密码:apollo/admin
登录后界面如下
在这里插入图片描述

二、创建用户

选择 -> 管理员工具 -> 用户管理
在这里插入图片描述

三、项目创建

在这里插入图片描述
提交报错处理
日志:

org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://192.168.48.128:8080/services/admin": 没有到主机的路由 (Host unreachable); nested exception is 
java.net.NoRouteToHostException: 没有到主机的路由 (Host unreachable)

原因:因为各应用部署在不同机器上,而此时防火墙没有开,所有导致报错;放开防火墙端口后,提示可以进行环境信息补录;
在这里插入图片描述
补缺信息后效果如下
在这里插入图片描述

四、配置集成

4.1、项目中引入pom依赖

版本与上面部署各服务版本保持一致

	<dependency>
         <groupId>com.ctrip.framework.apollo</groupId>
         <artifactId>apollo-client</artifactId>
         <version>1.4.0</version>
    </dependency>

4.2、配置apollo连接信息

application.properties文件中新增如下配置信息

# Apollo管理平台中创建的项目的ID
app.id=test-app
# ConfigService访问地址
apollo.meta=http://192.168.48.128:8080
# 定义缓存目录,Apollo会自动缓存配置到当前目录中
apollo.cacheDir=D:/cacheDir
# 开启Apollo
apollo.bootstrap.enabled=true

4.3、配置读取

4.3.1、配置数据库连接信息

application.properties中,以变量方式配置数据库连接信息

spring.datasource.driver-class-name=${spring.datasource.driver-class-name}
spring.datasource.url=${spring.datasource.url}
spring.datasource.username=${spring.datasource.username}
spring.datasource.password=${spring.datasource.password}
4.3.2、在apollo后管中配置参数

配置数据库连接信息且发布
在这里插入图片描述

4.3.3、编写测试类TestApollo
package com.example.demo.utils;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @Author: pandafox
 * @Desctription: TODO
 * @Date: Created in 2020/7/23 21:45
 * @Version: 1.0
 */
@Controller
public class TestApollo {
	// defaultUrl为默认值,即如果从apollo中未获取到值时使用
    @Value("${spring.datasource.url:defaultUrl}")
    private String url;

    @Value("${spring.datasource.username:defaultUsername}")
    private String username;

    @RequestMapping("/testApollo")
    public String testApollo() {
        System.out.println("url : " + url);
        System.out.println("username : " + username);
        return "ok";
    }

}

4.3.4、开启注解

在启动类上加上@EnableApolloConfig

4.4、效果查看

应用正常启动,则说明从远程configService服务中读取数据库连接信息成功

2020-07-23 22:02:54.457  INFO 2208 --- [           main] c.c.f.f.i.p.DefaultApplicationProvider   : App ID is set to test-app by app.id property from System Property
2020-07-23 22:02:54.464  INFO 2208 --- [           main] c.c.f.f.i.p.DefaultServerProvider        : Environment is set to null. Because it is not available in either (1) JVM system property 'env', (2) OS env variable 'ENV' nor (3) property 'env' from the properties InputStream.
2020-07-23 22:02:54.512  INFO 2208 --- [           main] c.c.f.a.i.DefaultMetaServerProvider      : Located meta services from apollo.meta configuration: http://192.168.48.128:8080!
2020-07-23 22:02:54.529  INFO 2208 --- [           main] c.c.f.apollo.core.MetaDomainConsts       : Located meta server address http://192.168.48.128:8080 for env UNKNOWN from com.ctrip.framework.apollo.internals.DefaultMetaServerProvider
2020-07-23 22:02:55.293  INFO 2208 --- [           main] com.example.demo.DemoApplication         : Starting DemoApplication on LAPTOP-GBVVMH3R with PID 2208 (D:\3.dev\ideaworkspace\demo\demo\target\classes started by fl in D:\3.dev\ideaworkspace\demo\demo)

访问地址http://localhost:8080/testApollo,控制台会输出如下信息,也说明读取配置信息成功

url : jdbc:mysql://127.0.0.1:3306/testdb?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
username : root
password : root
driver : com.mysql.jdbc.Driver
<think>好的,我现在需要回答用户关于“apollo使用样例”的问题。用户希望我作为Java专家,给出一个使用Apollo的示例,并解释相关问题。首先,我需要确定用户指的是哪个ApolloApollo通常有两个常见项目:一个是百度开源的配置中心Apollo,另一个是自动驾驶平台Apollo。考虑到用户提到Java领域,更可能是指Apollo配置中心。 接下来,我需要回忆Apollo配置中心的基本用法。Apollo用于分布式系统的配置管理,允许动态更新配置而无需重启应用。Java中使用通常需要添加客户端依赖,然后在代码中通过Config接口获取配置。 首先,用户需要一个使用示例。我应该分步骤说明:添加Maven依赖、配置apollo-env.properties、在代码中获取配置。例如,使用@EnableApolloConfig启用,@Value注入配置值,并展示一个简单的Spring Boot例子。 然后,解释部分需要说明Apollo的工作原理,比如客户端从Meta Server获取配置,本地缓存,长轮询更新等。还要提到如何动态更新配置,比如在Apollo管理界面修改后,应用会自动获取新值。 之后,相关问题部分需要围绕Apollo的功能和使用场景展开。例如,Apollo的核心功能、配置更新机制、多环境支持、高可用性实现方式等。确保问题覆盖用户可能关心的其他方面。 需要注意,用户要求代码只能是Java,所以示例代码必须用Java,特别是结合Spring Boot的情况。同时,要检查依赖的版本是否正确,比如最新的apollo-client版本可能有所变化,但示例中使用常见的1.x版本比较稳妥。 最后,验证步骤是否正确,比如是否遗漏了必要的配置步骤,如VM参数或app.id的设置,这些可能影响示例的正确运行。需要提醒用户在运行时指定app.id和env,或者通过配置文件设置。 总结回答结构:示例代码、解释、相关问题。确保回答清晰,步骤明确,覆盖用户的需求。</think><< Apollo(携程开源的配置中心)在Java项目中的基本使用示例: **1. 添加Maven依赖**: ```java <!-- pom.xml --> <dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> <version>1.9.1</version> </dependency> ``` **2. 配置文件(apollo-env.properties)**: ```properties # 指定Apollo Meta Server地址(根据环境调整) dev.meta=http://localhost:8080 ``` **3. 代码示例(Spring Boot集成)**: ```java @SpringBootApplication @EnableApolloConfig // 启用Apollo配置 public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @Value("${myConfigKey:defaultValue}") private String configValue; @PostConstruct public void printConfig() { System.out.println("Apollo配置值: " + configValue); } } ``` **4. 启动参数配置**: ```bash -Dapp.id=your-app-id -Denv=DEV # 指定应用ID和环境 ``` **实现原理**: - Apollo客户端通过`app.id`连接到Meta Server获取配置服务地址 - 配置会缓存在本地并支持长轮询更新(默认1秒) - 支持动态更新配置(通过`@ApolloConfigChangeListener`监听变更) **动态更新示例**: ```java @ApolloConfigChangeListener public void onChange(ConfigChangeEvent changeEvent) { if (changeEvent.isChanged("myConfigKey")) { System.out.println("配置已更新: " + changeEvent.getChange("myConfigKey")); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值