Apollo(阿波罗)分布式配置中心的原理与使用

对比springcloud的config配置中心,无法动态更改项目的配置文件并应用到服务上去,可以采用apollo配置中心替代,它可以不仅提供了实时更新服务配置中心,还提供的权限配置和相应的web界面功能,功能强大而友好。

其原理图如下:

1、为了防止apollo服务端推送失败,客户端默认每隔5分钟主动向服务端发起一次请求,请求获取最新的配置信息

2、为了防止网络不通和保证服务的高可用,依然能从本地恢复配置,除了在jvm内部缓存信息还会在本地文件系统中缓存配置信息

个人认为,apollo因为有本地缓存可以不用搭建集群或apollo服务端实例不用布署那么多,而且配置信息一般没什么改动。不用像eureka那样最好搭建集群,eureka是获取服务的地址,很重要,如果不能即时获取各个服务的情况将很严重。

疑问:为什么要建立长连接,如果配置信息在apollo服务端上有变动,不能通过服务端主动向应用程序发起请求吗?

不能,这是因为建立在微服务实例地址无变化,而且微服务实例数量不会增加的前提下。如果我想增加几台机器,那么apollo服务端如何能事先知道新增机器的地址,手动在服务端写入地址也不合适。

 

由于Quick Start项目比较大,所以放在了另外的repository,请注意项目地址

下载项目https://github.com/nobodyiam/apollo-build-scripts

导入sql文件下的两个mysql数据库脚本(mysql>=5.7)

更改demo.sh文件的数据库用户和密码名

#!/bin/bash

# apollo config db info
apollo_config_db_url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8
apollo_config_db_username=root
apollo_config_db_password=123456

# apollo portal db info
apollo_portal_db_url=jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8
apollo_portal_db_username=root
apollo_portal_db_password=123456

还有对应配置地址

# meta server url
config_server_url=http://localhost:8080
admin_server_url=http://localhost:8090
eureka_service_url=$config_server_url/eureka/
portal_url=http://localhost:8070

/opt/settings/server.properties指定为开发版本

env=DEV

 

启动命令(./demo.sh start),此时如无意外,那么apollo服务端就启动起来了,访问http://localhost:8070

项目中如何引用呢?

首先,配置maven依赖

<!-- apollo 携程apollo配置中心框架 -->
        <dependency>
            <groupId>com.ctrip.framework.apollo</groupId>
            <artifactId>apollo-client</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>com.ctrip.framework.apollo</groupId>
            <artifactId>apollo-core</artifactId>
            <version>1.0.0</version>
        </dependency>

然后,在resources文件夹下建立META-INF文件夹并新建app.properties配置文件,在resources还要新建apollo-env.properties配置文件

app.properties内容如下,app.id是在apollo新建一个项目时所指定的id

app.id=a

 apollo-env.properties内容如下,http://127.0.0.1:8080就是config_server_url的地址,也可以说是eureka的地址

local.meta=http://127.0.0.1:8080
dev.meta=http://127.0.0.1:8080
fat.meta=${fat_meta}
uat.meta=${uat_meta}
lpt.meta=${lpt_meta}
pro.meta=${pro_meta}

最后一步,启动类加上apollo的注解

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值