Apollo分布式配置中心(一)

news2024/11/17 3:26:33

目录

什么是配置?

什么是配置中心?

配置中心需要满足条件

什么是Apollo?

Apollo特性

 Apollo执行流程

 Apollo安装

Git地址:

用户手册:

环境准备: 

 使用idea 的git clone 拉取源码

 修改Apollo\scripts\下的build.bat


什么是配置?

         应用程序在启动和运行的时候需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如启动时需要读取服务的端口号、系统在运行过程中需要读取定时策略执行定时任务等.配置文件,环境变量,启动参数,数据库连接参数等。

什么是配置中心?

        传统单体应用存在一些潜在缺陷,如随着规模的扩大,部署效率降低,团队协作效率差,系统可靠性变差,维护困难,新功能上线周期长等,所以迫切需要一种新的架构去解决这些问题,而微服务( microservices )架构正是当下一种流行的解法。但是使用微服务解决问题的同时也会出现一些问题,当把一个单体应用拆分成多个服务时,配置文件也会跟着分散了。如下图:

        配置中心就是一种统一管理各种应用配置的基础服务组件。 它将配置从应用中剥离出来,统一管理,优雅的解决了配置的动态变更、持久化、运维成本等问题。

配置中心需要满足条件

  • 配置项容易读取和修改
  • 添加新配置简单直接
  • 支持对配置的修改的检视,可以查看配置修改的历史记录
  • 不同部署环境支持隔离

什么是Apollo?

        Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用的不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
Apollo包括服务端和客户端两部分 :
        服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。
        Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring、Spring Boot环境也有较好的支持。

Apollo特性

统一管理不同环境、不同集群的配置
  • Apollo提供了一个统一界面集中式管理不同环境(environment)、不同集群(cluster)、不同命名空(namespace)的配置。
  • 同一份代码部署在不同的集群,可以有不同的配置,比如数据库的地址等。
  • 通过命名空间( namespace ) 可以很方便地支持多个不同应用共享同一份配置,同时还允许应用对共享的配置进行覆盖。
配置修改实时生效( 热发布)
  • 用户在Apollo修改完配置并发布后,客户端能实时(1秒)接收到最新的配置,并通知到应用程序。
版本发布管理
  • 所有的配置发布都有版本概念,从而可以方便地支持配置的回滚
灰度发布
  • 支持配置的灰度发布,即可以让一部分服务先使用某个配置,等用一段时间发现这个配置没问题再全部批量更新。
权限管理、发布审核、操作审计
  • 应用和配置的管理都有完善的权限管理机制,对配置的管理还分为了编辑和发布两个环节,从而减少人为的错误。
  • 所有的操作都有审计日志,可以方便地追踪问题。
配置信息监控
  • 在客户端界面上方便地看到配置在被哪些实例使用
提供开放平台API
  • Apollo自身提供了比较完善的统一配置管理界面,支持多环境、多数据中心配置管理、权限、流程治理等特性。
  • Apollo支持应用方通过开放平台API在Apollo进行配置的修改和发布,并目具备完善0的授权和权限控制。

提供丰富的软件开发工具包

  • 提供 Java 和 .Net 的原生 sdk,方便应用集成
  • 支持 Spring 占位符、注释和 Spring 引导配置属性,便于应用程序使用(需要 Spring 3.1.1+)
  • 提供了 Http API,因此非 Java 和 .Net 应用程序可以方便地集成
  • 丰富的第三方SDK也可用,例如Golang,Python,NodeJS,PHP,C等
部署简单
  • 作为基础设施服务,配置中心对可用性的要求非常高,这迫使Apollo尽可能少地依赖外部依赖。
  • 目前,唯一的外部依赖项是MySQL,因此部署非常简单。只要安装了Java和MySQL,Apollo就可以运行。
  • Apollo 还提供了打包脚本,一键即可生成所有需要的安装包,并支持自定义运行时参数

 Apollo执行流程

大致流程就是用户在Apollo配置中心修改配置,应用程序通过Apollo客户端从配置中心拉取配置信息。

本地文件缓存用于Apollo服务宕机后不影响应用程序获取配置。

 Apollo安装

Git地址:

