zoukankan      html  css  js  c++  java
  • 十分钟入门Apollo

    一、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环境也有较好的支持。

    二、快速入门

    1. 执行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=密码(如果没有密码,留空即可)
    
    1. 运行

    ./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

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

    1. 编写客户端

    新建一个项目,引入依赖

    <dependency>
                <groupId>com.ctrip.framework.apollo</groupId>
                <artifactId>apollo-client</artifactId>
                <version>1.1.0</version>
            </dependency>
            
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-simple</artifactId>
                <version>1.7.28</version>
            </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 引入依赖

    <?xml version="1.0" encoding="UTF-8"?>
    <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.0</modelVersion>
    
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.7.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <groupId>com.mmc</groupId>
        <artifactId>apollo-quickstart</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>com.ctrip.framework.apollo</groupId>
                <artifactId>apollo-client</artifactId>
                <version>1.1.0</version>
            </dependency>
    
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-log4j2</artifactId>
            </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}")
        private String myname;
    
        @RequestMapping("/test")
        public String test(){
            return myname;
        }
    }
    

    另外像spring的基本配置,如server.port,当我们在apollo里面配置了这个key值,那么启动项目时配置会直接生效.

  • 相关阅读:
    第二次作业
    第五次作业
    第四次作业
    第三次作业
    第二次作业
    第三次作业
    第二次作业
    第二次作业
    gravity
    card
  • 原文地址:https://www.cnblogs.com/javammc/p/14256643.html
Copyright © 2011-2022 走看看