每天20分钟之apollo的使用
使用 20 分钟 每天 Apollo
2023-06-13 09:13:42 时间
appollo介绍
1 提供哪些功能
简单说提供了配置管理功能
配置之外提供
- 按照集群,机器,环境,命名空间推送数据
- 权限管理
- 高可用
- 实时生效
- 版本管理
- 提供java和.net客户端
官方地址: https://www.apolloconfig.com/#/zh/README
安装
- 下载 git clone https://github.com/apolloconfig/apollo-quick-start.git
- 本地构建数据库
- sh demo.sh start
- 访问 http://localhost:8070/signin
2 整体架构:见官网
3 使用方式
引入依赖
<!-- https://mvnrepository.com/artifact/com.ctrip.framework.apollo/apollo-client -->
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>${apollo-version}</version>
</dependency>
spring.application.name=apollo-simple
server.port=7180
app.id=1
apollo.cache-dir=/tmp/data
apollo.meta=http://localhost:8080
apollo.bootstrap.enabled=true
apollo.bootstrap.namespaces=application
apollo.bootstrap.eagerLoad.enabled=true
四种方式获取配置
package cn.beckbi.controller;
import cn.beckbi.response.IdData;
import cn.beckbi.util.JacksonTool;
import com.ctrip.framework.apollo.Config;
import com.ctrip.framework.apollo.ConfigService;
import com.ctrip.framework.apollo.model.ConfigChangeEvent;
import com.ctrip.framework.apollo.spring.annotation.ApolloConfig;
import com.ctrip.framework.apollo.spring.annotation.ApolloConfigChangeListener;
import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Optional;
/**
* @program: spring-cloud
* @description:
* @author: bikang
* @create: 2022-02-09 23:04
*/
@Slf4j
@Api(tags={"用户接口"})
@RestController
public class UserController {
@ApolloConfig
private Config config;
@Value("${user_info}")
private String configData;
@ApolloJsonValue("${user_info}")
private IdData idData;
private Optional<IdData> getIdDataFromConfig() {
String data = config.getProperty("user_info", "");
return Optional.ofNullable(JacksonTool.parseObject(data, IdData.class));
}
@GetMapping("/config1")
public String configInfo1() {
return configData;
}
@GetMapping("/config2")
public IdData configInfo2() {
return idData;
}
@GetMapping("/config3")
public String configInfo3() {
Config config = ConfigService.getConfig("application");
return config.getProperty("user_info", "");
}
@GetMapping("/user/{uid}")
public IdData info(@PathVariable long uid) {
IdData idData = new IdData();
idData.setUid(uid);
idData.setId("");
getIdDataFromConfig().ifPresent(
data -> {
log.info("{}", data);
idData.setId(data.getId());
}
);
log.info("apollo-config:"+ JacksonTool.toJSONString(config.getPropertyNames()));
return idData;
}
@ApolloConfigChangeListener
private void changer(ConfigChangeEvent changeEvent) {
if(changeEvent.isChanged("user_info")) {
log.info("user_info changeed");
}
}
}
代码详情
https://github.com/beckbikang/spring-cloud/tree/main/kapollo
相关文章
- 使用nginx发布tomcat站点
- java11-泛型及其使用[通俗易懂]
- 一图了解nginx在项目中的使用
- 使用腾讯云IM搭建应用内类微信社交聊天模块实践
- 使用 Ribbon 进行负载均衡时需要注意哪些问题
- 使用 B VPS 中转 A VPS 流量
- WordPress 文章查询教程4:如何使用文章状态参数
- PostgreSQL中使用dblink实现跨库查询的方法
- Oracle 视图 USER_TAB_COL_STAT_MODELS 官方解释,作用,如何使用详细说明
- MySQL使用格式化输出法解决数据持久化(mysql格式输出)
- 使用Oracle实现表分区的步骤(oracle创建表分区)
- 使用MySQL的SUM语句实现简单的数值计算(mysqlsum语句)
- “Linux系统使用必备:25个虚拟机应用推荐”(虚拟机forlinux)
- 探究Linux下如何使用MMS传输多媒体信息(linuxmms)
- 如何使用Strace调试工具
- node.js中的fs.ftruncate方法使用说明
- IIS6.0应用程序池回收和工作进程使用介绍