GitHub - apolloconfig/apollo:Apollo 是一个可靠的配置管理系统,适用于微服务配置管理场景。

https://github.com/apolloconfig/apollo.git

用户手册:

Apollo

环境准备: 

java: JDK 1.8.+ 

maven: 3.3.9 

mysql: 版本要求(5.6.5+)

创建数据库:Git拉取下的源码包的以下路径,执行sql(apolloconfigdb.sql与
apolloportaldb.sql)

 验证导入是否成功

  

 使用idea 的git clone 拉取源码

 修改Apollo\scripts\下的build.bat

注:build.sh是linux的

 

 修改内容:

rem apollo config db info 
set apollo_config_db_url="jdbc:mysql://localhost:3306/ApolloConfigDB?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true"
set apollo_config_db_username="root"
set apollo_config_db_password="root"

rem apollo portal db info
set apollo_portal_db_url="jdbc:mysql://localhost:3306/ApolloPortalDB?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true"
set apollo_portal_db_username="root"
set apollo_portal_db_password="root"

 修改好后在以下路径找到build.bat并双击执行,执行成功后再项目的apollo-configservice、apollo-adminservice、apollo-portal包下的target找到已经打好的三个jar包并copy 出来(路径按自己喜好来)

编写启动脚本

@echo off
start cmd /c"java -jar apollo-configservice-2.2.0-SNAPSHOT.jar"
start cmd /c"java -jar apollo-adminservice-2.2.0-SNAPSHOT.jar"
start cmd /c"java -jar apollo-portal-2.2.0-SNAPSHOT.jar"
spause // 防止运行完毕后直接关闭界面

双击 

全部启动成功之后,打开浏览器输入:http://localhost:8070/,看到 Apollo 登录页面说明启动成功

用户名密码: apollo/admin

  打开浏览器输入:http://localhost:8080 ,如果出现eureka 的管理界面,说明服务启动正常。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/682485.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面对AI,要(能)当“杜兰特”吗?

大家好,我是老三,先说一下这篇文章没什么干货,就是一篇随笔。 今天闲来无事,在掘金上刷到一篇文章:GPT-4都来了,我们还需要刷算法题和背八股文吗?:https://juejin.cn/post/72111208…

总结Linux 中实时查看日志的3种方法

一、前言 我们大家应该都知道如何在 Linux 中查看文件,比如可以使用 cat 或者 less 命令。 这对于查看静态文件来说是可以的;日志文件是动态的,其内容随时会变化,要监测日志文件,需要在日志文件内容改变时也能实时看到…

配置右键菜单功能 :一键csv转excel

配置右键菜单功能 :一键csv转excel 无需点开文件,双击即可以生成新的excel文件 步骤: 1、配置Python,安装依赖库 pip install openpyxl pip install pandas2、创建Python文件 csv_to_excel.py # -*- coding:utf-8 -*- impor…

