简介

说起分布式肯定要想到分布式配置中心、分布式日志、分布式链路追踪等

在分布式部署中业务往往有很多配置比如: 应用程序在启动和运行时需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如:数据库连接参数、启动参数等,都需要去维护和配置,但不可能一台台服务器登录上去配置
今天我要跟大家分享一下分布式配置中心Apollo:

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

搭建

官方文档中有两种搭建方式一种是下载源代码进行搭建,一种是使用Docker或者K8S进行搭建,今天我们使用Docker来进行搭建,毕竟Docker对于开发者来说更友好一些。

如果已有Mysql服务,推荐已有Mysql服务或者云服务RDS来当数据库使用,毕竟数据无价。

version: "3"
services:apollo-configservice: #Config Service提供配置的读取、推送等功能,服务对象是Apollo客户端image: apolloconfig/apollo-configservice:1.8.1restart: always#container_name: apollo-configservicevolumes:- ./logs/apollo-configservice:/opt/logsports:- "8080:8080"environment:- TZ='Asia/Shanghai'    - SERVER_PORT=8080- EUREKA_INSTANCE_IP_ADDRESS=xxx.xxx.xxx.xxx- EUREKA_INSTANCE_HOME_PAGE_URL=http://xxx.xxx.xxx.xxx:8080- SPRING_DATASOURCE_URL=jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai- SPRING_DATASOURCE_USERNAME=root- SPRING_DATASOURCE_PASSWORD=MysqkPassWord!apollo-adminservice: #Admin Service提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面)image: apolloconfig/apollo-adminservice:1.8.1restart: always#container_name: apollo-adminservicevolumes:- ./logs/apollo-adminservice:/opt/logsports:- "8090:8090"depends_on:- apollo-configserviceenvironment:- TZ='Asia/Shanghai'    - SERVER_PORT=8090- EUREKA_INSTANCE_IP_ADDRESS=xxx.xxx.xxx.xxx- SPRING_DATASOURCE_URL=jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai- SPRING_DATASOURCE_USERNAME=root- SPRING_DATASOURCE_PASSWORD=MysqkPassWord!apollo-portal: #管理界面image: apolloconfig/apollo-portal:1.8.1restart: alwayscontainer_name: apollo-portalvolumes:- ./logs/apollo-portal:/opt/logsports:- "8070:8070"depends_on:- apollo-adminserviceenvironment:- TZ='Asia/Shanghai'    - SERVER_PORT=8070- EUREKA_INSTANCE_IP_ADDRESS=xxx.xxx.xxx.xxx- APOLLO_PORTAL_ENVS=dev- DEV_META=http://xxx.xxx.xxx.xxx:8080- SPRING_DATASOURCE_URL=jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloPortalDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai- SPRING_DATASOURCE_USERNAME=root- SPRING_DATASOURCE_PASSWORD=MysqkPassWord!

从以上docker-compose.yaml中可以看出共包含3个服务,分别为:

  1. Config Service提供配置的读取、推送等功能,服务对象是Apollo客户端

  2. Admin Service提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面)

  3. Portal(管理界面)
    如果想了解它们之间的运行方式推荐查看官方文档

日志挂载到外部./logs目录下

大家可以看到上方并没有给出Mysql的部署,如果需要使用容器部署Mysql可以参照下方docker-compose.yaml

version: '3'services: mysql: # myslq 数据库image: 'mysql/mysql-server'container_name: 'mysql'restart: alwayscommand: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --lower-case-table-names=1environment: #环境变量MYSQL_ROOT_HOST: "%" MYSQL_ROOT_PASSWORD: passwordMYSQL_USER: brookMYSQL_PASSWORD: passwordports:- "3306:3306"

上述mysql的docker-compose.yaml 仅供测试使用

初始化数据库
初始化

