专栏名称: IT大咖说
大咖干货,不再错过。 让不在大会现场的程序猿、攻城狮也能体验现场的精彩瞬间。
目录
相关文章推荐
赛柏蓝  ·  2025年,集采趋势 ·  16 小时前  
学术经纬  ·  春节期间,你可能错过的10项重磅研究! ·  2 天前  
51好读  ›  专栏  ›  IT大咖说

五分钟入门Apollo

IT大咖说  · 公众号  ·  · 2024-03-22 20:00

正文

一、Apollo简介

1.1 主流配置中心

  • Disconf

2014年百度开源的配置中心,目前已不再维护

  • Spring Cloud Config

2014年9月开源,是SpringCloud生态中的一员

  • Apollo

2016年携程开源的配置管理中心,能够集中化管理不同环境、不同集群的配置,配置修改后能实时推送到应用端,并且具备权限管理的特性

  • Nacos

2018年阿里开源,还可以做DNS和RPC的服务发现.

1.2 简介

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。

Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有较好的支持。

二、快速入门

  • 执行sql脚本

通过百度网盘下载,

提取码: 9wwe
2. 修改demo.sh

修改里面的数据库连接配置
仅修改如下部分即可.

apollo_config_db_url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8
apollo_config_db_username=用户名
apollo_config_db_password=密码(如果没有密码,留空即可)

# apollo portal db info
apollo_portal_db_url=jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8
apollo_portal_db_username=用户名
apollo_portal_db_password=密码(如果没有密码,留空即可)
  • 运行

./demo.sh start

我的电脑启动慢,所以我修改了demo.sh的等待时间将下面的24改成了60
如下:

function checkServerAlive {
declare -i counter=0
declare -i max_counter=24 # 24*5=120s
declare -i total_time=0
  1. 启动成功后访问http://localhost:8070

上面框住的是三个重要参数.环境、appid、namespace

新增配置操作:
先点击新增配置,然后发布即可.

  • 编写客户端

新建一个项目,引入依赖

<dependency>
<groupId>com.ctrip.framework.apollogroupId>
<artifactId>apollo-clientartifactId>
<version>1.1.0version>
dependency>

<dependency>
<groupId>org.slf4jgroupId>
<artifactId>slf4j-simpleartifactId>
<version>1.7.28version>
dependency>

编写代码:

public class ConfigTest {

public static void main(String[] args) {
Config appConfig = ConfigService.getAppConfig();
String property = appConfig.getProperty("test", null);
System.out.println("获取到值:"+property);
}
}

运行时vm参数:

-Dapp.id=SampleApp -Denv=DEV -Ddev_meta=http://localhost:8080

集群的指定

-Dapollo.cluster=shanghai

三、核心概念

3.1 application(应用)

实际使用配置的应用

3.2 environment(环境)

应用里面包含多个环境

3.3 cluster(集群)

一个应用一个环境可能有多个集群.比如test应用的生产环境有北京集群和上海集群,那么他不同集群的配置也会不一样.

3.4 namespace(命名空间)

用于做一个分组的概念

四、常用操作

4.1 添加部门

管理员工具-》系统参数-》在key的输入框输入organizations,然后点击查询-》修改value值

后略

五、SpringBoot整合Apollo

5.1 引入依赖


<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0modelVersion>


<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.1.7.RELEASEversion>
<relativePath/>
parent>

<groupId>com.mmcgroupId>
<artifactId>apollo-quickstartartifactId>
<version>1.0-SNAPSHOTversion>

<properties>
<maven.compiler.source>8maven.compiler.source>
<maven.compiler.target>8maven.compiler.target>
properties>

<dependencies>
<dependency>
<groupId>com.ctrip.framework.apollogroupId>
<artifactId>apollo-clientartifactId>
<version>1.1.0version>
dependency>


<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>

<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-log4j2artifactId>
dependency>

dependencies>


project>

5.2 配置文件

application.properties

app.id=account-service
apollo.bootstrap.enabled=true
#多个以逗号分隔
apollo.bootstrap.namespaces=application

apollo-env.properties

dev.meta=http://localhost:8080

5.3 启用Apollo注解

@SpringBootApplication
@EnableApolloConfig
public class Application {

public static void main(String[] args) {
SpringApplication.run(Application.class);
}
}

5.4 启动时增加VM指令

-Denv=DEV -Dapollo.cacheDir=/opt/dir -Dapollo.cluster=DEFAULT

5.5 测试

@RestController
public class TestController {

@Value("${myname}





请到「今天看啥」查看全文