【光伏集群、需求响应】市场模式下光伏用户群的电能共享与需求响应模型(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

团体程序设计天梯赛-练习集L2篇⑤

🚀欢迎来到本文🚀 🍉个人简介:Hello大家好呀,我是陈童学,一个与你一样正在慢慢前行的普通人。 🏀个人主页:陈童学哦CSDN 💡所属专栏:PTA 🎁希望各…

Vue+leaflet笔记之克里金插值

Vueleaflet笔记之克里金插值 文章目录 Vueleaflet笔记之克里金插值开发环境代码简介组件库简介安装依赖库实现思路turf生成随机数据方法一:kriging库插值方法二:kriging-contour插值(矢量)方法三:kriging-contour插值(栅格) 本文介绍了Web端使…

逆向工具(IDA、pyinstxtractor+uncompyle6、jadx等持续更新)

IDA Pro IDA Pro(Interactive Disassembler Professional)交互式反汇编器专业版,CTF、RE、PWN必备。 打开一个可执行文件前,应先用file命令或者DIE等工具,确定是32位还是64位,然后用相应的IDA工具打开可执…

ModaHub魔搭社区:商业向量数据库产品Pincone的特点与应用

目录 Pincone简介 Pincone有以下几个特点 高性能搜索 全功能管理 轻松扩容 Pincone能干什么? 如何接入Pincone Pincone简介 Pincone 可以算是当前最火的商业向量数据库产品了,它最近获得了1亿美元的B轮融资,估值达到7.5 亿美元&#x…

YOLOv8实战火焰和烟雾检测 (视频教程)

课程链接:https://edu.csdn.net/course/detail/38718 YOLOv8 基于先前 YOLO 版本在目标检测任务上的成功,进一步提升性能和灵活性。 本课程将手把手地教大家使用YOLOv8结合可变形卷积(deformable convolution)训练火焰和烟雾数…

TypeScript 【类型推断】与【类型别名】的使用解读

什么是类型推断? 在 TypeScript 中, 如果声明变量时,没有明确的指定类型,那么 TypeScript 会依照类型推论(Type Inference)的规则推断出一个类型。 以下代码虽然没有明确指定类型,但是会在编译的…

APK反编译的那些事

谷歌对dex文件的介绍:常量数组/字符串 DEX_FILE_MAGIC 是字节列表,这类字节必须出现在 .dex 文件的开头,以便系统将其原样识别。该值会特意包含一个换行符("\n" 或 0x0a)和空字节("\0"…

单片机原理及接口技术期末复习知识点

第1章 单片机概述 什么是单片机:单片机是由CPU、存储器、I/O接口及总线集成在一个芯片上。简单了解AT89S51单片机简介。 相当于MCS-51系列中的87C51,AT89S51芯片内4KB的Flash存储取代了87C51片内的4K的EPROM。 第2章 AT89S51单片机的内部结构 MCS-51单…

毫米波雷达系统性能参数分析

毫米波雷达系统性能参数分析 1、距离2、速度3、角度 本文主要分析描述雷达系统的系统性能的一些参数,包括最大作用距离,距离分辨率,最大探测速度……等参数。通过理解这些参数的组成,能够帮助我们设计雷达系统参数。 1、距离 &a…

做UI设计要会什么知识?

做UI设计要会什么知识?在互联网这个行业里,要想做好一件事情,做得好是必须要懂产品,懂用户体验。在很多人眼中,做设计就是打杂,干不了,其实不是这样的。要想成为一名优秀的UI设计师,…

Django高级扩展之系统后台使用celery

如果我们在系统后台想某日某时执行某个任务,或者每隔一段时间执行某个任务,可以使用celery来完成。 目录 安装 安装celery 安装django_celery_beat celery配置 注册应用 celery配置 修改__init__.py 表迁移 执行迁移 控制台运行截图 新增数据…

gunicorn不停服重启更新服务

简介 Gunicorn是基于unix系统,被广泛应用的高性能的Python WSGI HTTP Server。用来解析HTTP请求的网关服务。 它通常是在进行反向代理(如nginx),或者进行负载均衡(如 AWS ELB)和一个web 应用(比…

AI + 算力 = “最强龙头”?

随着人工智能技术的飞速发展,“AI算力”的结合应用已成为科技行业的热点话题,甚至诞生出“AI算力最强龙头“的网络热门等式。该组合不仅可以提高计算效率,还可以为各行各业带来更强大的数据处理和分析能力,从而推动创新和增长。 …

Java项目-SpringBoot+Vue 的学生就业管理信息系统

💕💕作者:程序员徐师兄 个人简介:7 年大厂程序员经历,擅长Java、微信小程序、Python、Android等,大家有这一块的问题可以一起交流! 各类成品java毕设 。javaweb,ssh,ssm&…

小航助学2023年6月GESP_C++三级试卷(含题库答题软件账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSDN博客 单选题2.0分 删除编辑附件图文 答案:D 第1题高级语言编写的程序需要经过以下( )操作,可以生成在…

geo-tool 解析百度经纬出错 {‘status‘: 240, ‘message‘: ‘APP 服务被禁用‘}

geo-tool 解析百度经纬出错 {status: 240, message: APP 服务被禁用} 引子一、查错二、排错三、测试通过参考 作者:高玉涵 时间:2023.6.25 环境:Windows 10 专业版 22H2,Python 3.10.4 第三方包:geo-tool 1.1.2 引…