[apolloconfigdb.sql](https://github.com/apolloconfig/apollo/blob/master/scripts/docker-quick-start/sql/apolloconfigdb.sql) 和 [apolloportaldb.sql](https://github.com/apolloconfig/apollo/blob/master/scripts/docker-quick-start/sql/apolloportaldb.sql)


数据库初始化后,记得修改apolloconfigdb库中serverconfig表的 eureka.service.url 否则 apollo-adminservice无法注册到eureka

修改后切换到Apollo docker-compose.yaml目录 然后使用

docker-compose up -d #启动文件中的三个服务并且后台运行


查看启动情况

docker-compose ps


访问 http://10.0.0.53:8070/ #Apollo管理端

默认用户名:apollo
默认密码:admin

创建一个测试项目

测试

创建一个.NetCore项目 添加Apollo.net client

添加Apollo

配置Apollo

配置如上

添加测试内容
代码中获取Apollo

启动程序 请求/weatherforecast/apollotest

发现并未获取到apollo中设置的配置

检查Apollo发现配置的值并没有发布

所以大家配置或者修改了Apollo一定记得发布,我们发布后再次刷新浏览器

发现数据已经是新的数据了,我们再次修改一下Apollo的Value

刷新

致此 Apollo已经搭建完毕并且可以正常使用了

代码

示例中的代码在

https://github.com/yuefengkai/Brook.Apollo

欢迎大家Start

注意如果程序启动后无法拉取配置,可以打开Apollo的日志,在控制台中可以看到详细的配置 放到Program.cs Main函数第一行即可!

LogManager.UseConsoleLogging(Com.Ctrip.Framework.Apollo.Logging.LogLevel.Trace);

参考

1.https://github.com/apolloconfig/apollo.net
2.https://github.com/apolloconfig/apollo
3.https://github.com/apolloconfig/apollo/tree/master/scripts/docker-quick-start

 

docker-compose 一键部署分布式配置中心Apollo相关推荐

  1. 微服务 分布式配置中心Apollo详解

    微服务 分布式配置中心Apollo详解 1. 配置中心概述 1.1 配置中心简介 1.2 配置中心特点 1.3 配置中心对比 2. Apollo概述 2.1 Apollo简介 2.2 Apollo特点 ...

  2. 微服务中集成分布式配置中心 Apollo

    背景 随着业务的发展.微服务架构的升级,服务的数量.程序的配置日益增多(各种微服务.各种服务器地址.各种参数),传统的配置文件方式和数据库的方式已无法满足开发人员对配置管理的要求:配置修改后实时生效, ...

  3. 分布式配置中心-Apollo

    1 概览 1.1 什么是配置 应用程序在启动和运行的时候往往需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如:数 据库连接参数.启动参数等. 1.2 什么是配置中心 传统单体应用存在 ...

  4. 【最全最详细】分布式配置中心 Apollo

    1. 基本概念 由于 Apollo 概念比较多,刚开始使用比较复杂,最好先过一遍概念再动手实践尝试使用. 1.背景 随着程序功能的日益复杂,程序的配置日益增多,各种功能的开关.参数的配置.服务器的地址 ...

  5. MySQL NDB Cluster使用docker compose一键部署

    本文主要用来学习MySQL NDB Cluster 解决学习过程中的痛点:需要开启N台VMware虚拟机,电脑不堪重负 使用docker部署,完美解决 本文使用的docker image: mysql ...

  6. Apollo分布式配置中心部署以及使用

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

  7. Apollo(分布式配置中心)核心概念及核心功能介绍

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

  8. Apollo分布式配置中心入门

    一.概述 1.什么是配置 应用程序在启动和运行的时候往往需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如:数据库连接参数.启动参数等. 配置主要有以下几个特点: 配置是独立于程序的只 ...

  9. apollo 配置中心_分布式配置中心之Apollo

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

最新文章

  1. 力扣(LeetCode)刷题,简单题(第21期)
  2. input获取焦点软键盘弹出影响定位
  3. java在线作业系统_在线作业系统论文
  4. Java web 开发填坑记 2 -如何正确的创建一个Java Web 项目
  5. Django与Ajax
  6. list.php tid 1,DedeCMS栏目用目录名个性化伪静态
  7. localstroge与cookie的区别
  8. Tensorflow一些常用基本概念与函数(4)
  9. ubuntu18mysql登录_Ubuntu 18 mysql数据库登陆报错“Access denied for user”
  10. 文件服务器复杂权限,运用技巧:如何提高文件服务器权限?
  11. OpenGL+VS2012环境搭建
  12. 东财mysql作业_20春东财《MySQL数据库系统及应用》单元作业三(答案100分)
  13. 使用python玩转dicom文件——医学图像处理工具pydicom入门教程
  14. LQR 的直观推导及简单应用
  15. 最小二乘法——高斯-马尔可夫定理的证明,无偏估计、求系数的方差
  16. apicloud访问php,支付宝 app应用 受权 php + APICloud
  17. 2018湖南省第14届大学生计算机程序设计竞赛---卖萌表情
  18. vue+js纯手写日历(包含农历,节假日)
  19. 阿里云ECS云服务器配置项目
  20. 什么是软链接, 什么是硬链接

热门文章

  1. 报表系统FineReport通过权限控制数据访问方案
  2. 利用Asp.net中的AJAX制作网页上自动选取开始日期及结束日期的用户自定义控件...
  3. Tcpdump 详解
  4. 打造个性化的Internet Explorer
  5. 用html编写ASCII表,HTML ASCII
  6. day22 Java学习 IO流(序列流)
  7. Dispatch Queue 之 Invoke 当前队列
  8. Java Decompiler(Java反编译工具)
  9. jquery特效(1)—点击展示与隐藏全文
  10. 【BZOJ】【4145】【AMPPZ2014】The Prices